Ferramentas
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.
Editores Hexadecimais
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 |
---|---|---|
Shareware | Multiplataforma, bastante usado. Suporta templates e scripts. Alguns dizem que é o melhor atualmente. | |
Livre | Editor de interface de texto (TUI), similar ao HT Editor. Tem versão para DOS/Windows mas reina mesmo é no Linux. | |
Livre | Editor gráfico multiplataforma capaz de exibir o binário graficamente, além de suportar expressões regulares na busca. | |
Livre | ||
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. | |
Comercial | Pago, somente para Windows, antigo, mas muito bem feito. | |
Livre | Somente para macOS, com recursos legais como diff e data inspector. | |
Shareware | Linux, macOS e Windows. Tem templates (chamados de "grammars"), scripting em Python e Lua e compara binários. | |
Livre | Baseado na ncurses, portanto de interface gráfica de texto. Tinha potencial, mas o desenvolvimento parou no final de 2022. | |
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. | |
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! | |
Freeware | Bem bom. Possui recursos extras como geração de hashes e suporte a abrir discos. | |
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. | |
Livre | Nova proposta de um editor especificamente para engenharia reversa. | |
Comercial | Para macOS, desenvolvido por quem faz o Hexinator. Tem o mesmo nível de recursos. | |
Comercial | Editor com edições especiais focadas em forense, mas faz tudo que os outros fazem também. Somente para Windows. | |
Livre | Multiplataforma, recursos interessantes. Infelizmente o desenvolvimento parou em 2017. | |
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 |
---|---|---|
Livre | Detecta as capacidades de executáveis PE e shellcodes para Windows. | |
Freeware | Sendo parte do Explorer Suite, é na real um editor de PE. Com ele é possível adicionar imports, remover seções, etc. | |
Freeware | Detecta compilador, linker, packer e protectors em binários. Também edita os arquivos. | |
Freeware | Analisador de PE de linha de comando disponível no SDK do Visual Studio. | |
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. | |
Freeware | Detecta compilador, packer, protectors e edita os arquivos, além de suportar vários plugins loucos. Tem versão VIP mediante doação. | |
Livre | Mais um nacional pra uma primeira impressão de arquivos suspeitos, URLs e domínios. Checa também APKs. | |
Livre | Parte do GNU binutils, também analisa PE, além de ELF, a.out, etc. | |
Freeware | Analisador gráfico (Qt) multiplataforma que também detecta packers/protectors. | |
Livre | Analisador online muito legal! | |
Freeware | Analisador de PE padrão da indústria, com foco em malware. Tem versão Pro (paga). | |
Livre | Também parte do binutils, analisador de ELF. | |
Livre | ||
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 |
---|---|---|
Livre | Binary File Descriptor é a biblioteca usada por programas como readelf e objdump. Tem suporte a muitos tipos de arquivos, incluindo PE e ELF, claro. | |
Livre | Nossa 💚 biblioteca multiplataforma para parsing de arquivos PE. | |
Livre | Biblioteca em C++ para PE usada pelo PE-Bear. | |
Livre | Famosa biblioteca em Python pra fazer qualquer coisa com arquivos PE. | |
Livre | Biblioteca em .Net para PE. | |
Livre | Biblioteca em Java para PE. | |
Livre | Biblioteca em Python para parsear binários ELF. |
Assemblers
Nome | Licença | Descrição |
---|---|---|
Livre | Assembler bem recente que já vem com vários exemplos de código. Windows e Linux. | |
Livre | Também chamado simplesmente de as, é o assembler do projeto GNU e provavelmente já está instalado no seu Linux! | |
Freeware | ||
Livre | ||
Livre | Multiplataforma, escrito com base no NASM pra ser um substituto mas acho que não vingou. hehe |
Disassemblers
Nome | Licença | Descrição |
---|---|---|
Comercial | ||
Livre | ||
Comercial | Disassembler com foco em binários de Linux e macOS. | |
Comercial | Disassembler interativo padrão de mercado. Possui versão freeware. |
Debuggers
Nome | Licença | Descrição |
---|---|---|
Livre | Somente para .NET, descompila, debuga e (dis)assembla. | |
Livre | Debugger gráfico (Qt) com foco em binários ELF no Linux. | |
Livre | ||
Livre | O GDB Enhanced Features extende o GDB com recursos para engenharia reversa. | |
Livre | Debugger que roda no nível do hypervisor, também conhecido como ring -1. | |
Freeware | Poderoso debugger, apesar de não mais mantido. | |
Livre | O Python Exploit Development Assistance também extende o GDB, assim como o GEF. A interface é um pouco diferente, no entanto. | |
Freeware | Debugger ring0/3, parte integrante do SDK do Windows. | |
Livre | Debugger user-mode para Windows com suporte a 32 e 64-bits. |
Desofuscadores
Nome | Licença | Descrição |
---|---|---|
Livre | Para .NET. Conhece vários ofuscadores e permite trabalhar genericamente também. | |
Livre | Para programas feito em Java. Suporta os ofuscadores mais comuns como Stinger e ZKM. |
Descompiladores
.NET
Nome | Licença | Descrição |
---|---|---|
Livre | Descompilador multiplataforma para .NET. |
Delphi
Nome | Licença | Descrição |
---|---|---|
Livre | Para binários compilados em Delphi. |
Genéricos (C, C++, Delphi, etc)
Nome | Licença | Descrição |
---|---|---|
Livre | Descompilador genérico com versão de linha de comando, gráfica e até web. | |
Livre | Descompilador para C/C++ feito pelo time do Avast. Inclui detector de compilador e packer, plugins para IDA e radare2. | |
Livre | Descompilador livre para C/C++. Pode ser usado como plugin no IDA, x64dbg, etc. |
Java
Nome | Licença | Descrição |
---|---|---|
Livre | Descompilador para Java de linha de comando. O output é o código fonte e só. | |
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. | |
Livre | Descompilador para Java com GUI. | |
Livre | Para Java, com suporte a recursos novos da linguagem. É modo texto mas há GUI's disponíveis documentadas no link. |
Visual Basic
Nome | Licença | Descrição |
---|---|---|
Comercial | Descompilador para VB5/6 e disassembler para VB .NET. |
Emuladores
Nome | Licença | Descrição |
---|---|---|
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. | |
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. |
Frameworks
Nome | Licença | Descrição |
---|---|---|
Livre | Framework para análise estática e simbólica de binários. | |
Livre | Framework para instrumentação dinâmica de binários. | |
Livre | Plataforma de análise dinâmica baseada no QEMU, que faz até replay de ações. | |
Livre | Suíte completa com debugger, disassembler e outras ferramentas para quase todo tipo de binário existente! |
Monitores de Processos
Nome | Licença | Descrição |
---|---|---|
Freeware | Clássica ferramenta do conjunto SysInternals, que exibe muito mais que o Gerenciador de Tarefas comum. | |
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. | |
Livre | Talvez o melhor da categoria. Mostra os handles, objetos, processos, quem tá usando o que e muita mais. |
Sandboxes (Linux)
Existem outros projetos como Limon, Detux, HaboMalHunter, mas na lista abaixo procurei deixar somente os que estão ativos.
Nome | Licença | Descrição |
---|---|---|
Livre | Possui uma API bem simples e suporta binários ELF compilados para x86, x86-64, ARM e MIPS. |
Sandboxes (Windows)
Esta lista não inclui serviços de sandbox puramente comerciais.
Nome | Licença | Descrição |
---|---|---|
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. | |
Livre | Sandbox específica para extração de configuração de malware. | |
Livre | Provavelmente a sandbox mais popular e utilizada. |
Sandboxes (Online)
Nome | Licença | Descrição |
---|---|---|
Community | Apesar do nome, só suporta artefatos de Windows, mas é muito bom! | |
Community | Sandbox muito boa. Também é um portal de investigação inclusive com suporte à regras de Yara. | |
Community | Um dos primeiros serviços. Suporta ELF (x86 e x86-64), PE e documentos. |
Visualizadores Hexadecimais
Nome | Licença | Descrição |
---|---|---|
Livre | Clone nosso 💚, multiplataforma (funciona no Windows!) do hexdump que imita a saída do hd. | |
Livre | Multiplataforma, com saída colorida e recursos interessantes como seek negativo (a partir do fim do arquivo). | |
Gratuito | Visualizador web que faz análises estatísticas visuais muito úteis. | |
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 de um binário /bin/ls
utilizando os visualizadores acima:
Outras
Nome | Licença | Descrição |
---|---|---|
Livre | Se você pensa em parsear um formato desconhecido ou tá estudando PE/ELF, vale olhar este gerador de parser livre. | |
Community | Online. Requer um pequeno cadastro. Tem um recursos de identificar "genes" estaticamente de famílias de binários. |
Last updated