المغربي صاحب الموقع
عدد المساهمات : 1723 نقاط : 1960048 السٌّمعَة : 27 العمر : 38
بطاقة الشخصية ما رأيك بالمنتدى: 10
| موضوع: الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching الأحد ديسمبر 12, 2010 11:01 am | |
| هذا الدرس من أصعب الدروس ويحتاج إلي تركيز شديد فستجد به العديد من المطلحات الهامة جدا التي يجب فهمها وهذا الموضوع يعتبر مدخل رئيسي إلي ال Pakers و ال Protectors بعض البرامج عند بداية تشغيلها في بداية تشغيلها تقوم بإظهار رسالة تطلب منك التسجيل أو تطلب منك الإنتظار لثوان قبل أن تبدأ في تشغيل البرامج وبعضها يكون الرسالة في نهاية البرنامج عند غلقه هذه الرسائل تسمي nag screens ال nags سواء ظهرت في بداية أو نهاية البرنامج فمن الطبيعي أنها قبل أن تظهر يكون هناك سؤال هل البرنامج مسجل أم لا وبناءا علي الإجابة يتم تحديد ظهور ال nag من عدمه في هذا الدرس سنري كيفية التخلص من ال nags سنقوم في البداية بالدراسة علي برنامج صغير صمم لهذا الغرض Register Me وبعدها سنقوم بالدراسة علي برنامج حقيقي حمل الملف بالمرفقات وبالطبع سنستخدم OllyDBG النسخة الأصلية غير مضاف إليها أي إضافات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] قم بتشغيل Register Me و لا حظ ما يحدث
إضغط ok
قم بغلق البرنامج
إذن هناك nag في بداية التشغيل وفي نهاية التشغيل الآن قم بفتح Register Me بإستخدام OllyDBG وتابع
F8
F8
F8
F8 من الواضح و إذا نظرنا لما بعد القفز سنجد أن هذا الأمر هو الذي سيحدد ظهور الناج سكرين من عدمه و إذا نظرت إلي Z-FLAG ستجد أنه يساوي صفر أي أنه لن يتم القفز وبالتالي ستظهر الناج ونحن نعلم من الدرس الأول كيفية عبور هذه المشكلة بأكثر من طريقة و سنقوم بتغيير ال Z-FLAG من 0 إلي 1 F8 و إستمر حتي تظهر شاشة البرنامج الرئيسية إغقلها و إستمر F8 حتي تظهر ال nag الثانية والآن قم بغلقها و إستمر F8 حتي تظهر كلمة Terminated في OLLY واضح أننا تخلصنا فقط من ال nag الأولي ومازالت الثانية موجودة لكن لا يوجد أمر قفز حتي نقوم بتغييره الأن أعد تشغيل البرنامج مرة أخري في Olly و إستمر F8 حتي أمر القفز JE قبل التعرف علي طرق التخلص من ال nags تابع معي The Portable Executable - PE هو أنواع الملفات التي تستخدم بواسطة نظام الويندوز بإصداراته المختلفة وتشمل .exe, .dll, .ocx, .sys, .scr هذه الملفات تحوي المعلومات اللازمة والتي سيستخدمها نظام التشغيل في إدارة البرنامج بما فيها ال dll و إستدعاءال Windows API من النظام لإستخدامها بواسطة البرنامج بالطبع هذا ببساطة شديدة إقرأمن فضلك التعريف بالكامل بالإنجليزية لتفهم بالضبط هذا المصطلحA PE file consists of a number of headers and sections, which together tell the dynamic linker how to map the file into memory. Because an executable image consists of several different regions which require different memory protections, the start of each section must be aligned to a page boundary. For instance, typically the .text section (which holds program code) is mapped execute/readonly, and the .data section (holding global variables) is mapped no-execute/readwrite. However, to avoid wasting space the different sections are not page aligned on disk. Part of the job of the dynamic linker is to map each section individually and assign the correct permissions to the resulting regions, according to the instructions found in the headers.
One section of note is the import address table (IAT). The IAT is used as a lookup table when the application is calling a Windows API function. Because a compiled PE DLL/EXE cannot know in advance where the other DLLs it depends upon are located in memory, an indirect jump is required. As the dynamic linker loads modules and joins them together, it writes jump instructions into the IAT slots which point to the actual location of the destination function. Though this adds an extra jump over the cost of an intra-module call, the performance hit is mostly negligible and easily worth the flexibility of dynamic libraries. If the compiler knows ahead of time that a call will be inter-module (via a dllimport attribute) it can produce more optimised code that simply results in an indirect call opcode.
An application programming interface (API) is a source code interface that a computer system or program library provides to support requests for services to be made of it by a computer program. An API differs from an application binary interface in that it is specified in terms of a programming language that can be compiled when an application is built, rather than an explicit low level description of how data is laid out in memory.
The software that provides the functionality described by an API is said to be an implementation of the API. The API itself is abstract, in that it specifies an interface and does not get involved with implementation details.
لاحظ أن ال Data Structure للملف PE الموجودة بالديسك هي نفسها التي يتم تحميلها بالذاكرة عند تشغيل البرنامج أي أنك إذا أردت الوصول لعنوان ما ستجده في الملف يالديسك وستجده بالذاكرة مع ملاحظة إختلاف Offset PE Data Structure
ما يهمنا في هذه المرحلة هو التعرف علي شكل المصطلحات و سنري عمليا كل مصطلح خاصة عند التعامل مع Packers & Protectors لا حظ الجدول السابق و الهيكل الذي يتكون منه ال PE ال PE Header موجود في ال Imagebase و الذي هو العنوانن الذي يبدأ فيه البرنامج يالتحميل في الذاكرة
A module is a piece of code+data+resources+other misc stuff that is loaded into memory. The offset that the module is loaded from is called the image base. The module is loaded into memory from the image base until imagebase + module size.
حيث ال PE header = imagebase + 1000 آخر مصظلح هو EP أو Entry Point وهو بتبسيط شديد جدا نقطة بداية البرنامج أي أول نقظة يبدأ البرنامج فيها بالتعامل مع النظام نعود إلي Register Me في حالة Register Me فإن ال PE header = 40000 +1000
PE Header
C0 00 00 00 هي بداية Pe File header وهي نفسها 004000C0 ومهم جدا أن تفهم هذه النقطة وهي أن 004000C0 = C0000000 من فضلك إقرأ هذا المقال [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] RVA :Relative Virtual Address إفترض أن لدينا برنامج يبدأ تحميل عند العنوان 400000 و إذا كانت RVA = 4000 فإن ال EP لهذا البرنامج ستكون عند العنوان 404000
الآن لنذهب إلي العنوان 004000C0 | |
|
المغربي صاحب الموقع
عدد المساهمات : 1723 نقاط : 1960048 السٌّمعَة : 27 العمر : 38
بطاقة الشخصية ما رأيك بالمنتدى: 10
| موضوع: عدنا الأحد ديسمبر 12, 2010 11:03 am | |
| | |
|
matlili2010 نائب مدير
عدد المساهمات : 49 نقاط : 51 السٌّمعَة : 0 العمر : 28
| موضوع: رد: الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching الخميس يونيو 16, 2011 10:48 am | |
| | |
|