BinabsInspector (Inspector Binario Abstracto) es un analizador estático para la ingeniería inversa automatizada y las vulnerabilidades de escaneo en binarios, que es un proyecto de investigación a largo plazo incubado en Keenlab. Se basa en la interpretación abstracta con el apoyo de Ghidra. Funciona en el pcode de Ghidra en lugar de el ensamblaje. Actualmente admite binarios en x86, x64, ARMV7 y AARCH64.
z3-${version}-win/binz3-${version}-glibc-${version}/bin/*.so a /usr/local/lib/Construya la extensión usted mismo, si desea desarrollar una nueva característica, consulte la Guía de desarrollo.
gradle buildExtension en Repositorio Rootdist/${GhidraVersion}_${date}_BinAbsInspector.zipPuede ejecutar binabsinspector en modo sin cabeza, modo GUI o con Docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> - Ghidra Project Path.
<projectName> - Nombre del proyecto Ghidra.
<scriptParams> - El argumento para nuestro analizador proporciona las siguientes opciones:
| Parámetro | Descripción |
|---|---|
[-K <kElement>] | Límite de tamaño kset k k |
[-callStringK <callStringMaxLen>] | Cadena de llamada longitud máxima k |
[-Z3Timeout <timeout>] | Tiempo de espera z3 |
[-timeout <timeout>] | Tiempo de espera de análisis |
[-entry <address>] | Dirección de entrada |
[-externalMap <file>] | Configuración del modelo de función externa |
[-json] | Salida en formato JSON |
[-disableZ3] | Deshabilitar Z3 |
[-all] | Habilitar todas las damas |
[-debug] | Habilitar la salida del registro de depuración |
[-check "<cweNo1>[;<cweNo2>...]"] | Habilitar damas específicas |
Con Ghidra Gui
Window -> Script Manager y busque BinAbsInspector.javaBinAbsInspector.java , configure los parámetros en la ventana de configuración y haga clic en AceptarCon 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 >Hasta ahora, BinabsInspector admite las siguientes damas:
La estructura de este proyecto es la siguiente, consulte los detalles técnicos o el artículo de la versión china para obtener más detalles.
├── 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
También puede construir el Javadoc con gradle javadoc , la documentación de la API se generará en ./build/docs/javadoc .
Empleamos a Ghidra como base y con frecuencia aprovechamos colecciones de jimmutables para un mejor rendimiento.
¡Aquí nos gustaría agradecerles por su gran ayuda!