منتديات المحمدية
الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Pcnet001
منتديات المحمدية
الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Pcnet001
منتديات المحمدية
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.



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

 

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

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


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

الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Empty
مُساهمةموضوع: الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching   الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching I_icon_minitimeالأحد مارس 14, 2010 7:07 pm




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




الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://almohammdih.yoo7.com
almohammdih
منتديات المحمدية
منتديات المحمدية
almohammdih


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

الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching Empty
مُساهمةموضوع: رد: الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching   الهندسة العكسية للمبتدئين الدرس الثالث Nag Removal +Aesthetic Patching I_icon_minitimeالأحد مارس 14, 2010 7:09 pm

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


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




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




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


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


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




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






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




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




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




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




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






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






السؤال الآن هو لماذا قمنا بتغيير 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 البدابة
لكن مازالت هناك nag عند غلق البرنامج لكن بما أن الكود الذي يظهر ال nag
موجود بمفرده فيمكن التخلص منه عن طريق ال nop أ ي no


operation




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






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




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






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






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






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




أعلم أن الدرس صعب إلي حد ما لكن بعد ذلك ستعتاد عليها بمجرد النظر إلي كود البرنامج

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

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