Esta seção aborda não somente ferramentas utilizadas no livro, mas também outras que vale a pena citar na esperança que o leitor se sinta atraído a baixar, usar e tirar suas próprias conclusões em relação à eficiência delas.
Este tipo de ferramenta é útil para editar arquivos binários em geral, não somente executáveis, dumpar (copiar) conteúdo de trechos de arquivos, etc. Também é possível editar uma partição ou disco com bons editores hexadecimal a fim de recuperar arquivos, por exemplo.
Nome
Licença
Descrição
010 Editor
Shareware
Multiplataforma, bastante usado. Suporta templates e scripts. Alguns dizem que é o melhor atualmente.
bvi
Livre
Editor de interface de texto (TUI), similar ao HT Editor. Tem versão para DOS/Windows mas reina mesmo é no Linux.
fhex
Livre
Editor gráfico multiplataforma capaz de exibir o binário graficamente, além de suportar expressões regulares na busca.
GNU poke
Livre
Editor REPL genérico (não só para executáveis) com uma abordagem muito interessante. Escrevemos um artigo sobre.
Helium Hex Edtitor
Comercial
Editor incrível para Windows. Tem recursos muito legais como edição e alocação de memória, operações com dados (XOR, SHL, etc) e na versão paga tem suporte a vários algoritmos criptográficos, disassembly e mais.
Hex Workshop
Comercial
Pago, somente para Windows, antigo, mas muito bem feito.
HexFiend
Livre
Somente para macOS, com recursos legais como diff e data inspector.
Hexinator
Shareware
Linux, macOS e Windows. Tem templates (chamados de "grammars"), scripting em Python e Lua e compara binários.
hexxed
Livre
Baseado na ncurses, portanto de interface gráfica de texto. Tinha potencial, mas o desenvolvimento parou no final de 2022.
Hiew (Hacker's View)
Comercial
Editor (e disassembler) muito poderoso, principalmente por conta de seus módulos HEM. Tem suporte à vários formatos e é muito usado por analistas de malware, mas é pago.
HT Editor
Livre
Interface gráfica baseada em texto, parecido com o Hiew. Tem muitos recursos, mas infelizmente o desenvolvimento parou em 2015. Hora de alguém fazer um fork !
HxD
Freeware
Bem bom. Possui recursos extras como geração de hashes e suporte a abrir discos.
ImHex
Livre
Impressionante editor gráfico para Windows, macOS e Linux. Possui uma linguagem de patterns para aplicar no arquivo, exporta/importa patches e muito mais.
Reverse Engineer's Hex Editor
Livre
Nova proposta de um editor especificamente para engenharia reversa.
Synalyze It!
Comercial
Para macOS, desenvolvido por quem faz o Hexinator. Tem o mesmo nível de recursos.
wxHexEditor
Livre
Multiplataforma, recursos interessantes. Infelizmente o desenvolvimento parou em 2017.
XVI32
Freeware
Sem muitos recursos, mas quebra um galho no Windows para uma edição rápida.
Analisadores Estáticos de Executáveis
Analisam estaticamente os binários, sem carregá-los. São úteis para uma primeira visão sobre um executável desconhecido.
Nome
Licença
Descrição
capa
Livre
Detecta as capacidades de executáveis PE e shellcodes para Windows.
CFF Explorer
Freeware
Sendo parte do Explorer Suite, é na real um editor de PE. Com ele é possível adicionar imports, remover seções, etc.
DIE (Detect It Easy)
Freeware
Detecta compilador, linker, packer e protectors em binários. Também edita os arquivos.
DUMPBIN
Freeware
Analisador de PE de linha de comando disponível no SDK do Visual Studio.
Edump
Freeware
Parser de linha de comando para Windows. Suporta arquivos NE, LX/LE, PE/PE32+, ELF/ELF64 (little-endian), Mach-O (little-endian), e TE.
Exeinfo PE
Freeware
Detecta compilador, packer, protectors e edita os arquivos, além de suportar vários plugins loucos. Tem versão VIP mediante doação.
Malwoverview
Livre
Mais um nacional pra uma primeira impressão de arquivos suspeitos, URLs e domínios. Checa também APKs.
objdump
Livre
Parte do GNU binutils, também analisa PE, além de ELF, a.out, etc.
PE-Bear
Freeware
Analisador gráfico (Qt) multiplataforma que também detecta packers/protectors.
PEdump
Livre
Analisador online muito legal!
pestudio
Freeware
Analisador de PE padrão da indústria, com foco em malware. Tem versão Pro (paga).
readelf
Livre
Também parte do binutils, analisador de ELF.
readpe
Livre
Anteriormente chamado de pev , este é o nosso 💚 toolkit de ferramentas de linha de comando para análise de PE. Artigo introdutório aqui .
Stud_PE
Freeware
Analisador e editor com suporte a plugins, assinaturas do antigo PEiD, editor de recursos e mais.
Bibliotecas para parsear Executáveis
Nome
Licença
Descrição
BFD
Livre
B inary F ile D escriptor é a biblioteca usada por programas como readpe e objdump. Tem suporte a muitos tipos de arquivos, incluindo PE e ELF, claro.
libpe
Livre
Nossa 💚 biblioteca multiplataforma para parsing de arquivos PE.
libPeConv
Livre
Biblioteca em C++ para PE usada pelo PE-Bear.
pefile
Livre
Famosa biblioteca em Python pra fazer qualquer coisa com arquivos PE.
PeNet
Livre
Biblioteca em .Net para PE.
PeParser
Livre
Biblioteca em Java para PE.
pyelftools
Livre
Biblioteca em Python para parsear binários ELF.
Nome
Licença
Descrição
Binary Ninja
Comercial
Novo disassembler que teoricamente compete com o IDA. Possui versão online gratuita mediante registro.
Ghidra
Livre
Disassembler livre lançado pela NSA. Temos um treinamento em vídeo sobre ele.
Hopper
Comercial
Disassembler com foco em binários de Linux e macOS.
IDA
Comercial
Disassembler interativo padrão de mercado. Possui versão freeware.
Nome
Licença
Descrição
dnSpy
Livre
Somente para .NET, descompila, debuga e (dis)assembla.
edb (Evan's Debugger)
Livre
Debugger gráfico (Qt) com foco em binários ELF no Linux.
GDB (GNU Debugger)
Livre
Super conhecido debugger pra Linux do projeto GNU. Tem uma versão não oficial pra Windows também. É modo texto, mas possui vários front-ends como GDBFrontend , dentre outros .
GEF
Livre
O G DB E nhanced F eatures extende o GDB com recursos para engenharia reversa.
HyperDbg
Livre
Debugger que roda no nível do hypervisor, também conhecido como ring -1.
OllyDbg
Freeware
Poderoso debugger, apesar de não mais mantido.
PEDA
Livre
O P ython E xploit D evelopment A ssistance também extende o GDB, assim como o GEF. A interface é um pouco diferente, no entanto.
WinDbg
Freeware
Debugger ring0/3, parte integrante do SDK do Windows.
x64dbg
Livre
Debugger user-mode para Windows com suporte a 32 e 64-bits.
Nome
Licença
Descrição
de4dot
Livre
Para .NET. Conhece vários ofuscadores e permite trabalhar genericamente também.
Threadtear
Livre
Para programas feito em Java. Suporta os ofuscadores mais comuns como Stinger e ZKM.
Nome
Licença
Descrição
ILSpy
Livre
Descompilador multiplataforma para .NET.
Genéricos (C, C++, Delphi, etc)
Nome
Licença
Descrição
Reko
Livre
Descompilador genérico com versão de linha de comando, gráfica e até web.
RetDec (Retargetable Decompiler)
Livre
Descompilador para C/C++ feito pelo time do Avast. Inclui detector de compilador e packer, plugins para IDA e radare2.
Snowman
Livre
Descompilador livre para C/C++. Pode ser usado como plugin no IDA, x64dbg, etc.
Nome
Licença
Descrição
CFR
Livre
Descompilador para Java de linha de comando. O output é o código fonte e só.
IntelliJ IDEA
Mista
Na verdade é uma IDE para programação em Java mas mesmo a versão Community possui descompilador e debugger para classes compiladas em Java.
JD-GUI
Livre
Descompilador para Java com GUI.
Procyon
Livre
Para Java, com suporte a recursos novos da linguagem. É modo texto mas há GUI's disponíveis documentadas no link.
Nome
Licença
Descrição
VB Decompiler
Comercial
Descompilador para VB5/6 e disassembler para VB .NET.
Nome
Licença
Descrição
Qiling
Livre
Framework que combina emulação com instrumentação de binários. É possível emular programas de Windows e Linux, além de outros SOs, incluindo ring0.
Speakeasy
Livre
Emulador feito pela FireEye, inicialmente para programas nativos de Windows (ring0) mas possui um crescente suporta à programas em usermode (ring3), emulando várias das funções da Windows API.
Nome
Licença
Descrição
angr
Livre
Framework para análise estática e simbólica de binários.
Frida
Livre
Framework para instrumentação dinâmica de binários.
PANDA
Livre
Plataforma de análise dinâmica baseada no QEMU, que faz até replay de ações.
Radare
Livre
Suíte completa com debugger, disassembler e outras ferramentas para quase todo tipo de binário existente!
Nome
Licença
Descrição
Process Explorer
Freeware
Clássica ferramenta do conjunto SysInternals, que exibe muito mais que o Gerenciador de Tarefas comum.
System Explorer
Livre
Versão do Pavel Yosifovich que conta com algumas vantagens sobre o Process Explorer, como visualizar informações de processos protegidos (através de um driver), listar todas as threads abertas no Windows, todos os jobs, etc.
System Informer (antigo Process Hacker)
Livre
Talvez o melhor da categoria. Mostra os handles, objetos, processos, quem tá usando o que e muita mais.
Existem outros projetos como Limon, Detux, HaboMalHunter, mas na lista abaixo procurei deixar somente os que estão ativos.
Nome
Licença
Descrição
LiSa
Livre
Possui uma API bem simples e suporta binários ELF compilados para x86, x86-64, ARM e MIPS.
Esta lista não inclui serviços de sandbox puramente comerciais.
Nome
Licença
Descrição
DRAKVUF Sandbox
Livre
Projeto co-financiado pelo CERT da Polônia que usa o engine DRAKVUF para criar uma sandbox de Windows 7 ou Windows 10 sem agente no guest .
CAPE
Livre
Sandbox específica para extração de configuração de malware.
Cuckoo
Livre
Provavelmente a sandbox mais popular e utilizada.
Nome
Licença
Descrição
Any.Run
Community
Apesar do nome, só suporta artefatos de Windows, mas é muito bom!
Hybrid Analysis
Community
Sandbox muito boa. Também é um portal de investigação inclusive com suporte à regras de Yara.
Joe Sandbox
Community
Um dos primeiros serviços. Suporta ELF (x86 e x86-64), PE e documentos.
Visualizadores Hexadecimais
Nome
Licença
Descrição
hdump
Livre
Clone nosso 💚, multiplataforma (funciona no Windows!) do hexdump que imita a saída do hd .
heksa
Livre
Multiplataforma, com saída colorida e recursos interessantes como seek negativo (a partir do fim do arquivo).
HexLasso
Gratuito
Visualizador web que faz análises estatísticas visuais muito úteis.
hexyl
Livre
Multiplataforma, também com output colorido, exibição de borda, etc.
hexdump/hd
Livre
Padrão no BSD e Linux. Se chamado por "hd" exibe saída em hexa/ASCII.
od
Livre
Padrão no UNIX e Linux. O comando od -tx1 produz uma saída similar à do hd .
xxd
Livre
Vem com o vim. Uma saída similar à do hd é obtida com xdd -g1 .
Abaixo um comparativo onde dumpamos os primeiros 32 bytes do binário /bin/ls utilizando os visualizadores acima:
$ hdump -n 32 /bin/ls
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00 |..(.....!>..4...|
$ heksa -l 32 /bin/ls
00000┊7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00┊.ELF...Ø ØØØØØØØØ
00010┊03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00┊.Ø(Ø.ØØØ !>ØØ4ØØØ
$ hexyl -n32 /bin/ls
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 7f 45 4c 46 02 01 01 00 ┊ 00 00 00 00 00 00 00 00 │•ELF•••0┊00000000│
│00000010│ 02 00 3e 00 01 00 00 00 ┊ fc 4a 40 00 00 00 00 00 │•0>0•000┊×J@00000│
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘
$ hd -n32 /bin/ls
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00 |..(.....!>..4...|
00000020
$ od -Ax -tx1 -N32 /bin/ls
0000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
0000010 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00
0000020
$ xxd -g1 -l32 /bin/ls
00000000: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010: 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00 ..(.....!>..4...
Nome
Licença
Descrição
Kaitai Struct
Livre
Se você pensa em parsear um formato desconhecido ou tá estudando PE/ELF, vale olhar este gerador de parser livre.
Intezer Analyzer
Community
Online. Requer um pequeno cadastro. Tem um recursos de identificar "genes" estaticamente de famílias de binários.