
एक शक्तिशाली स्टैटिक बाइनरी रीराइटिंग टूल
E9Patch - एक शक्तिशाली स्थैतिक बाइनरी रीराइटर
E9Patch x86_64 लिनक्स ELF बाइनरी के लिए एक शक्तिशाली स्थैतिक बाइनरी रीराइटिंग उपकरण है।
E9Patch है:
स्थैतिक बाइनरी रीराइटिंग एक इनपुट बाइनरी (ELF निष्पादनीय या साझा ऑब्जेक्ट) लेती है और उसमें कुछ पैच/संशोधन लागू करके एक आउटपुट बाइनरी उत्पन्न करती है। पैच की गई बाइनरी का उपयोग मूल के ड्रॉप-इन रिप्लेसमेंट के रूप में किया जा सकता है।
पूर्व-निर्मित E9Patch बाइनरी यहाँ से डाउनलोड की जा सकती हैं:
E9Patch का निर्माण बहुत आसान है: बस build.sh स्क्रिप्ट चलाएँ।
यह स्वचालित रूप से दो उपकरणों का निर्माण करेगा:
e9patch: बाइनरी रीराइटर बैकएंड; औरe9tool: E9Patch के लिए एक रैखिक डिस्सेम्बली फ्रंटएंड।E9Patch E9Tool फ्रंटएंड के माध्यम से उपयोग करने योग्य है।
उदाहरण के लिए, xterm में सभी xor निर्देशों में निर्देश मुद्रण इंस्ट्रुमेंटेशन जोड़ने के लिए, हम निम्नलिखित कमांड का उपयोग कर सकते हैं:
$ ./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 विकल्प पास करें।यह सॉफ़्टवेयर 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) कार्यक्रम के तहत वित्त पोषित है।