SBA: estrutura de análise binária estática
O que uma estrutura de análise binária estática deve fazer?
- Reduza o esforço de implementação para análise individual
- Apenas 250 locs em C ++ para implementar uma análise para validar as propriedades da função.
- Altamente configurável
- Uma estrutura abstrata baseada em interpretação que permite ao usuário definir domínios abstratos e configurar a avaliação de instruções.
- Som e raciocínio preciso sobre a memória da pilha
- Um modelo de memória de pilha na granularidade no nível de byte e aproximações sólidas e eficientes para atualizações imprecisas na pilha.
- Arquitetura neutra
- A análise decolada de detalhes de arquitetura, como linguagens de montagem e especificações da ABI.
Começando
Dependências
sudo apt-get install g++ ocaml camlp4-extra camlp4 tar cmake make
Construir sba
mkdir build && cd build
cmake .. && make -j4
Aplicações
Análise de mesa de salto
Para analisar um objeto binário ~/obj , use o seguinte comando:
./jump_table x86_64.auto ~/obj
Por padrão, o SBA cria arquivos e saídas temporários resultam em /tmp/sba/ . Esses caminhos podem ser especificados usando -d e -o da seguinte forma:
./jump_table -d /tmp/sba/ -o /tmp/sba/result x86_64.auto ~/obj
Publicações
A SBA contribuiu significativamente para a implementação dos seguintes trabalhos:
- Análise de mesa de salto escalável, som e precisa. ISSTA 2024.
- Desmontagem precisa de binários complexos sem o uso de metadados do compilador. ASPLOS 2023.
- Mais seguro: instrumentação binária eficiente e tolerante a erros. Usenix 2023.
- Randomização prática de código binário de grão fino. ACSAC 2020.