تقييم الموضوع :
  • 5 أصوات - بمعدل 1.8
  • 1
  • 2
  • 3
  • 4
  • 5
ما ضرورة oep او original entry point وماهي طرق ايجاده؟
#11
أغلب الحمايات تقوم بمنعك من التعقب عن طريق المنقح.
لذا عليك استخدام بعض ال plugins لإخفاء المنقح .... مثل scyllahide
بالإضافة إلى بعض السكريبتات التي تساعدك في الوصول الى نقطة بداية البرنامج OEP
أعضاء أعجبوا بهذه المشاركة : EAX+4 , mribraqdbra
#12
(22-07-2019, 06:41 PM)[EAX+4] كتب : لي فهتمو من المقالة انه حماية البرامج او ضغطها تعتمد على اضافة طبقة جديدة الى كود البرنامج لمنع التعديل على الكود واكشاف ادوات التنقيح وغيرها وهذه الطبقة تدعى بلودر هي تقوم بفك تشفير الحماية او الضغط اليا ليتم تنفيذ البرنامج يعني الخروج من اللودر هو خروج من كود الحماية الى كود البرنامج يعني مباشرة يخرج الى نقطة الدخول الاصلية هل هذا صحيح

المهندس العكسي  Ange Albertini لدية مقالة جدا رائعة تخص برامج الضغط وبرامج الحماية، كذلك بين الفرق بين الـcompresser ،protecter ،crypter، bundle, virtualiser ، mutater .
 على سبيل المثال
  • برامج الـvirtualiser التي تستخدم الـ virtual machine والتي بدورها نوعان اما Stack او RISC وهي اما تستخدم تعليمات اسمبلي انتل (نفسها التي تخص الجهاز) او تعليمات تم تصميمها خصيصاً لتلك virtual machine من قبل مبرمجي الـvirtualiser .
  •  الـ compresser هي البرامج التي تستخدم خوارزميات ضغط مثل aPLib ،LZMA ،NRV ،FFCE ،lzab ،lznt ،deflate ،LZMAT ،BriefLZ وغيرها.
  • الـ protecter هي البرامج التي تستخدم طرق لحماية البرنامج مثل  anti-debuggers ،anti-emulation ،integrity check ،anti-dump ،DRM ( طرق الـ integrity check  التي تعتمد على الـChecksum/hashes مثل "ROL+XOR ،crc32 ،md5  sha1 ،adler ،md4 ،whirlpool")
  • الـ crypter هي البرامج التي تستخدم خوارزميات تشفير مثل "،add/xor/rol ،RC4 ،PRNG (LCG) ،*Tea ،Blowfish ،DES ،AES ،IDEA ،ElGamal"

كذلك وضع عينات اسمبلي للـEntryPoints التي تخص هذه الحمايات  FSG ،UPX (with LZMA) ،AsPack ،PECompact ،MEW ،Upack بحيث يمكنك مشاهدة الـEntryPoints لبرامج الحماية المختلفة.
وفي نهاية الملف وضع عينات اسمبلي لخوازميات الضغط aPLib  LZMA و CRC32  بحيث يمكنك التعرف عليها عند عمل disassembly لاي برنامج عن طريق ida pro.
https://www.slideshare.net/ange4771/packers-37531121

لقد  قمت  بتحويلها الى PDF ورفعها بالمرفقات

.pdf   Packers - Ange Albertini.pdf (الحجم : 432.41 KB / التحميلات : 59)
سبحان الله وبحمده، سبحان الله العظيم
أعضاء أعجبوا بهذه المشاركة : EAX+4 , mohamad , ADM!RAL
#13
مقالة جيدة شكرا لك
أعضاء أعجبوا بهذه المشاركة :
#14
 gu-sung18  
مقال ممتاز غني بالمعلومات, احسنت
أعضاء أعجبوا بهذه المشاركة :
#15
هل ايجاد الـOEP يعني انه تم ازالة الحماية/التشفير من البرنامج نهائيا؟
بمعنى اخر:
عند ايجاد الـOEP الا نحتاج الى استكمال فك الضغط/التشفير؟

مثلا!:
تم ايجاد الـOEP ولازال البرنامج مشفر/مضغوط ويحتاج الى استكمال فك الضغط او الغاء التشفير؟
اليس هناك شيء مثل هذا...؟

 
إقتباس :اللودر بقوم بارجاع حالة الملف المحمي في الذاكرة...

هل هذا يعني ان جميع البرامج المشفرة/المضغوظة...!
ترجع الى حالتها الاصلية اي غير مشفرة او مضغوطة عند تنفيذها...؟

بدلا من حفر الجبل...!
الى نستطيع الدوران حوله...!
يعني بدلاً من محاولة فك تشفير/الضعط البرنامج الا نستطيع عمل dump له وهو في الذاكرة وانتهى الموضوع...؟

لحظة...! مالمقصود بالذاكرة هنا؟؟؟
أعضاء أعجبوا بهذه المشاركة :
#16
أخي الكريم ... نقطة ال OEP هي نقطة المدخل الأساسية للبرنامج عند بدايته.
البرنامج أو الملف المشفر لا بد أن يحمل في ذاكرة الكمبيوتر ( الرام) عند تشغيله وبالتالي يعود الى حالته الأصلية تقريبا (على حسب نوع الحمايات)
بعض الحمايات تقوم بتغيير صيغة نقطة الدخول الأصلية للبرنامج OEP وبالتالي يتوجب عليك إعادة الكود الى وضعه الأصلي ليعمل البرنامج.

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

الموضوع ليس بهذه السهولة اخي الكريم ... قبل عمل ال dump للبرنامج عليك تحديد نقطة الدخول OEP للبرنامج بالإضافة الى تحديد و إصلاح جدول الدوال والتأكد من صحتها. وإلا فما الفائدة من برنامج لا يعرف من اين يبدأ ال execution  Smile

وشكرا
أعضاء أعجبوا بهذه المشاركة : mribraqdbra
#17
إقتباس :الموضوع ليس بهذه السهولة اخي الكريم ... قبل عمل ال dump للبرنامج عليك تحديد نقطة الدخول OEP للبرنامج بالإضافة الى تحديد و إصلاح جدول الدوال والتأكد من صحتها. وإلا فما الفائدة من برنامج لا يعرف من اين يبدأ ال execution  Smile
 
؟؟؟
 
إقتباس :بعض الحمايات تقوم بتغيير صيغة نقطة الدخول الأصلية للبرنامج OEP وبالتالي يتوجب عليك إعادة الكود الى وضعه الأصلي ليعمل البرنامج.

ممممم...؟؟؟
ماذا تعني باعادة الكود الى وضعه الاصلي...!

هل يعني هذا انه مثلا:
* قمنا بايحاد الـOEP لكن مازال هناك كود مشفر/مضغوط يحتاج الى فك التشفير/الضغط...؟؟؟

* او ان الموضوع كله يعتدم على الحصول على الـOEP...؟
يعني طريق طويل مع عقبات كثيرة نهاية الطريق = الـOEP (يعني برنامج غير مشفر او مضغوط)

ما فهمته التالي:
EP = Entery Point (نقطة بذء تشغيل البرنامج)
وفي حالة وجود حماية يعني ضغط/تشفير هذا يعني انه لا جدوى من الـEP لانه سيكون EP الحماية وليس البرنامج...!

لذالك هناك مصطلح اخر وهو الـOEP
و الـOEP يجب البحث عنه للحصول عليه...!
OEP = Original Entery Point (النقطة الاصلية لبذء تشغيل البرنامج، وتستخدم في حالة وجود حماية...!)
أعضاء أعجبوا بهذه المشاركة :
#18
عندما تجد oep وكان البرنامج يستخدم packer فقط فما عليك الا عمل dump 

ادا كان protector هنا عليك ايجاد oep و اصلاح جداول IAT  من اجل ان يعمل بشكل صحيح وهنا اتكلم عن الحمايات العادية , فيوجد حمايات متل vmprotcet ,
denuvo , تسخدم ما يدعى ب virtual machine , لها تعليماتها الخاصة اي instruction set تخص هده الشركات وتكون معقدة بهدف اعتراض الكراكز وهدا صعب الفك بلا ادوات , والله اعلم
أعضاء أعجبوا بهذه المشاركة : ADM!RAL , mribraqdbra
#19
أخي الكريم ... نقطة البداية الأصلية OEP هي النقطة التي يبدأ عمل البرنامج منها وهنا نقصد البرنامج غير المشفر طبعا.
نقطة البداية EP هي النقطة التي يبدأ منها البرنامج المشفر وهي ليست النقطة الأصلية لدخول البرنامج بإعتبار أنه مشفر.
لذا عند تحميل البرنامج في الذاكرة يقوم اللودر بفك التشفير وإعادة الكود لوضعه الأصلي ... وهنا عليك الوصول الى نقطة البداية الأصلية OEP التي يجب على البرنامج البدء منها بالوضع الطبيعي دون تشفير. كما ذكر الأخ سابقا ... تستطيع حينئذ عمل dump و اصلاح جدول ال IAT

هناك بعض الحمايات التي تقوم بتشويه ال OEP بمعنى انها تقوم بتغيير صيغتها (instructions) وهنا قد تحتاج الى اصلاحها في المنقح ، وأفضل طريقة لفهم ذلك هو ان تجرب ببرنامج غير مشفر ومن ثم قم بتشفيره وشاهد الفرق لتتوضح الصورة.
على ما أذكر ان themida واحدة من هذه الحمايات الشرسة والتي تقوم بهذا ورأيت درسا سابقا لأحد الإخوة وهو يقوم بفك هذه الحماية.
أنا لست خبيرا في مجال فك التشفير ولكن الأخوة هنا اصحاب الخبرة يستطيعون مساعدتك بشكل افضل.
أعضاء أعجبوا بهذه المشاركة : mribraqdbra
#20
السلام عليكم
اخي اولا كلمة EP او OEP ليس بينهم فرق ولا وجود لها كل ما عليك معرفته هو انه اي برنامح يتم تنفيذه داخل المعالج ينفذ بالترتيب تعليمة ثم اللتي تليها واي ملف او برنامج هو عبارة عن list من التعليمات وكل تعليمة تعتمد علي التعليمة اللتي قبلها 
مثلا تعليمة لجمع عددين 
2+1=3 لكي تجمع العددين يجب اولا وضع القيم في المسجلات ثم جمع المسجلات والناتج يضع في المسجل الاول
لذلك سوف تضع العدد الاول 1 في مسجل ولنقل المسجل ecx و العدد 2 في المسجل edx ثم تقول للمعالج اجمع ecx مع edx 
اذا 
mov ecx,1 نفل العدد 1 للمسجل 
mov edx,2 نفل العدد 2 للمسجل 
add ecx,edx جمع المسجلات
الناتج سيوضع في ecx
انت لا تستيع تنفيذ امر add 1,2 لانه اين سيخزن الناتج الي الان هذا كلام اعتقد انك تعلمه
الان يمكن القول ان برنامج جمع عددين يتكون من ثلاث اسطر السابقة
وانت تعلم انه كل تعليمة تعظى عنوان
لكي ينفذ هذا البرنامج بشكل صحيح يجب ان يبدء من السطر الاول اي mov ecx,1 ثم mov edx,2 ثم add ecx,edx فقط اذا نفذتها بهذا الترتيب سيكون المسجل ecx قيمته 3 
المعالج لا يعرف من اين يبدء لذلك انت يجب ان تقول له ابدء من السطر الاول ولذلك تضع القيمة اللتي سوف يبدء منها في PE entry point
يذهب المعالج لهذه القيمة ياخذها و يبدء التنفيذ من عندها 
في برنامجنا البسيط اللذي يجمع عددين سوف تكون قيمة PE entry point هي عنوان امر mov ecx,1 يبدء منها ومن ثم اللتي تليها حتي يصل لامر جمع المسجلات وينفذه لكي تصبح قيمة المسجل ecx تساوي ثلاثه 

تخيل لو وضعنا قيمة PE entry point عنوان السطر الثاني اذا المعالج سوف يقوم بتنفيذ تعليمتان فقط سوف يضع القيمة 2 في المسجل edx ثم يجمع المسجلات دون وضع القيمة 1 في ecx وفي هذه الحالة قيمة ال ecx صفر او اي شيء اخر ولذلك الناتج الله اعلم كم هو حسب القيمة المجهوله في مسجل ecx 
لذلك تنفيذ اي برناج من نقطة غير صحيحة يولد نتائج خاطئة و يعتبر الكود البرمجي لا معنا له دون معرفة من اين يبدا 
اذا برنامج بدون نقطة بداية صحيحة يساوي صف احرف دون معنى

ثانيا
عند تشغيل اي برنامج بعد النقر عليه المعالج لا يتعامل مع البرنامج و هو في الهارديسك السبب انه الهاردسك بطيء جدا بالنسبة لسرعة الرام في نقل البيانات لذلك تاخذ نسخة من برنامج من الهاردسك الي الرام نسخة طبق الاصل ثم يتعامل معها المعالج من الرام

الان حان وقت فهم التشفير
اذا اردنا تشفير برنامج هذا يعني اننا سو نبعثر التعليمات بدلا من انها مرتبة تسلسلي طبعا الاساليب كثيرة وهذا ما يميز نوع حماية عن اخرى
في مثالنا هذا برنامج جمع العددين سوف نبعثر التعليمات  اي سيصبح 

mov edx,2 نفل العدد 2 للمسجل 
add ecx,edx جمع المسجلات
mov ecx,1 نفل العدد 1 للمسجل 

لكن المشكلة انه المعالج لا يفم الا تنفيذ التعليمات بالترتيب لذلك لن تكون النتائج صحيحة بعد البعثرة لانه PE entry point هو عنوان اول تعليمة,  اذا الحل هو كتابة لودر يقوم باعادة ترتيب البيانات بالشكل الصحيح حتي تكون النتائج صحيحة
لكي نفعل ذلك اولا اللودر يكتب او يحقن عند اول تعليمة اي عند عنوان PE entry point لانه المعالج سو يبدء من هنا و يتم نقل برنامجنا المبعثر الي عناوي اخره اثناء بدء اللودر سوف يقوم باعادم ترتيب الاسطر الثلاث الي شكلها الصحيح ول نقل سيرتبها تحت منه اي عند اكتمال اخر تعليمة من اللودر يجب ان تكون الاسطر الثلاث مرتبة صحيحا و الامر التالي بعد اخر تعليمة من اللودر هيا mov ecx,1 وثم الباقي

معني هذا انه لا يوجد شيء اسمه الخروج من اللودر و OEP -- ال OEP اصبحت ماهي الا تعليمة عادية مثل باقي التعليمات
اللودر موجود في الذاكرة وبرنامجك ضمن هذه التعليمات و كلمة OEP تعبير يشير الي اول تعليمة في الكود السليم بعد تصحيحة
هذا كلام مبسط كي نتخيل ما اللذي يحدث 

شكرا لجميع الاخوة واتمني ان اكون اوضحت شيء ما
أعضاء أعجبوا بهذه المشاركة : the9am3 , Cyperior , H@wk0


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم