PDA

View Full Version : ساختن یک process بصورت ReadOnly



adila1360
پنج شنبه 17 فروردین 1385, 11:28 صبح
در مورد بعضی از برنامه ها (مخصوصا" فایروالها و ضد ویروس ها)، در هنگام بستن process مربوط به آنها در Task Manager پیغام Access is denied داده می شود و برنامه همچنان فعال می ماند.
چگونه می توان چنین برنامه ای نوشت؟

Inprise
پنج شنبه 17 فروردین 1385, 19:36 عصر
Task Manager ویندوز بصورت داخلی لیستی حاوی پروسه های حساس داره و بهت اجازهء بستن اونها رو نمیده .مثلا smss یا lsass ؛ برای بستن این پروسه ها کافیه از ابزار دیگری که بتونه پروسه ای رو ببنده استفاده کنی ، مثلا" Process Explorer . اما پروسه ها دیگری وجود دارند که به دلیلی از خودشون محافظت میکنن . بعضیهاشون هنگام اجرا درایوری رو Load میکنن که فایل exe مورد نظر رو قفل میکنه و امکان دسترسی به اون – چه برای بستن چه برای سایر مقاصد – وجود نداره ، در این حالت باید ابتدا درایور به روشی از حافظه Unload بشه و بعد برنامه بسته بشه ، و اگر خود برنامه متعاقبا" از درایور مراقبت کنه و مثلا" با یک Hook داخلی اجازهء بسته شدنش رو نده کار کمی دشوار میشه . بعضی از برنامه ها خصوصا انتی ویروسها و فایروالها خودشون رو با مجوز System نصب و اجرا میکنن که باعث میشه بصورت پیش فرض حتی مدیر سیستم اجازهء بستن اون پروسه ( در واقع در اختیار گرفتن Handle ای به اون فایل ) رو نداشته باشه ، برای بستن اغلب این برنامه ها ، باید ابتدا به پروسه ای که با حقوق Administrator‌اجرا میشه مجوز SeDebugPrivilege رو اعطا کرد ، و بعد میشه با TerminateProcess یا بهتر از اون ، ExitProcess اون پروسه رو بست ؛ و اگر برنامه مذکور Hook ای روی توابع مذکور نصب کرده باشه و اجازه فراخوانی اونها رو نده ، باید از توابع سطح پائین تر ، مثلا" ZwTerminateProcess استفاده بشه و اگر برنامه تصمیم جدی تری برای حفاظت از خودش داشته باشه و جلوی این فراخوانی رو بگیره ، چاره ای نیست بجز استفاده از درایوری که یک پروسه سطح کاربر رو ببنده ؛ و حتی این روزها فایروالهائی مثل کسپراسکی هوک های کرنل مود نصب میکنن که بسادگی به درایورها اجازهء بستن سرویسهای این نرم افزار رو ندن .




برای تست ، این برنامهء خوبیه :
http://www.diamondcs.com.au/index.php?page=apm-features

از روشهای جالبی هم استفاده میکنه :
http://www.diamondcs.com.au/freeutilities/apt-techniques.php