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 يعمل؟؟ ---------- ولماذا عند عمل inline patching البرنامج يقرأ الــ inline patching ولا يقرأ التعليمه الاساسيه فى البرنامج بمعنى لماذ لا يحصل تداخل بما ان التعليمه الاساسيه ما زالت موجود ولم تلغى..؟؟ ارجو ألا اكون ازعجتكم بكثرة الاسئله. وشكرا لكم.... 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 الذي يتم على الملف المستهدف نفسه هناك دروس و بعض التحديات مع الحلول تطرقت لهاته النقاط شاهد و ستفهم أكثر RE: inline patching - مختارالشاعر - 08-04-2020 جزاكم الله خيرا على هذه الردود الجميله المليئه بالمعلومات. يعنى افهم من كده ان الحمايه لا تتحقق من الاماكن الفارغه ( Code Caving) وبالتالى لا تتحقق من Inline Patching. --- توضيح للسؤال الثانى ... لماذا عند عمل inline patching البرنامج يقرأ الــ inline patching ولا يقرأ التعليمه الاساسيه فى البرنامج بمعنى لماذ لا يحصل تداخل بما ان التعليمه الاساسيه ما زالت موجود ولم تلغى..؟؟ مثلا برنامج له 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 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 كتب : إن لم تصل المعلومة فأخبرني لأريك بصورة من برنامج حي. يا ريت!! ارجو ألا اكون اثقلت عليك. جزاكم الله خيرا.. |