Binabsinspector (Binary Abstract Inspector) هو محلل ثابت للهندسة العكسية الآلية والمسح الضوئي في الثنائيات في الثنائيات ، وهو مشروع بحثي طويل الأجل حضن في Keenlab. ويستند إلى تفسير مجردة بدعم من Ghidra. إنه يعمل على PCODE's 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 في الوضع بدون رأس ، أو وضع واجهة المستخدم الرسومية ، أو مع Docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> - مسار مشروع Ghidra.
<projectName> - اسم مشروع Ghidra.
<scriptParams> - توفر الوسيطة لمحللنا الخيارات التالية:
| المعلمة | وصف |
|---|---|
[-K <kElement>] | حد حجم KSET K |
[-callStringK <callStringMaxLen>] | سلسلة استدعاء الحد الأقصى للطول ك |
[-Z3Timeout <timeout>] | مهلة Z3 |
[-timeout <timeout>] | تحليل المهلة |
[-entry <address>] | عنوان الدخول |
[-externalMap <file>] | تكوين نموذج الوظيفة الخارجية |
[-json] | الإخراج بتنسيق JSON |
[-disableZ3] | تعطيل Z3 |
[-all] | تمكين جميع الداما |
[-debug] | تمكين ناتج سجل تصحيح الأخطاء |
[-check "<cweNo1>[;<cweNo2>...]"] | تمكين الداما المحددة |
مع Ghidra GUI
Window -> Script Manager وابحث عن BinAbsInspector.javaBinAbsInspector.java ، وقم بتعيين المعلمات في نافذة التكوين وانقر فوق موافقمع 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
يمكنك أيضًا بناء Javadoc مع gradle javadoc ، وسيتم إنشاء وثائق API في ./build/docs/javadoc .
نحن نتوظيف Ghidra كأساس لدينا وغالبًا ما يستفيد من مجموعات Jimmutable لتحسين الأداء.
هنا نود أن نشكرهم على مساعدتهم الرائعة!