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> - อาร์กิวเมนต์สำหรับเครื่องวิเคราะห์ของเรามีตัวเลือกต่อไปนี้:
| พารามิเตอร์ | คำอธิบาย |
|---|---|
[-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>...]"] | เปิดใช้งานตัวตรวจสอบเฉพาะ |
กับ 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 build/docs/javadoc
เราจ้าง Ghidra เป็นรากฐานของเราและใช้ประโยชน์จากคอลเล็กชั่น jimmutable เพื่อประสิทธิภาพที่ดีขึ้น
ที่นี่เราขอขอบคุณพวกเขาสำหรับความช่วยเหลือที่ดีของพวกเขา!