الفريق العربي للهندسة العكسية

نسخة كاملة : مقترح: تطوير أداة لتسجيل استدعاءات الدوال المهمة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته.
عند كسر برنامج غالبا ما أجد نفسي أتبع أنماطا متقاربة، على سبيل المثال أبحث عن استيراد البرنامج من الرجيستري أو كتابة ملف أو الاتصال بالانترنت أو غيره، وفي أسوأ الأحوال قد أتتبع دالة DispatchMessage (في برامج النوافذ) مع رسالة WM_LBUTTONUP حتي أصل إلى ما قد يساعد.

الأداة التي أقترحها فكرتها بسيطة، تسجل استدعاءات الدوال "المهمة"، و"المهمة" هنا تعني قائمة مسبقة من الدوال يمكن للمستخدم اختيارها (أو إضافة ما يشاء حتى)، وتمكّن من اختيار ال Thread أو تقسهما بناء على ذلك.

قد تكون الأداة على شكل loader و dll يحقن في البرنامج ويتواصل ال dll مع loader عن طريق خادم محلي أو عن طريق قراءة مباشرة من الloader لذاكرة محجوزة من قِبل الdll.

الأداة فكرتها طبيعية وأعتقد من المنطقي وجود مثلها لكني لا أعلم.

لعلها أيضا فرصة طيبة لمن أراد أن يطبق ما تعلمه من برمجة ولمن أراد تجربة بيئة عمل جماعي، وقد تساعد على توضيح بعض المفاهيم المتعلقة بالهندسة العكسية.

Smile
وعليكم السلام 
اعتقد هذه الاضافة قريبة من فكرتك 
https://github.com/ThunderCls/xHotSpots

https://github.com/ThunderCls/MagicPoints
(21-01-2021, 09:36 AM)the9am3 كتب : [ -> ]وعليكم السلام 
اعتقد هذه الاضافة قريبة من فكرتك 
https://github.com/ThunderCls/xHotSpots

https://github.com/ThunderCls/MagicPoints

تبدو إضافة جميلة ومفيدة حقا. هذه الإضافة تتوقف عند الأحداث (events?) لبرامج النوافذ، أليس كذلك ؟

الأداة التي اقترحتها ليس بالضرورة أن تتوقف، بل أن "تسجل" الدوال المناداة بالترتيب (ويمكن تسجبل المكدّس والمسجلات أيضا). الهدف هو معرفة ما يقوم به البرنامج رغبة لاحقا في بناء نموذج مجرد من النوافذ.

على سبيل المثال، لنقل في أحد البرامج بعدما أدخلتَ الرقم التسلسلي حصل التالي
call CreateThread
call InternetConnect
call HttpOpenRequest
...
call WriteFile
....

بالنظر لاستدعاءات هذه الدوال يمكنك مباشرة "تخمين" "نموذج" مجرد من النوافذ لما يقوم به البرنامج، هذا المنطق قد يسهل عملية الكسر.
ألى تقوم نافذة Trace بنفس العمل
(21-01-2021, 02:06 PM)EarthMan123 كتب : [ -> ]ألى تقوم نافذة Trace بنفس العمل

نعم يشبه trace، لكن trace تقوم بأكثر من ذلك بكثير، أليس كذلك ؟ بدل متابعة كل تعليمة ما أودّه فقط هو متابعة مجموعة محددة وصغيرة نسبيا من التعليمات. إضافة إلى أن هذا لن يبطئ من عمل البرنامج كما تفعل trace. هل تستطيع trace فعل هذا؟