تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
inline patching
#1
السلام عليكم 

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

----------

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

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

وشكرا لكم....
أعضاء أعجبوا بهذه المشاركة :
#2
وعليكم السلام ورحمة الله وبركاته
ليعمل البرنامج المحمي بعد التعديل عليه فيجب عليك التعديل على دوال التحقق الموجودة فيه بأنواعها ( CRC الملف, والذاكرة وغيرها ) 

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

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

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

هذا والله أعلم.
أعضاء أعجبوا بهذه المشاركة : rce3033
#3
لم افهم ما تريد بالضبط 
ولاكن البرنامج المحمي غالبا لا يقبل اي تعديل ، لانه يجري اختبار على نفسه اذا كان حدث به اي تغيير فيغلق نفسه في حالة عدلت عليه، لذا يجب فك الحماية اذا اردت عمل باتش للملف , او ان تعمل لودر 
ارجو ان اكون اجبتك
أعضاء أعجبوا بهذه المشاركة :
#4
القاعدة: للتعديل على ملف مضغوط او محمي يجب فك الضغط او الحماية أولا بعد ذلك عدل ما شئت ان كان لا يوجد تحقق CRC
أما إذا كان يوجد تحقق يجب عليك تجاوزه أولا...بعد ذلك عدل كما تشاء.

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

هناك دروس و بعض التحديات مع الحلول تطرقت لهاته النقاط شاهد و ستفهم أكثر  Wink
لَّا إِلَٰهَ إِلَّا أَنتَ سُبْحَانَكَ إِنِّي كُنتُ مِنَ الظَّالِمِينْ.

عن أبي هريرة -رضي الله عنه- أن رسول الله -صلى الله عليه وسلم- كانَ يقولُ في سجودِهِ: «اللَّهُمَّ اغْفِرْ لي ذَنْبِي كُلَّهُ: دِقَّهُ وَجِلَّهُ، وَأَوَّلَهُ وَآخِرَهُ، وَعَلاَنِيَتَهُ وَسِرَّهُ».
(صحيح - رواه مسلم).
أعضاء أعجبوا بهذه المشاركة : rce3033
#5
جزاكم الله خيرا على هذه الردود الجميله المليئه بالمعلومات.

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

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

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

مثلا برنامج له nag screen تخلصنا منها بــــ Inline Patching .. السؤال لماذا تكون الاولويه للــ Inline Patching
ولا تكون للكود الاساسى فى البرنامج!!!!!
أعضاء أعجبوا بهذه المشاركة :
#6
للإجابة على تساؤلك الأول

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

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

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

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

ويمكنك البحث عن ال Inline Patching للضاغط UPX فهو سهل وستفهم ما أصبوا إليه عدا تجاوز دوال التحقق.
أعضاء أعجبوا بهذه المشاركة : rce3033
#7
(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 والثانيه هى التعليمه الاساسيه للبرنامج التى مازالت كما هى لم يتم التعديل عليها
لماذا لا يوجد تعارض بينهما !!!!!

--------------
اشكركم على سعة صدركم
أعضاء أعجبوا بهذه المشاركة :
#8
تحتاج تعلم عن الاسمبلي اكثر  , لا تستعجل
أعضاء أعجبوا بهذه المشاركة :
#9
سأوضح لك بشكل أفضل

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

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

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

يا ريت!!

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

جزاكم الله خيرا..
أعضاء أعجبوا بهذه المشاركة :


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


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