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/bin
z3-${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.zip
You 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.java
BinAbsInspector.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
.
shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…
Extract and execute a PE embedded within a PNG file using an LNK file. The…
Embark on the journey of becoming a certified Red Team professional with our definitive guide.…
This repository contains proof of concept exploits for CVE-2024-5836 and CVE-2024-6778, which are vulnerabilities within…
This took me like 4 days (+2 days for an update), but I got it…
MaLDAPtive is a framework for LDAP SearchFilter parsing, obfuscation, deobfuscation and detection. Its foundation is…