
أداة قوية لإعادة كتابة الثنائيات بشكل ثابت
E9Patch - أداة إعادة كتابة ثنائية ثابتة قوية
E9Patch هي أداة قوية لإعادة الكتابة الثنائية الثابتة للملفات الثنائية x86_64 Linux ELF.
تتميز E9Patch بما يلي:
إعادة الكتابة الثنائية الثابتة تأخذ ملفًا ثنائيًا مدخلاً (ملف تنفيذي ELF أو كائن مشترك) وتُنشئ ملفًا ثنائيًا مخرجًا مع تطبيق بعض التصحيح/التعديل عليه. يمكن استخدام الملف الثنائي المُصحح كبديل مباشر للأصلي.
يمكن تنزيل ملفات E9Patch الثنائية المُجمّعة مسبقًا من هنا:
بناء E9Patch سهل جدًا: ببساطة قم بتشغيل البرنامج النصي build.sh.
سيقوم هذا تلقائيًا ببناء أداتين:
e9patch: الواجهة الخلفية لإعادة كتابة الملفات الثنائية؛ وe9tool: واجهة أمامية لفك التجميع الخطي لـ E9Patch.يمكن استخدام E9Patch عبر الواجهة الأمامية E9Tool.
على سبيل المثال، لإضافة أداة طباعة تعليمات لجميع تعليمات xor
في xterm، يمكننا استخدام الأمر التالي:
$ ./e9tool -M 'asm=/xor.*/' -P print xterm
سيؤدي هذا إلى إنشاء نسخة معدلة من xterm مكتوبة في الملف a.out.
يمكن تشغيل xterm المعدل بشكل طبيعي، ولكنه سيقوم بطباعة سلسلة
التجميع لكل تعليمات xor تم تنفيذها إلى stderr:
$ ./a.out
xorl %ebp, %ebp
xorl %ebx, %ebx
xorl %eax, %eax
xorl %edx, %edx
xorl %edi, %edi
...
للحصول على قائمة كاملة بالخيارات والأوضاع المدعومة، راجع:
$ ./e9tool --help
بعض المشاريع الأخرى التي تستخدم E9Patch تشمل:
libc.so.E9Patch هي أداة منخفضة المستوى مصممة لتكون قابلة للتكامل في مشاريع أخرى. لمعرفة المزيد، يرجى الاطلاع على التوثيق التالي:
يمكن الإبلاغ عن الأخطاء هنا:
الإصدار الحالي من E9Patch تم تحسينه بشكل كبير مقارنة بالنموذج الأولي الأصلي الذي تم تقييمه في ورقة PLDI'2020. على وجه التحديد:
-O2 إلى E9Tool.تم إصدار هذا البرنامج بموجب رخصة GNU العامة (GPL) الإصدار 3.
بعض الملفات المحددة تم إصدارها بموجب رخصة MIT (راجع مقدمة الملف).
لمزيد من المعلومات، يرجى الاطلاع على ورقتنا في PLDI'2020:
يرجى الاستشهاد بورقتنا على النحو التالي:
@inproceedings{e9patch,
author = {Duck, Gregory J. and Gao, Xiang and Roychoudhury, Abhik},
title = {Binary rewriting without control flow recovery},
year = {2020},
publisher = {Association for Computing Machinery},
url = {https://doi.org/10.1145/3385412.3385972},
doi = {10.1145/3385412.3385972},
booktitle = {Programming Language Design and Implementation (PLDI)}
}
تم دعم هذا العمل جزئيًا من قبل القمر الصناعي الوطني للتميز في أنظمة البرمجيات الموثوقة، بتمويل من مؤسسة الأبحاث الوطنية (NRF) سنغافورة تحت برنامج البحث والتطوير للأمن السيبراني الوطني (NCR).