O Binabsinspect (Inspetor Abstrato binário) é um analisador estático para engenharia reversa automatizada e vulnerabilidades de varredura em binários, que é um projeto de pesquisa de longo prazo incubado no Keenlab. É baseado na interpretação abstrata com o apoio de Ghidra. Funciona no PCODE de Ghidra em vez de montagem. Atualmente, ele suporta binários em x86, x64, ARMV7 e AARCH64.
z3-${version}-win/binz3-${version}-glibc-${version}/bin/*.so para /usr/local/lib/Construa a extensão por si mesmo, se você deseja desenvolver um novo recurso, consulte o Guia de Desenvolvimento.
gradle buildExtension sob a raiz do repositóriodist/${GhidraVersion}_${date}_BinAbsInspector.zipVocê pode executar o Binabsinspector no modo sem cabeça, no modo GUI ou com o Docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> - Caminho do projeto Ghidra.
<projectName> - Nome do projeto Ghidra.
<scriptParams> - O argumento para o nosso analisador fornece as seguintes opções:
| Parâmetro | Descrição |
|---|---|
[-K <kElement>] | Limite de tamanho de Kset k |
[-callStringK <callStringMaxLen>] | Chamada String Comprimento máximo k |
[-Z3Timeout <timeout>] | Z3 Timeout |
[-timeout <timeout>] | ANÁLISE Timeout |
[-entry <address>] | Endereço de entrada |
[-externalMap <file>] | Config do modelo de função externa |
[-json] | Saída em formato JSON |
[-disableZ3] | Desative Z3 |
[-all] | Habilite todos os damas |
[-debug] | Ativar saída de log de depuração |
[-check "<cweNo1>[;<cweNo2>...]"] | Ativar verificadores específicos |
Com Ghidra GUI
Window -> Script Manager e encontre BinAbsInspector.javaBinAbsInspector.java , defina os parâmetros na janela de configuração e clique em OKCom 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 >Até agora, o BinabsInsiPtor suporta os seguintes damas:
A estrutura deste projeto é a seguinte, consulte os detalhes técnicos ou o artigo da versão chinesa para obter mais detalhes.
├── 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
Você também pode construir o javadoc com gradle javadoc , a documentação da API será gerada em ./build/docs/javadoc .
Empregamos Ghidra como nossa fundação e freqüentemente alavancamos coleções jimtáveis para melhor desempenho.
Aqui gostaríamos de agradecer a eles por sua grande ajuda!