
Assistente de pesquisa de vulnerabilidades que extrai pseudocódigo do decompilador IDA Hex-Rays.
"Hacking is the discipline of questioning all your assumptions all of the time."
-- Dave Aitel
Haruspex é um plugin headless extremamente rápido para IDA que extrai pseudocódigo gerado pelo decompilador do IDA em um formato que deve ser adequado para ser importado em uma IDE, ou analisado por ferramentas de análise estática como Semgrep, weggli, ou oneiromancer.

decompile_to_file] para decompilar uma função e salvar seu pseudocódigo e definições de tipo em
disco, distinguindo funções que não podem ser decompiladas de erros como uma licença Hex-Rays indisponível.A maneira mais fácil de obter a versão mais recente é via crates.io:
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install haruspex --locked
No Windows, em vez disso, use os seguintes comandos:
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
cargo install haruspex --locked
Alternativamente, você pode compilar a partir do código-fonte:
git clone --depth 1 https://github.com/0xdea/haruspex
cd haruspex
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo build --release --locked
No Windows, em vez disso, use os seguintes comandos:
git clone --depth 1 https://github.com/0xdea/haruspex
cd haruspex
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
cargo build --release --locked
IDADIR está definida se sua instalação do IDA estiver em um local não padrão.haruspex <binary_file>
<binary_file>, nomeado a partir
dele com sua extensão, se houver, substituída por .dec (por exemplo, foo.exe e foo ambos produzem foo.dec, então binários
que diferem apenas em sua extensão compartilham o mesmo diretório de saída):
vim foo.dec
code foo.dec
Apenas a versão mais recente do IDA é oficialmente suportada, mas versões mais antigas podem funcionar também. A tabela a seguir resume a versão compatível mais recente para cada versão do IDA:
| Versão do IDA | Versão compatível mais recente |
|---|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.5 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | versão atual |
| v9.4.260915 | versão atual |
[!NOTE] Consulte a documentação do idalib-rs para informações adicionais.
O desenvolvimento deste projeto foi apoiado pelas seguintes organizações:
.cpp em vez de .c para gerar o pseudocódigo (veja
esta issue)?