PDA

View Full Version : جلوگیری از بسته شدن برنامه



persia_hrn
جمعه 09 دی 1390, 11:23 صبح
سلام دوستان
میخوام بدونم چطور میتونم کاری کنم که برنامم توی Task manager بسته نشه ؟ مثل اکثر برنامه های آنتی ویروس ، فقط زمانی بسته میشن که ویندوز درحال خروج از سیستم باشه .
ممنون .

moein+
جمعه 09 دی 1390, 18:54 عصر
در برنامه های دلفی معمولا یا با بستن فرم اصلی برنامه از طریق کد (Form1.Close) و یا ضربدر فرم اقدام می کنیم و یا با فرمان های دیگری مانند Application.terminate;
حالا برای عملکرد مورد نظر شما کافیه در رویدادی از فرم به نام OnCloseQuery پارامتر CanClose رو مقدار False دهیم حالا با بستن فرم اصلی چه از طریق ضربدر یا کد فرم بسته نمی شود! حالا در همان رویداد OnCloseQuery می توانید فرم و یا فرم ها را برای دیده نشدن Hide کنید و یا هر کار جالب دیگری که در این زمینه مایلید!!! (فقط باید راهی برای ادامه کنترل برنامه قرار دهیم) ، اما دستور خاتمه برنامه همچنان به قوت خود باقیست ....

r00tkit
جمعه 09 دی 1390, 20:53 عصر
این کار فقط برای UI هستش 1001 راه برای kill کردن یه پراسس وجود داره
معمولا انتی ویروس ها با هوک کردن SSDT توابعی مانند ZwTerminateProcess , ... این کار رو انجام می دن

ولی بازم می گم حتی با هوک این تابع باز هم روش های زیادی برای کیل کردن یک پراسس وجود داره

به طور کلی تر هر انتی ویرسی روش خاصی رو به کار می بره و توابه خاصی رو hook می کنه



25 NtClose 0xB2D758B4
31 NtConnectPort 0xB2
35 NtCreateEvent 0xB2
43 NtCreateMutant 0xB2
46 NtCreatePort 0xB2
47 NtCreateProcess 0xB2
48 NtCreateProcessEx
50 NtCreateSection 0xB2
51 NtCreateSemaphore
52 NtCreateSymbolicLinkObje
53 NtCreateThread 0xB2
56 NtCreateWaitablePort
57 NtDebugActiveProcess
63 NtDeleteKey 0xB2D890
65 NtDeleteValueKey
66 NtDeviceIoControlFile
68 NtDuplicateObject
71 NtEnumerateKey 0xB2
73 NtEnumerateValueKey
97 NtLoadDriver 0xB2
98 NtLoadKey 0xB2D89B
99 NtLoadKey2 0xB2D89E
108 NtMapViewOfSection
111 NtNotifyChangeKey
114 NtOpenEvent 0xB2D75E
120 NtOpenMutant 0xB2
122 NtOpenProcess 0xB2
125 NtOpenSection 0xB2
126 NtOpenSemaphore 0xB2
128 NtOpenThread 0xB2
132 NtPlugPlayControl
160 NtQueryKey 0xB2D88E
161 NtQueryMultipleValueKey
163 NtQueryObject 0xB2
167 NtQuerySection 0xB2
177 NtQueryValueKey 0xB2
180 NtQueueApcThread
192 NtRenameKey 0xB2D891
193 NtReplaceKey 0xB2
194 NtReplyPort 0xB2D8F0
195 NtReplyWaitReceivePort
200 NtRequestWaitReplyPort
204 NtRestoreKey 0xB2
206 NtResumeThread 0xB2
207 NtSaveKey 0xB2D893
208 NtSaveKeyEx 0xB2D894
209 NtSaveMergedKeys
210 NtSecureConnectPort
213 NtSetContextThread
230 NtSetInformationToken
240 NtSetSystemInformation
247 NtSetValueKey 0xB2
253 NtSuspendProcess
254 NtSuspendThread 0xB2
255 NtSystemDebugControl
257 NtTerminateProcess
258 NtTerminateThread
267 NtUnmapViewOfSection
277 NtWriteVirtualMemory




این لیست توابعی هستش که bitdefender توی ssdt هوک کرده( هوک های دیگه ای هم توی shadowssdt داره ) ولی بازم با این وجود من می تونم از user mode کیلش کنم :)))

یه مدتی هستش به علت پروژه ای دارم روی همین موضوع کار می کنم اگه فرصت بشه نتایج جالبش رو روی انتی ویروس های مختلف می گم
کسی سوالی داشتم بپرسه
moein+ چیزی که گفتی شانسی برای دفاع از خودش نداره

moein+
جمعه 09 دی 1390, 22:43 عصر
moein+ چیزی که گفتی شانسی برای دفاع از خودش نداره


البته من تصور نمی کردم، جلوگیری از بسته شدن توسط حذف پروسس مورد نظر بوده باشه، این مورد یه مورد امنیتیه و چیزی که من گفتم یه راهکار عادی برای برنامه هایی که نمی خوان تو حالت عادی با بستن پنجره اصلی بسته شن، چیزی شبیه کاری که برنامه های مدیریت دانلود انجام میدن!!

البته اگر منظور، عملکرد موردنظر شماست، شاید بهتر بود عنوان بهتری در نظر گرفته می شد مثل جلوگیری از Kill کردن یک پروسس یا چیزی شبیه این ...

MohsenB
شنبه 10 دی 1390, 00:12 صبح
سلام

اگر در ویندوز ایکس پی به سر میبرید کافیه اسم فایلتونو اسمی مثل : smss و مشابه اون بزارین . البته این روش در ویندوزهای بالاتر کار نخواهد کرد.


موفق باشید

Mask
شنبه 10 دی 1390, 12:55 عصر
با سلام
در خصوص این مورد بنا به نیازی که داشتم و تحقیقاتی که کردم :نتایج رو خدمتتون عرض میکنم.
1- استفاده از Dll Injection که پروسه برنامه شما توسط یک dll به صورت Wide تزریق بشه.
2- اجرای برنامه شما توسط یک سرویس ،تا برنامه تحت پروسه های سیستمی اجرا شود .که فقط به دو شرط برنامتون بسته نشود(یوزر های لیمیت یا سیستمهایی که از برنامه Deep Freeze استفاده میکنند.)
3- طبق گفته دوست عزیز geek1982 (هوک کردن کلیه توابع مربوطه ...)
4- نوشتن یک درایور سطح کرنل
5- تزریق برنامه (Process injection) به پروسه ای مانند WinLogon.
6- البته اگر هدف فقط TaskMgr باشه میتونید . هندل لیستی که اسم پروسه شما در اون هست رو بدست بیارید و پروستون رو از اون مخفی کنید.
7- اجرا شدن برنامه به عنوان سرویس تحت سرویسهای Svichost .
و چندین روش دیگر.
کلیه روشهای موجود نه البته با TaskMgr بلکه با ابزارهای Killer حرفه ای موجود قابل بسته شدن هستند.
موفق باشید.

r00tkit
یک شنبه 11 دی 1390, 19:33 عصر
با سلام
در خصوص این مورد بنا به نیازی که داشتم و تحقیقاتی که کردم :نتایج رو خدمتتون عرض میکنم.
1- استفاده از Dll Injection که پروسه برنامه شما توسط یک dll به صورت Wide تزریق بشه.
2- اجرای برنامه شما توسط یک سرویس ،تا برنامه تحت پروسه های سیستمی اجرا شود .که فقط به دو شرط برنامتون بسته نشود(یوزر های لیمیت یا سیستمهایی که از برنامه Deep Freeze استفاده میکنند.)
3- طبق گفته دوست عزیز geek1982 (هوک کردن کلیه توابع مربوطه ...)
4- نوشتن یک درایور سطح کرنل
5- تزریق برنامه (Process injection) به پروسه ای مانند WinLogon.
6- البته اگر هدف فقط TaskMgr باشه میتونید . هندل لیستی که اسم پروسه شما در اون هست رو بدست بیارید و پروستون رو از اون مخفی کنید.
7- اجرا شدن برنامه به عنوان سرویس تحت سرویسهای Svichost .
و چندین روش دیگر.
کلیه روشهای موجود نه البته با TaskMgr بلکه با ابزارهای Killer حرفه ای موجود قابل بسته شدن هستند.
موفق باشید.


1- با این کار دیگه پراسسی وجود نداره یه dll به همه تزریق شده که صورت مسئله عوض شده با این کار ( هر چند این روش هم امنیت خاصی نداره و به راحتی می شه killاش کرد )
2- این شماره و شماره 7 انگار یکیه و در کل بازم می شه از killاش کرد توی مورد 7 اگه سرویس توی گروه های ماکروسافت باشه با از بردن threadدش می شه کیلش کرد و اگه توی گروه خود تعریف باشه که دیگه کاری نداره


3- هوک کردن توابع رو که من گفتم توی کرنل بود که منظور می شه همون درایور

برای مورد 6 نمی دونم منظورم DKOM بود برای EPROCESS یا هندل لیست های csrss.exe در هر دو مورد این کار یعنی یه Rootkit که کلا برنامه برای یوزرمود قابل دیدن نیست ولی بازم اگه امسش توسط چیزی مثل XueTr بدست امد می شه کیلش کرد


تنها چیزی که می مونه بازی موش وگربه بازی هستش ( یعنی تمام روش ها رو که باهاش پراسس کیل می کنن رو ببینی و جلوش رو بگیری ) همه انتی ویروس ها این کار رو با ssdt ,shadowssdt انجام می دن
البته dr.web تمرکزش به object hooking هستش

r00tkit
یک شنبه 11 دی 1390, 19:44 عصر
سلام

اگر در ویندوز ایکس پی به سر میبرید کافیه اسم فایلتونو اسمی مثل : smss و مشابه اون بزارین . البته این روش در ویندوزهای بالاتر کار نخواهد کرد.


موفق باشید

چرا بای این کار جلوی کیل شدن رو بگیره ?
فکر کنم این پراسس با RtlSetProcessIsCritical مجبور می کنه که کسی کیلش نکنه ولی بازم به اسم ربط نداره

persia_hrn
یک شنبه 11 دی 1390, 19:54 عصر
دوستان عزیز من خودم یه کاری کردم که هیچ کیلری قادر به بستن برنامم نیست و فقط خود برنامه قادره که خودشو ببنده فقط مشکل اینجاس که تو این حالت ویندوز نه ریستارت میشه نه شاتداون نه لاگاف !
این کاری که کردم به هیچ عنوان اجازه بسته شدن برنامه رو نمیده ، حتی از WM_Queryendsession استفاده کردم ولی فقط وقتی جواب میده که پنجره برنامه Minimize نباشه .

r00tkit
یک شنبه 11 دی 1390, 20:55 عصر
دوست عزیز از برنامت یه demo بزار اینجا

( یه برنامه ساده ساده که فقط جلوی بسته شدنش رو بگیره )

تا منم تستش کنم

MohsenB
یک شنبه 11 دی 1390, 21:18 عصر
چرا بای این کار جلوی کیل شدن رو بگیره ?
فکر کنم این پراسس با RtlSetProcessIsCritical مجبور می کنه که کسی کیلش نکنه ولی بازم به اسم ربط نداره

چرا ، تو ویندوز ایکس پی اگه این اسم رو برای فایلتون انتخاب کنید چون یکی از نامهای فایلهای سیستمیه که در حال اجراست اونو نمیبنده .

r00tkit
یک شنبه 11 دی 1390, 22:42 عصر
درسته ، و خیلی احمقانس taskman.exe و taskkill.exe نمی تونن ان رو کیل کنن( این دو تا برنامه ی احمق فقط با اسم کار دارن انگار ) ولی به هر حال به راحتی kill می شه ، با procexp کیلش کردم به راحتی

توی seven درست شده این موضوع

Mask
چهارشنبه 14 دی 1390, 11:15 صبح
البته یه روش دیگه هم وجود داره که کاربرنتونه برنامه شما رو ببنده.(یادم رفته بود)
کریتیکال کردن پروسز برنامه:لبخند:

r00tkit
چهارشنبه 14 دی 1390, 13:09 عصر
البته یه روش دیگه هم وجود داره که کاربرنتونه برنامه شما رو ببنده.(یادم رفته بود)
کریتیکال کردن پروسز برنامه:لبخند:
نمی دونم با کنایه بود این حرفت یا نه
اگه بود : بعضی برنامه ها با این کار کاربر رو محبور می کنن به برنامشون دست نزنه چون اگه بهش چپ نگاه کنه با BSOD طرفه :))
اگه نبود : دو تا پست بالا تر من بهش اشاره کردم ( تکراری ننویس ) :))

Mask
چهارشنبه 14 دی 1390, 13:15 عصر
نمی دونم با کنایه بود این حرفت یا نه
بنده قصد جسارت به هیچکسی به خصوص شما استاد عزیز رو ندارم.
اگه همچین حسی کردید. من از شما عذر میخام.

r00tkit
چهارشنبه 14 دی 1390, 13:42 عصر
بنده قصد جسارت به هیچکسی به خصوص شما استاد عزیز رو ندارم.
اگه همچین حسی کردید. من از شما عذر میخام.

خواهش می کنم دوست من ،
این چه حرفیه من استاد نیستم
امید وارم موفق باشید