JAAS

البرمجة العكسية xXx الأجهزة الكفية ؟!

3 ردود في هذا الموضوع

السلام عليكم ورحمة الله ,,,

هذا الموضوع عبارة عن مقدمة لفهم أنواع المعالجات , لأن فهم الأنواع المختلفة

من المعالجات تؤهلك لأن تكون محترف في البرمجة العكسية

وتستخدم أدوات المحترفين ,, مثل

http://www.heyrick.co.uk/images/assembler/debgscrn.gif

سنأخذ أمثلة في معالجات ARM , والأنظمة المبنية على هذة المعالجات

مثل نظام وندوز CE للأجهزة الكفية , ونظام Symbian للهواتف المتحركة

هذا هو المعالج :

sa110lart.gif

وفي هذا الموضوع سنقوم بإستخدام برنامج IDA pro , تجدة هنا

http://www.arabteam2000-forum.com/index.php?showtopic=51568

--

والنقطة الثانية : كنت أتمنى وجود برنامج لعرض النتائج , لأن الأغلبية لا يملكون هذة الأنظمة , راجع هذة الرابط

http://www.arabteam2000-forum.com/index.php?showtopic=51804

--

المهم نبدأ في الموضوع , لكي نأخذ فكرة + الأساسيات

نعرف بأن كل معالج لة لغة وأوامر , فما هي أوامر المعالج ARM

أهم الأوامر وأكثرها إستخدام في البرمجة العكسية

MOV : تعليمة النقل المعروفة

CMP : تعلمية المقارنة

BEQ : إقفز إذا كان يساوي , تقابل تعليمة JE

BNE : إقفز إذا كان لا يساوي , تقابل التعليمة JNE

BHI : إقفز إذا كان أكبر , تقابل JG

B : إقفز دائماَ , تقابل JMP

NOP : تعليمة الطمس المعروفة

LDR : تعليمة لتحميل عنوان أو قيمة إلى مسجل

ADD : عملية الجمع

SUB : عملية الطرح

TEQ : عملية إختبار معرفة , وتقابل التعليمة test

BL : إتصال بإجراء أو عملية , وتقابل تعليمة CALL

يكفي أن تعرف هذة الأوامر

بعد ذلك , يجب أن نتعلم بعض الأساسيات عن المعالج ARM

مثل المسجلات , تقسم الذاكرة...( تجد شرح بالأمثلة والصور في هذا الكتاب )

http://www.heyrick.co.uk/assembler/

والآن أمثلة بسيطة لكي نأخذ فكرة عن الموضوع

مثال في أنظمة وندوز CE الخاص بالأجهزة الكفية

هذا المثال عبارة عن تغيير في برنامج مشهور ولكني لا أريد أن أعرض

إسم البرنامج لكي لا نخالف قواعد المنتدى , أهم شيء تعلم الفكرة

لأن الأفكار كلها متشابهة في أغلب البرامج

هذا البرنامج , يطلب إدخال الرقم التسلسلي , إذا كان خطأ يعرض لك رسالة خطأ

بعد إدخال البرنامج المستهدف إلى برنامج الإسمبلي IDA pro

إضغط على نافذة الدوال المستوردة , لتظهر لك دالة المسج , قم بالإنقال إليها لترى

0001678C                 EOR     R3, R2, R1
00016790                 CMP     R3, R0             <- مقارنة مسجلين
00016794                 BEQ      000167E0       <- إقفز إذا كان يساوي إلى عنوان يتجاوز رسالة الخطأ
00016798                 LDR     R0, 00021428
0001679C                 MOV     R1, 9C00
000167A0                 MOV     R3, 64
000167A4                 LDR     R0, [R0]
000167A8                 ADD     R2, SP, 10
000167AC                 ORR     R1, R1, 54  
000167B0                 BL      LoadStringW     <- تحميل محتوى رسالة الخطأ
000167B4                 MOV     R3, 40000
000167B8                 LDR     R2, 00022C74
000167BC                 ORR     R3, R3, 10
000167C0                 ADD     R1, SP, 10
000167C4                 MOV     R0, 0
000167C8                 BL      MessageBoxW  <- الإتصال بدالة المسج وإظهار الخطأ
000167CC                 B       00016850

ولتغيير مجرى البرنامج وتسجيل أي رقم تقوم بإدخالة , غير التالي

00016794                 BEQ      000167E0  <- إقفز إذا كان يساوي
إلى
00016794                 B      000167E0   <- إقفز دائما
أو إلى
00016794                 BNE      000167E0 <- إقفز إذا لم يكن يساوي

وبعد هذا التغيير البسيط , إحفظ البرنامج , لترى النتيجة

--

مثال لنظام Symbian الخاص بالهواتف المتحركة

وهذا المثال على برنامج لأجهزة الجوال نوكيا

عندما تقوم بتشغيل البرنامج على الجوال تظهر لك رسالة

Unregistered .........

أي أن البرنامج غير مسجل وسيتم إنهائة بعد فترة

إنقل البرنامج إلى جهاز الكمبيوتر , وقم بإدخالة إلى برنامج IDA pro

ثم إبحث عن نص الرسالة لتجد النتيجة التالية

10007E9C                 DCB  0x55; " U "       
10007E9D                 DCB    0;  
10007E9E                 DCB 0x6E; " n "
10007E9F                 DCB    0;  
10007EA0                 DCB 0x72;"  r "
10007EA1                 DCB    0;  
10007EA2                 DCB 0x65; " e "
10007EA3                 DCB    0;  
10007EA4                 DCB 0x67; " g "
10007EA5                 DCB    0;  
10007EA6                 DCB 0x69; " i "
10007EA7                 DCB    0;  
10007EA8                 DCB 0x73; " s "
10007EA9                 DCB    0;  
10007EAA                 DCB 0x74;"  t "
10007EAB                 DCB    0;  
10007EAC                 DCB 0x65; " e "
10007EAD                 DCB    0;  
10007EAE                 DCB 0x72;"  r "
10007EAF                 DCB    0;  
10007EB0                 DCB 0x65; " e "
10007EB1                 DCB    0;  
10007EB2                 DCB 0x64; " d "
10007EB3                 DCB    0;  

لاحظ نص الرسالة بترميز اليونيكود

إحفظ عنوان بداية الرسالة وهو العنوان

10007E9C

إبحث عن هذا العنوان في قسم الشفرة

ستجد تعليمة لتحميل النص إلى الذاكرة

1000580C  LDR     R1, 10007E9C  <- لاحظ عنوان رسالة الخطأ

والآن لو إطلعت على الكود الذي يسبق هذة التعليمة

100057F4  BL        1000538C   <- إتصال بأمر للتحقق من تسجيل البرنامج
100057F8  CMP     R0, 0          <- مقارنة نتيجة التحقق من التسجيل
100057FC  BNE     100058B4  <- إقفز إذا كان لايساوي , تلاحظ بأن العنوان يتجاوز تحميل نص الخطأ
10005800  BL        10006168  
10005804  MOV     R4, R0          
10005808  ADD     R0, SP, 20  
1000580C  LDR     R1, 10007E9C  <- تحميل عنوان رسالة الخطأ  , لاحظ العنوان
10005810  BL        10005B48    <- إتصال إلى أوامر إظهار رسالة الخطأ

والمطلوب تغييرة لكي نتجاوز تسجيل البرنامج , غير

100057FC  BNE     100058B4 <- إقفز إذا كان لا يساوي
إلى
100057FC  BEQ     100058B4  <- إقفز إذا كان يساوي

وأخيرا إحفظ الملف , وقم بتشغيلة في الجهاز المحمول لترى النتيجة

--

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

وبالتوفيق ,,,

-

تم تعديل بواسطه jaas
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ملاحظة : بالنسبة لبرنامج IDA pro , فقد وضعت عنوان المشاركة , ولكن النسخة الموجودة في بداية الموضوع تجريبية

والحمد لله فقط قام أخونا chik بإجاد النسخة الكاملة للبرنامج تجدها

http://clabz.com/tools/ida47.rar

--

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لم يعمل معي هذا الرابط

والحمد لله فقط قام أخونا chik بإجاد النسخة الكاملة للبرنامج تجدها

http://clabz.com/tools/ida47.rar

--

بالتوفيق وتحياتي لك

تم تعديل بواسطه Eng_Gaza
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .