جلوگیری از Kill و دیباگ در دات نت؟!
راستش علاقه ای به پست زدن نداشتم چون دوست ندارم پستم اسپم باشه یا سوال تکراری به حساب بیاد ولی خب وقتی دیدیم پیام خصوصی هم نمیتونم بفرستم ...
سوال دقیق من اینه که چطوری میشه تحت زبانهای .Net کاری کرد که برنامه نوشته شده قابل Debug نباشه. همچنین قابل Kill کردن از طریق هر برنامه ای. شبیه به آنتی ویروس Norton 360 که نام پروسسش هم هست ccApp
منظورم این نیست که debugger رو شناسایی کنیم. خب من میام خودم یک دیباگر مینویسم که شناسایی نشه. منظور من اینه که چطور میشه از خوندن اطلاعات در حافظه یا رم برنامه جلوگیری کرد. یعنی نشه با openprocess توی مموری برنامه تغییر داد.
در ضمن اگر در مورد Anti-Debug ها هم توضیح بدید ممنون میشم. جایی خوندم با چند کد اسمبلی به عنوان یک anti-debug میشه همین کاری که میخواسم رو انجام بدم.
ممنون
- سروش
نقل قول: جلوگیری از Kill و دیباگ؟!
يه تكنيكي هست به نام code obfuscate
شايد به كارت بياد
به بخش
External links
در پايان لينك بالا هم نگاهي بنداز
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول:
نوشته شده توسط
ccx70007
ممنون. اره من در این مورد یک سری مقاله خوندم ولی متاسفانه در مورد برنامه های تحت .net زیاد فایده ای نداره چون کرکر میتونه از طریق il des که خود ماکروسافت در اختیارش میزاره از کدمون سر در بیاره و این جالب نیست.
در ضمن کد برای فهم خودمونم سنگین میشه!! explorer خود visual studio هم فکر کنم بعضی توابع نرمافزارمون رو نشون بده (حتی اگر friend باشه) که بازم بدتر!!
به نظر من این روش بهتر به درد زبانهای سنتی تر میخوره تا سری .net!
البته منظور اصلی من هم این نبود. من میخواستم کرکر اصلا نتونه روی مموری برنامه تغییر ایجاد کنه.
در هر حال ممنون. :تشویق:
پیشنهاد دیگه ای نیست!!!؟
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول: جلوگیری از Kill و دیباگ؟!
ممنون. این مقالاتی که گذاشتی برای اینکه کد قابل فهم نباشه خوبه. ولی بزار منظورمو بهتر بگم. به تصاویر زیر دقت کن:
Visual Studio 2008:
http://img2.freeimagehosting.net/uploads/7e8c483da1.jpg
OllyDbg:
http://img2.freeimagehosting.net/uploads/c5b03fd084.jpg
هر دو این نرم افزارها اصلا نیمتونند به پروسس ccApp اتچ بشند. چیز اصلی که من میخوام شبیه اینه.کسی اطلاعاتی داره؟!
ممنون از همه و مخصوصا شما ccx70007.
نقل قول: جلوگیری از Kill و دیباگ؟!
شايد خوب ccapp مياد و نام و عنوان برنامه ها رو چك مي كنه كه اگر اين پروسه در حال باز شدن با برنامه اي باشه كه اسم يا title نرم افزار شامل debugger و ........... باشه جلوگيري كنه
براي اطلاع از نحوه ي كاركرد ccapp يا بايد يه ديباگر نوشت يا اين كه با ديباگر هاي گمنام هم ببينيم ميشه آيا اين پروسه رو باز كرد يا نه؟
راستي با IDA هم نتونستي كاري كني؟
من يه راه ديگه هم به ذهنم ميرسه كه براي ديباگ كردن اين جور موارد بيخيال محيط ويندوز بشي و از يه ديباگر تحت لينوكس استفاده كني.البته مسئله ي شناختن فايل هاي EXE براي ديباگر و محيط لينوكس ميمونه كه اونم قابل حل هستش
آقا بحث بسيار جالبي و شيريني هست....پيگير مورد باش...من هم پيگيري مي كنم و نتيجه را به عرض شما دوستان مي رسونم
نقل قول: جلوگیری از Kill و دیباگ؟!
خوب معلومه دیگه برنامه ران کننده CApp یه دیباگر داخلی داره که Capp رو بعد از اجرا تحت دیباگ خودش درمیاره و دیگه سایر دیباگر ها نمیتونن به اون اتچ کنن
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول:
نوشته شده توسط
ccx70007
براي اطلاع از نحوه ي كاركرد ccapp يا بايد يه ديباگر نوشت يا اين كه با ديباگر هاي گمنام هم ببينيم ميشه آيا اين پروسه رو باز كرد يا نه؟
با هر نوع دیباگری امتحان کنید (چه مشهور و چه گمنام) همین خطا رو میده
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول:
نوشته شده توسط
HadiDelphi
خوب معلومه دیگه برنامه ران کننده CApp یه دیباگر داخلی داره که Capp رو بعد از اجرا تحت دیباگ خودش درمیاره و دیگه سایر دیباگر ها نمیتونن به اون اتچ کنن
این عملیه ولی درست نیست. چون اگر چه با این کار میشه جلوی باز شدن پروسس توسط یک دیباگر دیگه رو گرفت اما نمیشه جلوی kill شدن پروسس رو گرفت (فکر کنم) در حالی که اگر بخوای این پروسس رو kill هم کنی هم نمیتونی. این دو تصویر دیگه رو ببین:
TuneUp Process Manager:
http://img2.freeimagehosting.net/uploads/3d7a331ff7.jpg
Windows Task Manager:
http://img2.freeimagehosting.net/uploads/12a1e287fa.jpg
نقل قول:
شايد خوب ccapp مياد و نام و عنوان برنامه ها رو چك مي كنه كه اگر اين پروسه در حال باز شدن با برنامه اي باشه كه اسم يا title نرم افزار شامل debugger و ........... باشه جلوگيري كنه
براي اطلاع از نحوه ي كاركرد ccapp يا بايد يه ديباگر نوشت يا اين كه با ديباگر هاي گمنام هم ببينيم ميشه آيا اين پروسه رو باز كرد يا نه؟
نه. من خودم سعی کردم یکی از بایت های برنامه رو تغییر بدم (خودم برنامه رو نوشتم) ولی ارور Access Denied میده!!
در ضمن من به یک نکته اشاره نکردم. من برنامه ای که دارم مینویسم یک سرویس هستش و البته برنامه ccapp اگر چه یک سرویس نیست ولی در یوزر System Service اجرا میشه. (البته توسط Explorer.exe).
در هر حال از همتون ممنون. اگر اطلاعات بیشتری بدست آوردید ما رو محروم نکنید. خودم هم دارم جاهای مختلفی رو میگردم.
- سروش
نقل قول: جلوگیری از Kill و دیباگ؟!
اها!! از طریق تغییر privilege ها میشه. دارم سعی میکنم یک برنامه به زبان C# و یا vb بنویسم. اگه تمومش کردم احتمالا سورسش رو براتون میزارم.
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول:
از طریق تغییر privilege ها میشه
يعني مي خواي حق دسترسي رو افزايش بدي؟؟
چگونه؟؟؟
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول:
نوشته شده توسط
ccx70007
يعني مي خواي حق دسترسي رو افزايش بدي؟؟
چگونه؟؟؟
کاهش!! تعیین اینکه هیچ یوزری حق بستن یا تغییر اطلاعات مموری این برنامه رو ندارد!!
نقل قول: جلوگیری از Kill و دیباگ؟!
تغییر privilege به خودی خود هیچ تاثیری در این موضوع نداره، فقط امکان دسترسی برنامه رو به منابع سیستم وسیعتر می کنه.
اگه میخوای جلوی attach شدن یک دیباگر دیگه و یا بستن برنامه رو بگیری، چاره ای جز hook کردن بعضی توابع ویندوز نداری.
تازه با توجه به اینکه میخوای از #c یا vb استفاده کنی، تو ring3 هستی و این خودش یک محدودیت دیگه است.
نقل قول: جلوگیری از Kill و دیباگ؟!
نقل قول:
نوشته شده توسط
B-Vedadian
تغییر privilege به خودی خود هیچ تاثیری در این موضوع نداره، فقط امکان دسترسی برنامه رو به منابع سیستم وسیعتر می کنه.
اگه میخوای جلوی attach شدن یک دیباگر دیگه و یا بستن برنامه رو بگیری، چاره ای جز hook کردن بعضی توابع ویندوز نداری.
تازه با توجه به اینکه میخوای از #c یا vb استفاده کنی، تو ring3 هستی و این خودش یک محدودیت دیگه است.
کاملا نه.
من تحقیقات زیادی کردم و متوجه شدم راههایی برای این کار وجود داره که الان سه تاشون رو یادم میاد!!
1. تغییر privilege ها
2. نوشتن یک درایور
3. hook کردن تابع termanateprocess در ntoskernal.exe
راه اول بهترین راه هستش. البته اشتباه نباید کرد. منظوم از تغییر privilege ها تغییر اونها برای برنامه نیست. منظورم تغییر privilege های کاربر هستش. تعریف اینکه کاربر ادمینستراتور اجازه دیباگ این پروسس رو نداره!! در مورد این راه مقاله هایی خوندم ولی چون اصلا مثالی ندیدم نمیتونم کاری بکنم!! اکثر برنامه های استاندارد از این روش استفاده میکنند!!
راه دوم رو یادمه میگفتند با نوشتن یک دراویر (به علت وجود در رینگ0) میشه جلوی این موضوع رو گرفت. چگونگیش رو نمیدونم ولی بعضی ها گفته بودند اگر یک درایور مجازی بنویسید که برنامه رو از طریق O/I مشغول کنه اون برنامه بسته نمیشه چون ویدوز ابتدا دنبال آزاد کردن منابع است و چون برنامه مشغول میمونه این اتفاق نمیفته!! (البته این مورد فقط در مورد KILL کردن)
3. سومی رو هم که میدونید. البته دیباگ رو نمیدونم ولی برای جلوگیری از KILL شدن برنامه اینکارو میشه انجام داد. کما اینکه آنتی ویروس NEST فکر کنم یا همچین چیزی از این روش استفاده میکنه.
این اطلاعات من بود. MSDN ای ها هم نتونستند بهم جواب بدهند ولی خب من کماکان دارم تحقیق میکنم.
نقل قول: جلوگیری از Kill و دیباگ در دات نت؟!
به نظر شما می شه از طریق group policy دسترسی دیباگ به نرم افزار را محدود کرد؟
کسی راه حلی در این زمینه داره؟