الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مبدأ من مبادئ البرمجة العكسية 2 : للمبتدئين

بدأه Z3r0n3 في 26 مايو 2010 · 4 رد · 2,759 مشاهدة · في المواضيع المميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اولا قبل أن تقرأ هذا الدرس قم بقرائة الدرس على الرابط التالي :

/index.php?showtopic=221036&st=0&p=1092210entry1092210

للأننا سنستعمله في آخر خطوة من هذا الدرس

حمل الملف المرفق و شغل البرنامج:

لدينا نافذة تحتوي على قائمة, إضغط على ReverseMe

ماذا حدث؟

لم يحدث شيئ, و ما سنقوم به في هذا الدرس هو إخراج صندوق رسالة عند الضغط على ReverseMe

الدرس سيكون على المراحل التالية:

1/ المرحلة الأولى :

*/ سنتعرف على نوعين من الرسائل التي ترسلها النافذة الى البرنامج

*/ سنرى كيف يقوم البرنامج المرفق بفحص مدخلات النافذة

2/ المرحلة الثانية من الدرس ستكون كالتالي :

*/ تحديد قفزة شرطية مناسبة نقفز بها الى عنوان فارغ إخترناه في البرنامج

*/ نقوم بالبرمجة العكسية للبرنامج و نحفظ التغييرات و نشغل البرنامج

1/ المرحلة الأولى

*/أنواع الرسائل :

WM_DESTROY : هذه الرسالة ترسلها النافذة الى البرنامج لتطلب منه أمر الإقفال عند الضغط على زر قفل

WM_COMMAND : هذه الرسالة ترسلها النافذة الى البرنامج عند الضغط على زر ما

(مثل : ReverseMe )

هناك الكثير من الرسائل التي ترسلها النافذة الى البرنامج, هاتين الرسالتين أكيد ستجدهم في أغلب البرامج

هذه الرسائل تقارن مع متقبل الرسائل إسمه UINT و في ollydbg ستجده دائما [ARG.2]

يعني عندما تراى في olly [ARG.2] إعرف أنه متقبل الرسائل

*/ كيف يقوم البرنامج بفحص المدخلات

افتح البرنامج في ollydbg ستجد أنه يوجد 3 اجرائات, الأول عند العنوان 401000

الثاني في 401031 و مايهمنا هو الثالث في 401118 وهو الذي يهمنا إذهب إليه

شاهد الصورة1:

post-228541-12748921590839_thumb.jpg

ماذا لدينا:

1/ مقارنة [ARG.2] مع الرسالة 2 (2=WM_DESTROY) تتحقق عند الضغط على زر قفل

2/ قفزة شرطية تكون صالحة للقفز الى العنوان 40112A عندما لاتتحقق المقارنة (رقم 1 في الصورة)

3/ أن تحققت المقارنة (رقم 1 في الصورة) ينفذ البرنامج أمر الإقفال ثم يقوم بقفزة غير شرطية الى العنوان 40113F وهي نهاية الإجراء أو نهاية عملية فحص مدخلات النافذة

هذا المبدأ من عملية فحص المدخلات ستجده يتكرر في أغلبية البرامج

2/ المرحلة الثانية

*/ تحديد قفزة مشروطة مناسبة

سنبحث عن قفزة مشروطة و نغيرها الى بداية الكود الخاص بنا

بمأن هذا الإجراء فيه قفزة مشروطة واحدة فإنها هي التي نبحث عنها (رقم 2 في الصورة)

عنوانها : 40111F

ثم نختار بداية مكان فارغ في البرنامج لنحقن فيه الكود الصورة 2:

post-228541-12748921689355_thumb.jpg

أنا سأختار العنوان 40119C

نقوم أولا بتغيير القفزة المشروطة الى عنواننا:

اذهب الى العنوان 40111F , كليك يمين , اختار Assembe , اكتب

Jne 40119c

*/ البرمجة العكسية

فكرة عن الكود الذي سنحقنه:

1/ مقارنة [ARG.2] مع الرسالة 111 (111=WM_COMMAND) تتحقق عند الضغط على زر ما (مثل : ReverseMe )

2/ إن لم تتحقق المقارنة يقفز الى 40112A مثل ماحصل في المقارنة السابقة (قفزة شرطية)

3/ إن تحققت المقارنة يخرج لنا صندوق رسالة ثم يقفز الى 40113F مثل ماحصل في المقارنة السابقة أيضا

ملاحظة : قبل كتابة الكود يجب معرفة عنوان [ARG.2] في الذاكرة لنجري المقارنة

إليكم ماذا سنفعل :

اذهب الى عنوان مقارنة [ARG.2] مع الرسالة 2 (رقم 1 في الصورة1)

الى من ضل الطريق, العنوان هو : 40111F

كليك يمين , إختار Assemble

و انسخ عنوان [ARG.2] في Notepad لنستعمله شاهد الصورة3:

post-228541-1274892177723_thumb.jpg

أنا أعرف أن هناك من لم يعرف إستخراج عنوان [ARG.2] لكن لا مشكلة سوف تجده في الكود الذي سأقدمه لمن يحب الإستهلاك فقط

إذهب الى عنواننا الذي إخترناه و هو : 40119C و اكتب الكود

الكود النهائي بالأسمبلي :

CMP DWORD PTR SS:[EBP+C],111

JNE 40112A

كود الرسالة

Jmp 40113F

كود الرسالة هو تمارين موجه لك و هو يتضمن :

الكتابة في قسم البيانات:

عنوان صندوق الرسالة

محتوى الرسالة

الكتابة في قسم الكود :

تنفيذ دالة الرسالة

هذا التمرين رأيناه في درسي الأول :

إن اجتزت التمارين قم بحفظ التغييرات (رأيناه في الدرس السابق) و شغل البرنامج

أما أنا فقد تحصلت عند الضغط على ReverseMe :

post-228541-12748921891379_thumb.jpg

ماذا عنكم؟

الى هنا ينتهي الدرس

هذا هو ثاني درس لي و يمكن يكون آخر درس اقدمه في هذا المنتدى للأني لم أجد أي تفاعل لللأعضاء في درسي الأول يعني أن اللأعضاء لا يابهون بعالم البرمجة العكسية بتاتا

أنتظر الرد و النقد منكم و الإستفسارات عن هذا الدرس أو سابقه

Z3r0n3-ReverseMe.zip

#2

شكرا على الدرس المفيد

واصل من فظلك

انا اتابعك

ارجو منك وضع البرامج اللازمة للعمل إن كان ممكنا

مع تحياتي

1

1 2 3

VIVA L'ALGERIE

#3
rostom كتب:

شكرا على الدرس المفيد

واصل من فظلك

انا اتابعك

ارجو منك وضع البرامج اللازمة للعمل إن كان ممكنا

مع تحياتي

#4

شكرا على الرد و لقد مواضيع أخرى عن الهندسة العكسية.

بخصوص الأدوات حضرت لكم موضوع بإسم : أدوات الهندسة العكسية

#5

بارك الله فيك .. درس ممتع

في المرفقات محاولتي في الدرس

Z3r0n3-ReverseMe6.rar

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…