BinAbsInspector (Binary Abstract Inspector) is a static analyzer for automated reverse engineering and scanning vulnerabilities in binaries, which is a long-term research project incubated at Keenlab. It is based on abstract interpretation with the support from Ghidra. It works on Ghidra’s Pcode instead of assembly. Currently it supports binaries on x86,x64, armv7 and aarch64.
z3-${version}-win/binz3-${version}-win/bin/*.so to /usr/local/lib/Build the extension by yourself, if you want to develop a new feature, please refer to development guide.
gradle buildExtension under repository rootdist/${GhidraVersion}_${date}_BinAbsInspector.zipYou can run BinAbsInspector in headless mode, GUI mode, or with docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless -import -postScript BinAbsInspector “@@”
<projectPath> — Ghidra project path.<projectName> — Ghidra project name.<scriptParams> — The argument for our analyzer, provides following options:
| Parameter | Description |
|---|---|
[-K <kElement>] | KSet size limit K |
[-callStringK <callStringMaxLen>] | Call string maximum length K |
[-Z3Timeout <timeout>] | Z3 timeout |
[-timeout <timeout>] | Analysis timeout |
[-entry <address>] | Entry address |
[-externalMap <file>] | External function model config |
[-json] | Output in json format |
[-disableZ3] | Disable Z3 |
[-all] | Enable all checkers |
[-debug] | Enable debugging log output |
[-check "<cweNo1>[;<cweNo2>...]"] | Enable specific checkers |
Window -> Script Manager and find BinAbsInspector.javaBinAbsInspector.java entry, set the parameters in configuration window and click OKgit clone git@github.com:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai “@@
So far BinAbsInspector supports following checkers:
The structure of this project is as follows, please refer to technical details for more details.
├── 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
You can also build the javadoc with gradle javadoc, the API documentation will be generated in ./build/docs/javadoc.
Learning Without Walls Remote education has long been a lifeline for students in rural areas…
Have you ever come across a picture on the internet and wondered where it came…
Overview WhatsMyName is a free, community-driven OSINT tool designed to identify where a username exists…
Managing disk usage is a crucial task for Linux users and administrators alike. Understanding which…
Efficient disk space management is vital in Linux, especially for system administrators who manage servers…
Knowing how to check directory sizes in Linux is essential for managing disk space and…