
ماسح ثغرات ثنائي ثابت يستخدم التفسير التجريدي على Ghidra Pcode. يكتشف فئات CWE مثل buffer overflows و use-after-free و command injection عبر التنفيذ الرمزي باستخدام Z3.
BinAbsInspector (مفتش ثنائي مجرد) هو محلل ثابت للهندسة العكسية الآلية ومسح الثغرات في الثنائيات، وهو مشروع بحثي طويل الأمد يحتضنه Keenlab. يعتمد على التفسير المجرد بدعم من Ghidra. يعمل على Pcode الخاص بـ Ghidra بدلاً من لغة التجميع. يدعم حاليًا الثنائيات على x86 وx64 وarmv7 وaarch64.
z3-${version}-win/binz3-${version}-glibc-${version}/bin/*.so إلى /usr/local/lib/قم ببناء الإضافة بنفسك، إذا كنت ترغب في تطوير ميزة جديدة، يرجى الرجوع إلى دليل التطوير.
gradle buildExtension في جذر المستودعdist/${GhidraVersion}_${date}_BinAbsInspector.zipيمكنك تشغيل BinAbsInspector في وضع بدون واجهة رسومية (headless) أو وضع واجهة المستخدم الرسومية (GUI) أو مع Docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> -- مسار مشروع Ghidra.
<projectName> -- اسم مشروع Ghidra.
<scriptParams> -- وسيط المحلل الخاص بنا، يوفر الخيارات التالية:
مع واجهة المستخدم الرسومية لـ Ghidra
Window -> Script Manager وابحث عن BinAbsInspector.javaBinAbsInspector.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 تنفيذ المدقق
│ │ ├── env
│ │ │ ├── funcs نمذجة الدوال
│ │ │ │ ├── externalfuncs نمذجة الدوال الخارجية
│ │ │ │ └── stdfuncs نمذجة مكتبة C++ القياسية
│ │ │ └── region نمذجة الذاكرة
│ │ ├── solver وحدة التحليل الأساسية والرسم البياني
│ │ └── util أدوات مساعدة
│ └── resources
└── test
يمكنك أيضًا بناء javadoc باستخدام gradle javadoc، وستنشأ وثائق API في ./build/docs/javadoc.
نستخدم Ghidra كأساس لنا ونستفيد بشكل متكرر من JImmutable Collections لتحسين الأداء.
نود هنا أن نشكرهم على مساعدتهم العظيمة!
| المعامل | الوصف |
|---|
[-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>...]"] | تمكين مدققات محددة |