![]() |
|
Anti-RCE & Anti-Debugger - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي الأخرى (https://delphi4arab.net/forum/forumdisplay.php?fid=4) +--- قسم : الامن و تحليل التطبيقات البرمجية (https://delphi4arab.net/forum/forumdisplay.php?fid=31) +--- الموضوع : Anti-RCE & Anti-Debugger (/showthread.php?tid=2042) |
Anti-RCE & Anti-Debugger - kachwahed - 26-05-2010 بسم الله الرحمن الرحيم
السلام عليكم ورحمة اللهباختصار لأن الموضوع طويل... بداية هذه بعض الطرق والخدع لاكتشاف المنقح: FindWindow: البحث عن واجهة OllyDbg باستخدام FindWindow PHP كود : function IsOllyDbgRunnig:Boolean;IsDebuggerPresent: التابع IsDebuggerPresent من المكتبة Kernel32 PHP كود : function IsDebuggerPresent: BOOL; stdcall; external 'kernel32.dll'; كود : function IsDebugging: Boolean;
var
DllHnd: HWND;
DebugPresentFunc: function: BOOL; stdcall;
begin
DllHnd := LoadLibrary('kernel32.dll');
if DllHnd <> INVALID_HANDLE_VALUE then begin
DebugPresentFunc := GetProcAddress(DllHnd, 'IsDebuggerPresent');
Result := DebugPresentFunc;
end else Result := False;
end;PHP كود : function CheckRemoteDebuggerPresent(hProcess: HWND; out pbDebuggerPresent: BOOL): BOOL; stdcall; external 'kernel32.dll'; أيضا يمكن استخدام اسم مستعار. ProcessName: فحص اسم الـ Process مثال: PHP كود : usesPHP كود : if GetPidByPName('ollydbg.exe') <> 0 thenPHP كود : //***************************************************PHP كود : //***************************************التوابع السابقة موجهة لاكتشاف المنقح الشهير OllyDbg ويمكن تنفيذها على بقية برامج التنقيح بنفس المبدأ طبعا كل الطرق السابقة يتم تجاوزها دون تعب، بسهولة باستخدام الإضافات (Plugins) الشهيرة ...لكن هناك خدعة صغيرة لم يبرمج لها أي Plugin حتى الآن ![]() قبل أن أطرح الكود، دعونا نجعله في تمرين صغير ![]() المثال مرفق لاكتشاف الخدعة، وهو مشفر بتوابع مكتوبة بدلفي سأرفقها أيضا المطلوب: فك التشفير ثم اكتشاف اسم التابع/النمط المستخدم (المطلوب ليس الكسر، هذا ليس CrackMe) ملاحظة: التشفير المستخدم يتسبب في False Positive لدى بعض المضادات (Kaspersky بالتجربة) التمرين سهل جدا فلا تترددوا بالتوفيق. Anti-RCE & Anti-Debugger - STRELiTZIA - 27-05-2010 السلام عليكم و رحمة الله إقتباس :...لكن هناك خدعة صغيرة لم يبرمج لها أي plugin حتى الآنGetStartupInfoA خدعة معروفة في عالم RCE و لا تعمل على المنقح الخاص بــIDA Pro إقتباس :فك التشفير ثم اكتشاف اسم التابع/النمط المستخدم (المطلوب ليس الكسر، هذا ليس crackme)التشفير يفك نفسه بالتتبع دون وجود عراقيل (AntiXXX) نقطة توقف عند الــ Jmp الأخير و منه F8 نصل الى EP الحقيقي... الدالة المستدعلة مع خوارزمية التحقق:
Anti-RCE & Anti-Debugger - kachwahed - 27-05-2010 وعليكم السلام ورحمة الله أولا: شكرا على المشاركة ثانيا: إقتباس :التمرين سهل جدا فلا تترددواأنت لست معني بالتمرين :laugh: إقتباس :GetStartupInfoA خدعة معروفة في عالم RCEقبل أن أطرح الموضوع جربت على Olly ثم WinDbg ثم IDA ولم يكتشف إلا مع IDA الفكرة تعتمد على فحص بنية STARTUPINFO. المصدر (مترجم): إقتباس :Check STARTUPINFO structural principle: Windows operating system when the explorer.exe process will create STARTUPINFO structure value set to 0, instead of explorer.exe when creating process will ignore the value of this structure, that is, the structure The value is not 0, so OD can use this to determine whether the debugger.GetStartupInfoA للحصول على البنية STARTUPINFO إقتباس :و لا تعمل على المنقح الخاص بــIDA Proلذلك قلت: إقتباس :لاكتشاف المنقح الشهير OllyDbg إقتباس :نقطة توقف عند الــ Jmp الأخير و منه F8 نصل الى EP الحقيقي...كان يمكنك فعل ذلك من خلال Olly أيضا أرفقت المثال، ومثال آخر لـ Magic_h2001 للكشف عن بعض ما يختبئ في Ring0 ![]() شكرا كثيرا :bye1: Anti-RCE & Anti-Debugger - خالد على22 - 07-02-2014 رائع أستاذ كاش مقال غير إعتيادى كهذا لا يصدر إلا من أستاذ بالتوفيق أخى |