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

منتدى اون لاين العربي

اهلا وسهلا بيك اخى زائر
 
الرئيسيةالرئيسية  البوابةالبوابة  التسجيلالتسجيل  دخولدخول  

 

  الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching

اذهب الى الأسفل 
كاتب الموضوعرسالة
المغربي
صاحب الموقع
صاحب الموقع
المغربي

ذكر عدد المساهمات : 1723
نقاط : 1960048
السٌّمعَة : 27
العمر : 34

بطاقة الشخصية
ما رأيك بالمنتدى ما رأيك بالمنتدى: 10

 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Empty
مُساهمةموضوع: الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching    الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Emptyالأحد ديسمبر 12, 2010 11:01 am

هذا الدرس من أصعب الدروس ويحتاج إلي تركيز شديد فستجد به العديد من
المطلحات الهامة جدا التي يجب فهمها وهذا الموضوع يعتبر مدخل رئيسي إلي ال
Pakers و ال Protectors


بعض البرامج عند بداية تشغيلها في بداية تشغيلها تقوم بإظهار رسالة تطلب
منك التسجيل أو تطلب منك الإنتظار لثوان قبل أن تبدأ في تشغيل البرامج
وبعضها يكون الرسالة في نهاية البرنامج عند غلقه هذه الرسائل تسمي nag
screens


ال nags سواء ظهرت في بداية أو نهاية البرنامج فمن الطبيعي أنها قبل أن
تظهر يكون هناك سؤال هل البرنامج مسجل أم لا وبناءا علي الإجابة يتم تحديد
ظهور ال nag من عدمه



في هذا الدرس سنري كيفية التخلص من ال nags


سنقوم في البداية بالدراسة علي برنامج صغير صمم لهذا الغرض Register Me


وبعدها سنقوم بالدراسة علي برنامج حقيقي


حمل الملف بالمرفقات



وبالطبع سنستخدم OllyDBG النسخة الأصلية غير مضاف إليها أي إضافات


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


قم بتشغيل Register Me و لا حظ ما يحدث



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 36854634do0



إضغط ok



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 94743174ap1



قم بغلق البرنامج



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 81991002jq4



إذن هناك nag في بداية التشغيل وفي نهاية التشغيل



الآن قم بفتح Register Me بإستخدام OllyDBG وتابع



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 51024881jc1




F8




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 73154122qx4


 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 60401016ig1




F8




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 54219209rr2




F8




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 23560942of5




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



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 61951210yq7



ما يهمنا في هذه المرحلة هو التعرف علي شكل المصطلحات و سنري عمليا كل مصطلح خاصة عند التعامل مع 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



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 73562795ko3





 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 79954443ve7




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 29265642ju8




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 68353668lv8





 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 78929060te3





PE Header




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 32058507vz4




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 82218285we3



C0 00 00 00 هي بداية Pe File header وهي نفسها 004000C0



ومهم جدا أن تفهم هذه النقطة وهي أن 004000C0 = C0000000


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



RVA :Relative Virtual Address


إفترض أن لدينا برنامج يبدأ تحميل عند العنوان 400000 و إذا كانت RVA = 4000 فإن ال EP لهذا البرنامج ستكون عند العنوان 404000


 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 42203519wy9




الآن لنذهب إلي العنوان 004000C0
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://enligne.arabepro.com
المغربي
صاحب الموقع
صاحب الموقع
المغربي

ذكر عدد المساهمات : 1723
نقاط : 1960048
السٌّمعَة : 27
العمر : 34

بطاقة الشخصية
ما رأيك بالمنتدى ما رأيك بالمنتدى: 10

 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Empty
مُساهمةموضوع: عدنا    الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Emptyالأحد ديسمبر 12, 2010 11:03 am

رة أخري نعود إلي Memory Map عن
طريق الضغط علي زر M بأعلي الشاشة و لعدها نضغط علي Pe header لتظهر شاشة
DUMB وبعدها ننزل إلي العنوان 004000C0


ستجد أن Olly يشرح كل معظم ما تم ذكره ببساطة شديدة



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 10289994fp2



إذن عند العنوان 4000E8 يبدأ البرنامج ولاحظ إنه عند تخطي ال nag الأولي سنكون عند العنوان 00401024


إدن المطلوب هو إجراء التعديلات الآتية


 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 74775327fk0



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 26774755km2




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 66963440dd9



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 88615745vc2



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 81314970ke8



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 70272106ag5



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 10wl6




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 12uf3




السؤال الآن هو لماذا قمنا بتغيير 00 00 10 00 إلي 00 00 10 24


لاحظ أنه بدون endians سنقرأ بالعكس أي


00 10 00 00 إلي 24 10 00 00



إذن RVA = 1024


ولاحظ أن Imgaebase =0040000


وكما تم شرحه بأعلي فإن VA = 1024+40000


تساوي 401024


وستصبح هي EB أي أننا قمنا بتعديل EB حتي تصبح عند 40124 وعندحفظ الملف
وتشغيله من جديد ستجد أن نقطة البداية أصبحت 40124 و أن كل الكود الذي
يؤدي إل ال NAG تم حذفه والتخلص منه


جرب الملف الجديد الذي قمنا بحفظه في Olly أو عن طريق الضغط عليه مرتين ولاحظ ما يحدث


شتجد أننا تخلصنا ببساطة من NAG البداية ولكن مازالت ال NAG في النهاية
موجودة ولكن هذه المرة سكون المهمة أسهل بكثير إنظر فقط إلي الكود



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 94301393ps8




إذن ببساط شديدة فإن بعد التعديل البرنامج يعمل بكفاءة و بدون Nag البدابة
لكن مازالت هناك nag عند غلق البرنامج لكن بما أن الكود الذي يظهر ال nag
موجود بمفرده فيمكن التخلص منه عن طريق ال nop أ ي no


operation



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 71472301xh6




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 14709549aw0



 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 43392188rm7




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 23166676hq8




 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching 76758596mv5




الآن قم بحفظ الملف الجديد بعد التعديل ولتسميهRegisterMe2 و قم بتجربته ستج أننا تخلصنا من كل ال nags



أعلم أن الدرس صعب إلي حد ما لكن بعد ذلك ستعتاد عليها بمجرد النظر إلي كود البرنامج
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://enligne.arabepro.com
matlili2010
نائب مدير
نائب مدير
matlili2010

عدد المساهمات : 49
نقاط : 51
السٌّمعَة : 0
العمر : 24

 الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Empty
مُساهمةموضوع: رد: الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching    الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Emptyالخميس يونيو 16, 2011 10:48 am

تسلم ايدك على مجهوداتك
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

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