Sobre
É um plugin para IDA que estende as capacidades de engenharia reversa de UEFI. Baseado no ida-efitools com uma série de correções e novos recursos.
Funciona tanto com Python 2 quanto com Python 3. Suporta versões desatualizadas do IDA Pro 7.x sem garantias.
Recursos
- Definição de GUIDs
- Propagação de estruturas (registradores, xrefs, variáveis de pilha)
- Identificação de protocolos e interfaces
- Inicialização de protocolos desconhecidos
Recursos estendidos
- Pode ser usado como plugin e como script.
- Importa automaticamente declarações C personalizadas (structs, enums, unions, typedefs) do diretório
efitools2/types
- Define as permissões do segmento de código como RWE (para corrigir a eliminação incorreta de código morto na visão do decompilador)
Recursos exclusivos do plugin
- Oferece a capacidade de sincronizar tipos externos
- Imprime e copia para a área de transferência o EFI_GUID selecionado na visão do desmontador
- Extrai EFI_GUID de atribuições de variáveis locais
Notas importantes
- behemoth.til é rejeitado em favor do uefi.til e uefi64.til do IDA
- Não use uefi(64).til do IDA 7.3 porque contém erros
Uso
Como script
Basta executar efitools2/efitools.py a partir do IDA.
Como plugin
Atalhos de teclado:
- Ctrl-Alt-E - faz toda a mágica
- Ctrl-Alt-G (em dados) - imprime e copia o EFI_GUID na posição atual do cursor
- Ctrl-Alt-G (em código) - extrai e copia o EFI_GUID da atribuição de variável local (posicione o cursor na atribuição de
EFI_GUID.data1)
- F5 (na janela Local Types) - sincroniza os tipos locais a partir da pasta
types
Ajustes
- Os atalhos de teclado podem ser configurados no arquivo
ida-efitool2.py.
- Algumas preferências podem ser encontradas no arquivo
efitools2/efitools.py.
- GUIDs personalizados devem ser colocados no arquivo
efitools2/guids/custom.ini.
- Protocolos personalizados devem ser colocados dentro da pasta
efitools2/types. Veja os exemplos disponíveis.
Como exportar tipos personalizados
É um recurso nativo do IDA. Basta abrir o menu de contexto do tipo na janela Local Types e selecionar a ação 'Export to header file'.
Pré-requisitos
pip install future - Apenas para Python 2.
pip install clipboard - Se você quiser copiar automaticamente o conteúdo do EFI_GUID para a área de transferência.
Instalação do plugin
Basta copiar o arquivo ida-efitools2.py e a pasta efitools2 para o diretório de plugins do IDA.
Créditos
@snare pela base de código original do ida-efiutils.
@danse-macabre pelo ida-efitools reescrito do zero.
@djpohly, @al3xtjames, @vutung2311 pelas contribuições (forks).
@p-state (eu) por dar nova vida a este projeto.