PDA

View Full Version : حرفه ای: self defence در برنامه های سی شارپ ؟



Direlap
دوشنبه 17 تیر 1392, 14:09 عصر
با سلام

بعضی از برنامه ها نظیر برخی آنتی ویروس ها از امکانی به نام self-defence بهره میبرند که وقتی فعال باشه باعث میشه که

اولا نمیشه سرویس هاشون رو استاپ کرد
دوما نمیشه فایلاشون رو تغییر داد و یا پاک کرد
سوما نمیشه کلیدهای رجیستریشونو تغییر داد و یا پاک کرد

ما چطور میتونیم تو برنامه هامون از هر کدام از این ویژگی ها و یا نظایرشون استفاده کنیم ؟

pcrlth0n
دوشنبه 17 تیر 1392, 14:56 عصر
توی بحث آنتی ویروس ها خیلی روی استواری پروسسهای در حال اجراش و kill نشدنشون کارمیشه,دلیلش هم اینه که یه بد افزار نتونه فرآیندش رو مختل کنه.یک برنامه ی معمولی و غیر سیستمی نیاز به اون سه موردی که گفتید نداره,چونکه برنامه ای که بتونه از خودش دفاع کنه در برابر تغییرات کاربرش,به عنوان یک بدافزار تعریف میشه.
آنتی ویروس ها,از چند روش استفاده میکنند,که دونستشون نیاز به آشنایی علوم دیگه مثل revercing داره,ولی ساده ترین راهی که میتونید ازش استفاده کنید ,ایجاد یک پروسس جداس که صحت برنامتون رو چک کنه.
اگه آشنایی با هوک کردن هم دارید میتونید از این روش هم استفاده کنید.در غیر این صورت همون روش کافی و ساده هستش.

Direlap
دوشنبه 17 تیر 1392, 15:19 عصر
یک برنامه ی معمولی و غیر سیستمی نیاز به اون سه موردی که گفتید نداره

برنامه ای که میخوام بنویسم نیاز به اینا داره تا مثلا کاربر نتونه فایلاشو تغییر بده و برنامه رو پچ کنه.
یا کاربر نتونه کلید رجیستری برنامه رو تغییر بده و از دوره آزمایش برنامه به صورت تریال رو دور بزنه و نامحدود از برنامه استفاده کنه.



برنامه ای که بتونه از خودش دفاع کنه در برابر تغییرات کاربرش,به عنوان یک بدافزار تعریف میشه

اون موقع باید نرم افزارهای امنیتی خودشون بدافزار باشن



ساده ترین راهی که میتونید ازش استفاده کنید ,ایجاد یک پروسس جداس که صحت برنامتون رو چک کنه.

اون موقع کافیه که فقط اونو ببندن و از برنامه استفاده کنن که کار اصولی نیست.



اگه آشنایی با هوک کردن هم دارید میتونید از این روش هم استفاده کنید

یه مثال میتونید بزارید برای رجیستری تا از تغییراتش جلوگیری کنه ؟

Direlap
دوشنبه 17 تیر 1392, 22:58 عصر
دوستان دیگه نظری ندارند ؟

این مسئله مهمی برای برناممه.

pcrlth0n
سه شنبه 18 تیر 1392, 00:31 صبح
متاستفانه توی سی شارپ امکان هوک کردن در سطح کرنل(که نیازمند این نوع هوک هستید) وجود نداره. با زبانهای سی یا اسمیلی ماژولهای مورد نیازتون رو بنویسید و در پروژتون ایمپورت کنید...
برای انجام عملیات هوک در سطح کرنل شما نیاز به دونستن IDT, SSDT و ... کلا مباحثی مثل :Process management , File access, Security, Memory management... دارید.در ضمن باید با نحوه ی نوشتن درایورها هم آشنا باشید.
البته محافظت از برنامه در این سطح تضمینی بر bypass نشدنش نیست,چه بسا روشهایی برای kill کردن یا bypass شدن آنتی ویروسها وجود داره...

پیشنهاد من به شما استفاده از روش های متداول برای محافظت از برنامتون هستش,که میشه مبهم سازی رو جز کارهای اصلی در سی شارپ دونست.
سپس استفاده از روشهای anti reflector , استفاده از پکر و پروتکتورها و ...

موفق باشید

Direlap
سه شنبه 18 تیر 1392, 00:45 صبح
ممنون از توضیحاتتون

از یکی شنیده بودم که اگه بتونی سیستم تبادل پیام ویندوز رو بشناسی و اگه ویندوز پیام مثلا بستن برنامه رو صادر کرد تو میتونی ردش کنی.

تو یکی از این توابع api بود که نمیزاشت برنامه بسته بشه تا زمانی که برنامه خودش خودشو ببنده. این کدشو تو سایت دیده بودم یکی گذاشته بود.

پس با این حساب من هیچ کاری نمیتونم بکنم برای جلوگیری از تغییر کلیدهای رجیستری برنامم ؟(با استفاه از سی شارپ)

pcrlth0n
سه شنبه 18 تیر 1392, 01:01 صبح
سیستم تبادل پیام یا IRPs در سطح کرنل پیاده سازی شده,و درخواستی هستش که میان مد کاربر و مد کرنل ارتباط برقرار میکنه,که باز هم نیاز به موارد بالا پیدا میکنید.
خوب بنظر شما عبور از یک تابع در برنامه بیش از یک jamp ساده هستش؟این روشهارو به سادگی میشه خنثی کرد.

سعی کنید اطلاعات مهم رو در جاهایی مثل رجیستری ثبت نکنید,جونکه به سادگی پیدا میشن و قابل تغییر هستند.