منتديات المحمدية
الهندسة العكسية للمبتدئين = الدرس الأول = Reversing for Newbies Pcnet001
منتديات المحمدية
الهندسة العكسية للمبتدئين = الدرس الأول = Reversing for Newbies Pcnet001
منتديات المحمدية
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.



 
الرئيسيةالبوابةالتسجيلأحدث الصوردخول
منتديات المحمدية تبحث عن كل ما هو جديد ومفيد لتعرضة لاعضاء المنتديات الكرام لتعطى فكر جديد لكل المشتركين

 

 الهندسة العكسية للمبتدئين = الدرس الأول = Reversing for Newbies

اذهب الى الأسفل 
كاتب الموضوعرسالة
almohammdih
منتديات المحمدية
منتديات المحمدية
almohammdih


ذكر عدد المساهمات : 922
نقاط : 2354
تاريخ التسجيل : 14/01/2010

الهندسة العكسية للمبتدئين = الدرس الأول = Reversing for Newbies Empty
مُساهمةموضوع: الهندسة العكسية للمبتدئين = الدرس الأول = Reversing for Newbies   الهندسة العكسية للمبتدئين = الدرس الأول = Reversing for Newbies I_icon_minitimeالأحد مارس 14, 2010 6:51 pm

دروس في مباديء الهندسة العكسية
Reverse Engineering


تعلم الهندسة العكسية في البداية لا يحتاج إلا لقدر من المعرفة ليس بكثير
عن جهاز الكمبيوتر بشكل عام ولغات البرمجة سواء عالية أو منخفضة المستوي
خاصة لغة التجميع
Assembly Language والتي هي نهاية أي لغة برمجة .

فحتي
أكون كراكر محترف يجب أن يكون لدي معرفة بمعظم لغات البرمجة بالطبع ليس أن
أكون خبيرا ولكن علي الأقل أكون علي دراية بأساسيات كل لغة .


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

لغة التجميع Assembly Language تصنف علي إنها من اللغات منخفضة المستوي Low-level Languages حيث إنها تتعامل مع مكونات الكمبيوتر المادية مباشرة .

قبل الدخول في الحديث عن لغة التجميع سأورد نبذة عن أنظمة العد وعلاقتها بالكمبيوتر .

جهاز
الكمبيوتر لا يفهم أي رقم أو أي حرف يكتب له لإنه مكون من مجموعة من
الدوائر الكهربية وبالتالي فهو لا يفهم إلا لغة الدوائر الكهربية وهي
حالتين حالة وجود تيار كهربي وحالة عدم وجود تيار كهربي , الحالة الأولي
حالة وجود تيار كهربي تأخذ الرقم (1) وحالة عدم وجود تيار كهربي و تأخذ
الرقم (0) وهو ما يسمي بالنظام الثنائي
Binary وهو اللغة الأم لجهاز الكمبيوتر . إذن فالنظام الثنائي يتكون من رقمين فقط هم الصفر والواحد .

وبعد النظام الثنائي يأتي النظام السداسي العشري Hexadecimal وهو نظام مكون من ستة عشر رمز من 0 إلي 9 ومن A إلي F أي 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F .

بعد ذلك يأتي النظام الثماني Octal وهو يتكون من ثمانية رموز من 0 إلي 7 أي 0,1,2,3,4,5,6,7 .

و أخيرا يأتي النظام العشري Decimal وهو يتكون من عشرة رموز تبدأ بالصفر وتنتهي ب 9 أي 0,1,2,3,4,5,6,7,8,9 وهو النظام المستخدم في الحياة العادية .

و
لم يتم التطرق إلي العمليات الرياضية و عمليات التحويل من نظام إلي آخر
وهي عملية مهمة جدا لكن للتسهيل لن يتم التطرق إليها الآن وبمكن الرجوع
إليها في وقت آخر حيث توجد برامج جاهزة تستطيع القيام بهذه المهمة .


سنعود
إلي النظام الثنائي فكما قلنا هو اللغة الأم لجهاز الكمبيوتر وهذه المرة
سنتحدث عن الوحدات المستخدمة في جهاز الكمبيوتر و سنبدأ بما يسمي البت
Bit وهو أصغر وحدة وهو يساوي إما صفر أو واحد و بعد ذلك يأتي النيبل Nibble وهو عبارة عن 4 بت ثم البايت وهو عبارة عن 8 بت ثم الوورد Word وهو عبارة عن 16 بت ثم الدبل وورد Double Word وهو عبارة عن 32 بت ثم الكيلو بايت وهو عبارة عن 1024 بايت ثم الميجابايت وهو عبارة عن 1,048,578 بايت أي 1024×1024 .

The Registers

هي عبارة عن مسجلات للبيانات موجودة بذاكرة المعالج وهناك أكثر من نوع منها

المسجلات عامة الغرض Purpose Registers General

وهي 8 مسجلات في معالجات 8086 32بت وهي :

EAX: Extended Accumulator Register

EBX: Extended Base Register

ECX: Extended Counter Register

EDX: Extended Data Register

ESI: Extended Source Index

EDI: Extended Destination Index

EBP: Extended Base Pointer

ESP: Extended Stack Pointer

EIP: Extended Instruction Pointer

كل مسجل حجمه 32 بت أي 4 بايت ويمكنه تخزين بيانات من 0 إلي FFFFFFFF و المسجلات الأربعة الأولي تنقسم إلي أجزاء 16 بت و 8 بت كما يوضح الجدول التالي :



لاحظ أن EAX هي مسجل حجمه 32 بت و أن AX تسمي Low Word of EAX و تساوي 16 بت و AL/AH تسمي Low Part و High Part من AX تساوي 8 بت .

وهذه هي تقسيمات المسجلات
Registers حسب الحجم :
Byte-size registers: هي مسجلات حجمها 1 بايت أي 8 بت مثل AH, AL و BH, BL و CH, CL و DH, DL. word-size registers : وهي عبارة عن مسجلات حجمها 1 وورد أي 16 بت أي 2 بايت مثل AX و BX و CX و DX مع ملاحظة ان AX=AH AL وهذا يعني أن أي تغير في AH أو AL يؤدي إلي تغير AX وبالتالي يؤدي إلي تغير EAX . Double word-size registers : وهي مسجلات حجمها 32 بت أي 2 ووردأي 4 بايت مثل EAX و EBX .......


The Flags

هي عبارة عن أماكن في الذاكرة لتخزين البيانات وفي معالجات 32 بت يوجد 32
flag لكن ما يهمنا منها هو ثلاثة فقط وهم :
Z-Flag (Zero Flag): وهي الأكثر إستخداما في عملية الكراكنج وهي إما صفر أو واحد و تستخدم غالبا في أوامر المقارنة و القفز كما سيتم شرحه لاحقا. O-Flag (Overflow Flag): تأخذ 1 إذا كانت النتيجة أكبر من المكان المخصص لحفظها وإلا تأخذ صفر. C-Flag (Carry flag): تأخذ 1 إذا أعطت البت الأخيرة عن اليسار 1 إلى الخارج أو أخذت 1 من الخارج وإلا تأخذ صفر.

Segments and Offsets
Segments هي أماكن في الذاكرة يتم حفظ التعليمات بها وهي تقسم إلي offset حيث يمكن إعتبار أن segment هي صفجة في كتاب و offset هي سطر في هذه الصفحة.

The Stack
هي
أجزاء في الذاكرة و يتم حفظ البيانات والتعليمات بها حتي يتم إستخدامها
لاحقا مع ملاحظة إن آخر ما يتم تخزينه هو أول ما سيتم إستخدامه و يستخدم
الأمر
PUSH لحفظ البيانات و الأمر POP لإخراج البيانات لإستخدامها .

تعليمات و أوامر لغة التجميع الجداول التالية بها معظم أوامر لغة التجميع OPcodesولا تسألني عن ترجمتها بالعربية لإنك لن تجدها بالبرنامج باللغة العربية








[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]




ميزة
مهمة بالنسبة لنا في لغة التجميع وهي عدم وجود طرق كثيرة للوصول إلي الهدف
فنفس الأوامر ستجدها مكررة وبالخبرة ستعلم الجزء المراد من الكود وفي كل
مرة ستتوجه عليه وفي كل مرة ستتوجه إليه مباشرة دون مجهود وستجد أن لغة
التجميع هي من اسهل اللغات في تعلمها و إستخدامها .
هناك ثلاث من أنواع من البرامج تتعامل مع الويندوز النوع الأول يستخدم تقنية تسمي SDI أي Single Document Interface و أقرب مثال علي هذا النوع هو Notepad
فاو نظرت إلي البرنامج ستجده بسيط جدا في تكوينه عبارة عن شريط العنوان
وشريط الأدوات و هذا النوع من البرامج لا يمكنه فتح أكثرمن ملف في نفس
الوقت حيث يجب غلق الملف المفتوح أولا قبل فتح الآخر والمقصود هو فتح
ملفين في نفس فحة البرنامج وليس فتح صفحة أخري للبرنامج .
النوع الثاني يستخدم تقنية تسمي MDI أي Multiple Document Interface
وهي أكثر البرامج تعقيدا مثل الفوتوشوب وبرامج الأوفيس و هذا النوع من
البرامج يحتوي علي كثير من الأدوات ويمكنه أداء العديد من المهام في نفس
الوقت .
النوع الثالث يستخدم تقنية تسمي DPI أي Dialog Based Application وهو أسهل الأنواع في كتابتها و الأسهل في إستخدامها من حيث الأدوات المسنخدمة والواجهة التي يتعامل بها مع المستخدم . لاحظ أن لا علاقة بين هذه الأنواع و نوع لغة البرمجة التي تم برمجة بها أيا كانت C أو VB أو .NET أو Delphi أو أي لغة برمجة أخري . الهدف
من معرفة أنواع البرامج هو أن كل نوع من البرامج له طريقة معينة في هندسته
حيث لا يهمنا في عملية الهندسة العكسية دراسة كود البرنامج لكن ما يهمنا
هو جزء معين من الكود هو الذي يجب أن نركز عليه .



مع تحيات
(مدير المنتدى)
أتمني أن أكون وفقت في توصيل المعلومة

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://almohammdih.yoo7.com
 
الهندسة العكسية للمبتدئين = الدرس الأول = Reversing for Newbies
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» الهندسة العكسية للمبتدئين الدرس الثاني Basic Patching
» الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching
» •-=:[¯*^~ تكنيكات الكونج فو للدفاع عن النفس ~^*¯]:=-•
» دورة أختراق الاجهزه المتكامله
» موضوعك الأول

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات المحمدية  :: منتديات الكمبيوتر والانترنت :: منتدى الهاكر والاختراق :: قسم الهندسة العكسية-
انتقل الى: