ولو الاخوة ماقصرو معاك لكن ..
شوف مثلا برنامج مضغوط upx معروف طريقة فك الــ upx ننزل للاخير وفي jmp تاخذك للــ OEP اي نقطة البداية
فــ لعمل inline
نعدل القفزة الي تذهب الى نقطة الوصول ونجعله يذهب الى مكان خالي الي يسمى CodeCave
بعده ذهاب الي codecave نضع الباتش بواسطة عمل mov وتغير البايتات للباتش وبما ان Assemble هو غلط نقول يعمل line by line
لان هذه خاصية بالكومبايلر ولعة اسمبلي لديه كومابيلر خاص بيه
يعني يوجد نوعين كومبايلر compiler للــ High Level Language
Compiler الكومبايلر لما يعمل كومبايل للملف يعمله من البداية للنهاية وعند runtime يظهر اذا في error او هيك شي
و
Interpreter لكن انتربريتر يعمل compile سطر ب سطر
و الاسمبلي يعتبر Low Level Language ولديه كومبايلر خاص به يمسى Assembler
بعد ان قفزنا الى Codecave وحقنا الكود نرجع للنقطة الاصلية للبرنامج ... ويتم حفظ التغيرات
عند تحميل البرنامج للمنقح راح نلاحظ فقط كود المضغوط ولكن عند تشغيل البرنامج راح يتم فك ضغطه بالميموري ... لهذا يتم تعديل على ببداية كود المضغوط
شوف مثلا برنامج مضغوط upx معروف طريقة فك الــ upx ننزل للاخير وفي jmp تاخذك للــ OEP اي نقطة البداية
فــ لعمل inline
نعدل القفزة الي تذهب الى نقطة الوصول ونجعله يذهب الى مكان خالي الي يسمى CodeCave
بعده ذهاب الي codecave نضع الباتش بواسطة عمل mov وتغير البايتات للباتش وبما ان Assemble هو غلط نقول يعمل line by line
لان هذه خاصية بالكومبايلر ولعة اسمبلي لديه كومابيلر خاص بيه
يعني يوجد نوعين كومبايلر compiler للــ High Level Language
Compiler الكومبايلر لما يعمل كومبايل للملف يعمله من البداية للنهاية وعند runtime يظهر اذا في error او هيك شي
و
Interpreter لكن انتربريتر يعمل compile سطر ب سطر
و الاسمبلي يعتبر Low Level Language ولديه كومبايلر خاص به يمسى Assembler
بعد ان قفزنا الى Codecave وحقنا الكود نرجع للنقطة الاصلية للبرنامج ... ويتم حفظ التغيرات
عند تحميل البرنامج للمنقح راح نلاحظ فقط كود المضغوط ولكن عند تشغيل البرنامج راح يتم فك ضغطه بالميموري ... لهذا يتم تعديل على ببداية كود المضغوط