
Ghidra Pcode पर अमूर्त व्याख्या (abstract interpretation) का उपयोग करने वाला स्थिर बाइनरी भेद्यता स्कैनर। Z3 के साथ प्रतीकात्मक निष्पादन (symbolic execution) के माध्यम से बफर ओवरफ्लो, उपयोग-के-बाद-मुक्त (use-after-free), और कमांड इंजेक्शन जैसी CWE कक्षाओं का पता लगाता है।
BinAbsInspector (Binary Abstract Inspector) एक स्थैतिक विश्लेषक है जो बाइनरी में स्वचालित रिवर्स इंजीनियरिंग और कमजोरियों की स्कैनिंग के लिए है, जो Keenlab में एक दीर्घकालिक शोध परियोजना है। यह Ghidra के समर्थन से अमूर्त व्याख्या पर आधारित है। यह असेंबली के बजाय Ghidra के Pcode पर काम करता है। वर्तमान में यह x86,x64, armv7 और aarch64 पर बाइनरी का समर्थन करता है।
z3-${version}-win/bin की ओर इशारा करते हुए एक PATH पर्यावरण चर जोड़ेंz3-${version}-glibc-${version}/bin/*.so को /usr/local/lib/ में कॉपी करेंयदि आप कोई नई सुविधा विकसित करना चाहते हैं, तो कृपया विकास गाइड देखें।
gradle buildExtension चलाएँdist/${GhidraVersion}_${date}_BinAbsInspector.zip पर उत्पन्न होगाआप BinAbsInspector को हेडलेस मोड, GUI मोड, या Docker के साथ चला सकते हैं।
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> -- Ghidra प्रोजेक्ट पथ।
<projectName> -- Ghidra प्रोजेक्ट नाम।
<scriptParams> -- हमारे विश्लेषक के लिए तर्क, निम्नलिखित विकल्प प्रदान करता है:
Ghidra GUI के साथ
Window -> Script Manager खोलें और BinAbsInspector.java ढूँढेंBinAbsInspector.java प्रविष्टि पर डबल-क्लिक करें, कॉन्फ़िगरेशन विंडो में पैरामीटर सेट करें और OK क्लिक करेंDocker के साथ
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>
अब तक BinAbsInspector निम्नलिखित जाँचकर्ताओं का समर्थन करता है:
इस परियोजना की संरचना इस प्रकार है, कृपया अधिक विवरण के लिए तकनीकी विवरण या चीनी संस्करण लेख देखें।
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers checker implementatiom
│ │ ├── env
│ │ │ ├── funcs function modeling
│ │ │ │ ├── externalfuncs external function modeling
│ │ │ │ └── stdfuncs cpp std modeling
│ │ │ └── region memory modeling
│ │ ├── solver analyze core and grpah module
│ │ └── util utilities
│ └── resources
└── test
आप gradle javadoc के साथ javadoc का निर्माण भी कर सकते हैं, API दस्तावेज़ ./build/docs/javadoc में उत्पन्न होगा।
हम Ghidra को अपने आधार के रूप में उपयोग करते हैं और बेहतर प्रदर्शन के लिए अक्सर JImmutable Collections का लाभ उठाते हैं।
यहाँ हम उनकी महान सहायता के लिए उन्हें धन्यवाद देना चाहते हैं!
| Parameter | Description |
|---|
[-K <kElement>] | KSet आकार सीमा K |
[-callStringK <callStringMaxLen>] | कॉल स्ट्रिंग अधिकतम लंबाई K |
[-Z3Timeout <timeout>] | Z3 टाइमआउट |
[-timeout <timeout>] | विश्लेषण टाइमआउट |
[-entry <address>] | प्रवेश पता |
[-externalMap <file>] | बाहरी फ़ंक्शन मॉडल कॉन्फ़िग |
[-json] | json प्रारूप में आउटपुट |
[-disableZ3] | Z3 अक्षम करें |
[-all] | सभी जाँचकर्ता सक्षम करें |
[-debug] | डिबगिंग लॉग आउटपुट सक्षम करें |
[-check "<cweNo1>[;<cweNo2>...]"] | विशिष्ट जाँचकर्ता सक्षम करें |