الفريق العربي للهندسة العكسية
inline patching - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html)
+--- قسم : الأسئلة والإستفسارات، حلول المشاكل و تبادل الخبرات - Expert Exchange Newbie Questions Answers (https://www.at4re.net/f/forum-36.html)
+--- الموضوع : inline patching (/thread-1543.html)

الصفحات: 1 2


inline patching - مختارالشاعر - 08-04-2020

السلام عليكم 

لماذا عندما يتم التعديل على برنامج محمى لا يعمل بعد التعديل بينما عند عمل inline patching يعمل؟؟ Undecided Undecided

----------

ولماذا عند عمل inline patching البرنامج يقرأ الــ inline patching ولا يقرأ التعليمه الاساسيه فى البرنامج
بمعنى لماذ لا يحصل تداخل بما ان التعليمه الاساسيه ما زالت موجود ولم تلغى..؟؟ question question

ارجو ألا اكون ازعجتكم بكثرة الاسئله.

وشكرا لكم....


RE: inline patching - Cyperior - 08-04-2020

وعليكم السلام ورحمة الله وبركاته
ليعمل البرنامج المحمي بعد التعديل عليه فيجب عليك التعديل على دوال التحقق الموجودة فيه بأنواعها ( CRC الملف, والذاكرة وغيرها ) 

وذلك هو عمل ال Inline Patching.

عند عمل Inline Patching فنحن نقوم بالتعديل على البرنامج نفسه من خلال عمل تجويف للأكواد ( Code Caving ) مما يعني التعديل على الكود الأصلي ولكن عدم التخلي عنه باستخدامه في الكود المجوف.

أما إن كنت تعني عمل لودر فذاك يحتاج إلى الإنتباه فقط لتحقق الذاكرة.

هذا والله أعلم.


RE: inline patching - mohamad - 08-04-2020

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


RE: inline patching - M!X0R - 08-04-2020

القاعدة: للتعديل على ملف مضغوط او محمي يجب فك الضغط او الحماية أولا بعد ذلك عدل ما شئت ان كان لا يوجد تحقق CRC
أما إذا كان يوجد تحقق يجب عليك تجاوزه أولا...بعد ذلك عدل كما تشاء.

Inline Patching هي عملية حقن الكود بدون فك الضغط او الحماية و يتم بعدة طرق أشهرها اللودر، المكتبات التي يحملها البرنامج بالذاكرة أثناء الإقلاع مثل مكتبات DLL أو عن طريق Hook او Direct Inline الذي يتم على الملف المستهدف نفسه

هناك دروس و بعض التحديات مع الحلول تطرقت لهاته النقاط شاهد و ستفهم أكثر  Wink


RE: inline patching - مختارالشاعر - 08-04-2020

جزاكم الله خيرا على هذه الردود الجميله المليئه بالمعلومات.

يعنى افهم من كده ان الحمايه لا تتحقق من الاماكن الفارغه ( Code Caving) وبالتالى لا تتحقق من  Inline Patching.
---

توضيح للسؤال الثانى ...

لماذا عند عمل inline patching البرنامج يقرأ الــ inline patching ولا يقرأ التعليمه الاساسيه فى البرنامج
بمعنى لماذ لا يحصل تداخل بما ان التعليمه الاساسيه ما زالت موجود ولم تلغى..؟؟ question question

مثلا برنامج له nag screen تخلصنا منها بــــ Inline Patching .. السؤال لماذا تكون الاولويه للــ Inline Patching
ولا تكون للكود الاساسى فى البرنامج!!!!!


RE: inline patching - Cyperior - 08-04-2020

للإجابة على تساؤلك الأول

ال Code Caving هو كما قال الأستاذ M!X0R في رده يسمى ب Direct Inline Patching
بالطبع يتحقق البرنامج من تلك الأماكن ولكن كما ذكرت يجب عليك تعطيل دوال التحقق.

وللتساؤل الثاني

البرنامج يمشي بحسب سير الأوامر يسمى هذا بال Code Flow

فمثلا لتخطي الشاشة المزعجة Nag Screen نجعل البرنامج يتجاوز تلك الشاشة عن طريق التعديل على النداء أو التحقق المؤدي إليها سواء بالتعديل المباشر أو عن طريق ال Code Caving وبالطبع كل هذا يتم قبل كود الشاشة المزعجة.

ويمكنك البحث عن ال Inline Patching للضاغط UPX فهو سهل وستفهم ما أصبوا إليه عدا تجاوز دوال التحقق.


RE: inline patching - مختارالشاعر - 08-04-2020

(08-04-2020, 08:30 PM)EarthMan123 كتب : ال Code Caving هو كما قال الأستاذ M!X0R في رده يسمى ب Direct Inline Patching
بالطبع يتحقق البرنامج من تلك الأماكن ولكن كما ذكرت يجب عليك تعطيل دوال التحقق.

بالفعل شاهدة ووجدت ان يتم البحث عن مكان التعديل اللازم ثم البحث عن مكان OEP ثم تغيير مكان القفزه الى Code Caving وهناك يتم وضع الاومر المطلوبه ثم ارجاع السيطره للبرنامج ولا يوجد تعديلات اخرى.
ارجو ان اكون اوصلت الفكره .
-----------
(08-04-2020, 08:30 PM)EarthMan123 كتب : وللتساؤل الثاني

البرنامج يمشي بحسب سير الأوامر يسمى هذا بال Code Flow

فمثلا لتخطي الشاشة المزعجة Nag Screen نجعل البرنامج يتجاوز تلك الشاشة عن طريق التعديل على النداء أو التحقق المؤدي إليها سواء بالتعديل المباشر أو عن طريق ال Code Caving وبالطبع كل هذا يتم قبل كود الشاشة المزعجة.

ويمكنك البحث عن ال Inline Patching للضاغط UPX فهو سهل وستفهم ما أصبوا إليه عدا تجاوز دوال التحقق.
ايوه كويس لحد هنا 
بس فى حاجه انا مش فاهمها بعد تعديل سير البرنامج Code Caving فى بداية البرنامج اصبح عندنا تعليمتان الاولى هى Code Caving والثانيه هى التعليمه الاساسيه للبرنامج التى مازالت كما هى لم يتم التعديل عليها
لماذا لا يوجد تعارض بينهما !!!!!

--------------
اشكركم على سعة صدركم


RE: inline patching - mohamad - 08-04-2020

تحتاج تعلم عن الاسمبلي اكثر  , لا تستعجل


RE: inline patching - Cyperior - 08-04-2020

سأوضح لك بشكل أفضل

لنفترض أن مكان التحقق من الشاشة المزعجة في العنوان A
وأن مكان الكود المجوف في العنوان B

إذا نقوم بالتعديل على العنوان A بالتعليمة  push B ثم ret أو بتعليمة call B مما سيؤدي بتغيير سير البرنامج من العنوان A إلى العنوان B وبذلك ينفذ كودنا المجوف مع الأخذ بالاعتبار إعادة التعليمات التي تم تغييرها عند تعديلنا على العنوان A,ومع ملاحظة أن نهاية الكود المجوف تكون التعليمة ret التي تعود إلى تنفيذ التعليمات التي بعد التعليمة A

إن لم تصل المعلومة فأخبرني لأريك بصورة من برنامج حي.


RE: inline patching - مختارالشاعر - 09-04-2020

شاكر لكنم جميعا..
(08-04-2020, 11:19 PM)EarthMan123 كتب : إن لم تصل المعلومة فأخبرني لأريك بصورة من برنامج حي.

يا ريت!!

ارجو ألا اكون اثقلت عليك.

جزاكم الله خيرا..