PDA

View Full Version : اجرا کردن یه پروسه ثانوی و ثبت کردن تمام فعالیت های ان



fahimeh1512
سه شنبه 24 دی 1392, 07:46 صبح
سلام من میخوام برنامه ای بنویسم که پروسه ای را به عنوان ورودی گرفته، آن را اجرا کنه و تمام فعالیت های ان از قبیل فعالیت شبکه ای، فعالیت فایلی و فعالیت رجیستری را در دیتابیس sqlite بنویسه
برای شروع یه راهنمایی کلی میخوام که برنامه من برای این که به یه اگزه فرمان اجرا بده باید مثلا دسترسی ادمین یا امتیاز خاصی داشته باشه؟
سوال بعدیمم اینه که چطور میشه همه فعالیت هاشو کنترل کرد
خواهشا یه نفر روشنم کنه ممنون

fahimeh1512
سه شنبه 24 دی 1392, 10:01 صبح
دوستان این توابع چطورن برای استارت زدن اون پروسه؟
shellexecute , createprocess

fahimeh1512
چهارشنبه 25 دی 1392, 07:34 صبح
خانوما اقایون سوال مبهمه یا سخته؟ :ناراحت: خودمم برای این که فعالیت های اون پروسه رو کنترل کنه اصلا نمیدونم باید دنبال چه عباراتی بگردم دنبال هرچی میگردم جواب مورد نظرو پیدانمیکنم

UfnCod3r
چهارشنبه 25 دی 1392, 09:45 صبح
اجرا کردن ی پروسه که راحته ولی اینکه فعالیت هاشو زیر نظر بگیری سخته . با همون هوک کردن باید به نتیجه برسی . شما که خودت خدای هوکی :چشمک:

کامبیز اسدزاده
چهارشنبه 25 دی 1392, 11:41 صبح
تا جایی که من دارم میبینم شما میخوای خروجی ها و رخداد هایی که سیستم عامل (ویندوز) تولید میکنه رو بدست بیاری و روشون اثر بذاری یا یجوری به پروسه های در حال اجرا دستوراتی بدی...
این کار رو شما میتونی با استفاده از API های خاص ویندوز انجام بدی یعنی قبل از اینکه جستجو کنی باید یه جستجوی عمیقی در رابطه با مراحل پروسه در ویندوز تحقیق کنی تا روشن بشی که باید دقیقا روی چی دخالت کنی و روی چه قسمتی از پروسه ها میتونی دسترسی داشته باشی.

fahimeh1512
جمعه 27 دی 1392, 10:23 صبح
اجرا کردن ی پروسه که راحته ولی اینکه فعالیت هاشو زیر نظر بگیری سخته . با همون هوک کردن باید به نتیجه برسی . شما که خودت خدای هوکی :چشمک:
خب میشه کامل تر تو ضیح بدین دنبال هوک چ چیزایی باشم؟ یعنی واسه تک تک اعمالی که انجام میده باید جداگانه ای پی آی هرکدوم و پیداکنم هوکش کنم؟؟؟ میشه بیشتر شفاف سازی کنین؟:خجالت:

fahimeh1512
جمعه 27 دی 1392, 10:29 صبح
تا جایی که من دارم میبینم شما میخوای خروجی ها و رخداد هایی که سیستم عامل (ویندوز) تولید میکنه رو بدست بیاری و روشون اثر بذاری یا یجوری به پروسه های در حال اجرا دستوراتی بدی...
این کار رو شما میتونی با استفاده از API های خاص ویندوز انجام بدی یعنی قبل از اینکه جستجو کنی باید یه جستجوی عمیقی در رابطه با مراحل پروسه در ویندوز تحقیق کنی تا روشن بشی که باید دقیقا روی چی دخالت کنی و روی چه قسمتی از پروسه ها میتونی دسترسی داشته باشی.

نه این سوال به مسائل قبلی که مطرح میکردم ربطی نداره اون پروژه ای که دارم روش کارمیکنم روت کیته ولی این سوالی که اینجا مطرح کردم یه پروژه جداست این فقط میخواد یه برنامه رو که اسمشو از ورودی میگیره تحت نظارت کامل داشته باشه استارت زدنش با اون توابعی که گفتم میشه دیگه نه؟
به نظر شما هم راهش هوکینگه؟ همه توابعی که اون برنامه باهاش کارمیکنه رو باید درنظرداشته باشم؟؟

fahimeh1512
شنبه 28 دی 1392, 14:42 عصر
دوستان من باید دنبال چه عبارات و اصطلاحاتی بگردم؟؟ چی رو سرچ کنم ؟ کسی مثالی ازش نداره که بشه نحوه کارشو بررسی کرد؟

بهروز عباسی
شنبه 28 دی 1392, 15:21 عصر
شما باید از توابع Debugging خود ویندوز استفاده کنی و در واقع باید برای پروسه هدف یه دیباگر بسازی !

Debugging Functions (http://msdn.microsoft.com/en-us/library/windows/desktop/ms679303%28v=vs.85%29.aspx)


توی Codeproject هم مقاله چندتای بود
Writing a basic Windows debugger (http://www.codeproject.com/Articles/43682/Writing-a-basic-Windows-debugger)


برای کنترل رفتاری هم باید همه توابع رو هوک کنی .

یه کم سخته:بامزه:

fahimeh1512
شنبه 28 دی 1392, 23:10 عصر
برای کنترل رفتاری هم باید همه توابع رو هوک کنی .

یه کم سخته:بامزه:
خب این ک بخوام همه توابع یه پروسه رو هوک کنم هم ب این بستگی داره که اون پروسه از چه توابعی دقیقا استفاده میکنه؟ هرفایل اگزه از توابع خاصی استفاده میکنه باتوجه ب اینکه تو این سوال پروسه هدفم از قبل مشخص نیست باید تو خود کد بررسی بشه ک این اگزه از چ توابعی استفاده میکنه اینجوری ک خیلی سخت میششششششه:متعجب:

بهروز عباسی
شنبه 28 دی 1392, 23:35 عصر
خب این ک بخوام همه توابع یه پروسه رو هوک کنم هم ب این بستگی داره که اون پروسه از چه توابعی دقیقا استفاده میکنه؟ هرفایل اگزه از توابع خاصی استفاده میکنه باتوجه ب اینکه تو این سوال پروسه هدفم از قبل مشخص نیست باید تو خود کد بررسی بشه ک این اگزه از چ توابعی استفاده میکنه اینجوری ک خیلی سخت میششششششه:متعجب:
گفتم که سخته :شیطان:

تمام توابع مورد استفاده در Import Table قسمت PE فایل های اجرایی وبندوز لیست شده، به سرط این که برنامه نویس از LoadLib برای استفاده دینامیک از توابع API استفاده نکرده باشه.
ولی خب شما باید تمام call ها رو چک کنید و اگه توابع API رو صدا میزدن یه کاریش بکنید!

بهروز عباسی
شنبه 28 دی 1392, 23:36 عصر
Procmon و SpyStudio دو نمونه خوب برای این کارهستن بررسیشون کن

چرا قصد داری چنین برنامه ای رو بنویسی ؟

Felony
یک شنبه 29 دی 1392, 07:06 صبح
نیازی به هوک نیست ، همون نوشتن دیباگر کافی هست .

fahimeh1512
یک شنبه 29 دی 1392, 10:00 صبح
[QUOTE=[Procmon و SpyStudio دو نمونه خوب برای این کارهستن بررسیشون کن

چرا قصد داری چنین برنامه ای رو بنویسی ؟[/QUOTE]

این پروژه مال کس دیگه ایه سوالو بهم دادن گفتن هزینه ش رو هم میدن دارم بررسی میکنم ببینم از پسش برمیام یا نه
الان چون سرم خیلی شلوغه میترسم گردن بگیرم واسه همین اینجا هی میپرسم
ولی با توضیحایی ک اینجا دادین به نظرم خیلی جالبه اگرم برای اون طرف انجام ندم شاید خودم بعدا روش کارکنم به نظرم ارزش کارداره
راستی ب نظر شما هزینه چنین پروژه ای چقد میتونه باشه؟:کف:
ضمنا لینک مقاله کدپروجکت که دادین خیلی روشنم کرد من هیچ اطلاعی تو این زمینه نداشتم ممنون

fahimeh1512
یک شنبه 29 دی 1392, 10:07 صبح
نیازی به هوک نیست ، همون نوشتن دیباگر کافی هست .

اینجور که دوستان میگن باید همه ای پی آی هایی که استفاده میکنه رو هوک کرد
شما نظرتون اینه که بدون هوک میشه؟؟ خب پس چجوری میشه کنترلش کرد؟

Felony
یک شنبه 29 دی 1392, 17:44 عصر
اینجور که دوستان میگن باید همه ای پی آی هایی که استفاده میکنه رو هوک کرد
شما نظرتون اینه که بدون هوک میشه؟؟ خب پس چجوری میشه کنترلش کرد؟
منم گفتم دوستان اشتباه میکنن ،همون دیباگر کافی هست ، در ضمن نگفتی میخوای کنترلش کنی ، گفتی میخوای لاگ ثبت کنی ، پس دیباگر بنویس ، چجوریش رو اگر قراره من بگم شما چی کار انجام میدید ؟

بهروز عباسی
یک شنبه 29 دی 1392, 22:07 عصر
اینجور که دوستان میگن باید همه ای پی آی هایی که استفاده میکنه رو هوک کرد
شما نظرتون اینه که بدون هوک میشه؟؟ خب پس چجوری میشه کنترلش کرد؟
همونطور که استاد گرامی Felony اشاره کردن با توجه به این که شما قصد کنترل رو ندارید همون دیباگ کافیه.


منم گفتم دوستان اشتباه میکنن ،همون دیباگر کافی هست
:لبخندساده:
به این قسمتش توجه نکرده بودم

نگفتی میخوای کنترلش کنی


موفق باشید

r00tkit
سه شنبه 01 بهمن 1392, 20:00 عصر
همه جواب ها اشتباه هستش
دیباگیر چه ربطی داره ؟
استاندارد ترین راه نوشتن یه درایور هستش برای شبکه :wfp , tdi, ndis
برای رجیستری : registry callback
برای مانیتور فایل : minifilter یا filter driver
برای پراسس هم : load image notify routine , create process notify routine

برای هر کدوم هم کلی سورس و مثال هستش

دقیقا همون Procmon که اشاره شد از همین چیزا استفاده می کنه

بهروز عباسی
سه شنبه 01 بهمن 1392, 20:05 عصر
همه جواب ها اشتباه هستش
دیباگیر چه ربطی داره ؟
استاندارد ترین راه نوشتن یه درایور هستش برای شبکه :wfp , tdi, ndis
برای رجیستری : registry callback
برای مانیتور فایل : minifilter یا filter driver
برای پراسس هم : load image notify routine , create process notify routine

برای هر کدوم هم کلی سورس و مثال هستش

دقیقا همون Procmon که اشاره شد از همین چیزا استفاده می کنه
ممنون بابت پاسختون

برای لاگ کردن توابع API ای فراخوانی شده چی ؟

fahimeh1512
سه شنبه 01 بهمن 1392, 20:35 عصر
همه جواب ها اشتباه هستش
دیباگیر چه ربطی داره ؟
استاندارد ترین راه نوشتن یه درایور هستش برای شبکه :wfp , tdi, ndis
برای رجیستری : registry callback
برای مانیتور فایل : minifilter یا filter driver
برای پراسس هم : load image notify routine , create process notify routine

برای هر کدوم هم کلی سورس و مثال هستش

دقیقا همون Procmon که اشاره شد از همین چیزا استفاده می کنه

به نظرت کسی که بیس برنامه نویسیش قوی باشه (فکر کنم قبلا بهت گفته بودم دارم روت کیت یوزرمد مینویسم) بخواد وارد کرنل مد بشه درایورنویسی رو تو چه مدت میتونه یادبگیره؟
سوال اقای عباسی رو هم بی زحمت جواب بده سوال منم هست

بهروز عباسی
سه شنبه 01 بهمن 1392, 20:50 عصر
به نظرت کسی که بیس برنامه نویسیش قوی باشه (فکر کنم قبلا بهت گفته بودم دارم روت کیت یوزرمد مینویسم) بخواد وارد کرنل مد بشه درایورنویسی رو تو چه مدت میتونه یادبگیره؟
سوال اقای عباسی رو هم بی زحمت جواب بده سوال منم هست
مواردی که R00tkit بهشون اشاره کرد بدون شک بهترین روش ها هستند
استاندارد ترین راه نوشتن یه درایور هستش برای شبکه :wfp , tdi, ndis

برای رجیستری : registry callback
برای مانیتور فایل : minifilter یا filter driver
برای پراسس هم : load image notify routine , create process notify routine

اما توی یوزر مد هم دوتای اولی رو -تقریباً-میشه با این توابع اماده کرد (نمونه دلفی هست:لبخندساده:)
RegNotifyChangeKeyValue function (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724892%28v=vs.85%29.aspx)


SHChangeNotify function (http://msdn.microsoft.com/en-us/library/windows/desktop/bb762118%28v=vs.85%29.aspx)

اولی برای رجیستری و دومی برای فایل ها

ولی برای لاگ کردن توابع API فکر نکنم غیر دیباگ کردن راهی باشه:متفکر:

r00tkit
سه شنبه 01 بهمن 1392, 21:05 عصر
به نظرت کسی که بیس برنامه نویسیش قوی باشه (فکر کنم قبلا بهت گفته بودم دارم روت کیت یوزرمد مینویسم) بخواد وارد کرنل مد بشه درایورنویسی رو تو چه مدت میتونه یادبگیره؟
سوال اقای عباسی رو هم بی زحمت جواب بده سوال منم هست

جواب طولانی که نوشتم به علت قفل شدن تاپیک موقع submit حذف شد

r00tkit
سه شنبه 01 بهمن 1392, 21:15 عصر
با دیباگر چطور می خوای API رو مانیتور کنی ؟ در نهایت باید هوک بزنی دیگه ؟

اکثر توابع رو می شه با کالبک هایی که گفتم می شه گرفت واسه بقیه رو هم می تونی معادل های کرنلی رو هوک کنی

بهروز عباسی
سه شنبه 01 بهمن 1392, 21:30 عصر
با دیباگر چطور می خوای API رو مانیتور کنی ؟ در نهایت باید هوک بزنی دیگه ؟

خب همونطور که می دونید انواع مختلفی از هوک هست یکیش حالیتیه که توش از تزریق کد و تغییر مسیر فراخوانی تابع مورد به تابعی که خودمون طراحی کردیم.

خب ما برای این که بتونیم محل فراخوانی توابع API رو به دست بیاریم باید از دیباگر کمک کنیم! و البته به احتمال زیاد یه Dis Asm تا تمام call هایا jmp ها رو پیدا کنیم و آدرسشون رو با ادرس توابع Import شده مطابقط بدیم اگه یکی بود یکی BK بزاریم و موقعی که روند اجرا بهش رسید به برنامه اصلی اطلاع بده یا به یه تابع دوم که خودمون طراحی کردیم و به برنامه تزریق کردیم ری دایرکت کنیم و از طریق اون فراخوانی شدن تابع API رو به برنامه اصلی اطلاع بدیم

این سناریوی مورد نظر منه

بهروز عباسی
سه شنبه 01 بهمن 1392, 21:37 عصر
بابت قفل شدن موقت تاپیک عذر خواهی می کنم


The Debugging Tools for Windows (http://www.microsoft.com/whdc/devtools/debugging/default.mspx) package includes a debugger extension called logexts.dll (http://msdn.microsoft.com/en-us/library/cc266315.aspx) which can log Win32 API function calls. It also has a separate front-end program called logger.exe (http://msdn.microsoft.com/en-us/library/cc266316.aspx) for when you don't want to attach the debugger.

R00tkit هم این لینک رو ارائه دادن
Using the Debugger and Logexts.dll (http://msdn.microsoft.com/en-us/library/windows/hardware/ff560170%28v=vs.85%29.aspx)


!logexts.logd (http://msdn.microsoft.com/en-us/library/windows/hardware/ff564001%28v=vs.85%29.aspx) .
Disables logging. This will cause all API hooks to be removed in an effort to allow the program to run freely. COM hooks are not removed because they cannot be re-enabled at will
کمی مطالعه مشکل رو حل میکنه:لبخندساده: