O Debugger
Last updated
Last updated
Na sua máquina Windows, baixe o snapshot mais recente do x64dbg. É um arquivo .zip chamado snapshot_YYYY-MM-DD_HH-MM.zip que vai variar dependendo da data e hora do release (quando o software é liberado) pelos autores do projeto.
Ao descompactar o arquivo .zip, execute o arquivo x96dbg.exe dentro do diretório release. Esse nome deve-se ao fato de que o x64dbg tem suporte tanto a 32 quanto a 64-bits, então o autor resolveu somar 32+64 e nomear o binário assim.
O x96dbg.exe é o launcher do x64dbg e tem três botões. Escolha Install e responda "Sim" para todas as perguntas.
À esta altura você já deve ter o atalho x32dbg na área de trabalho. Ao clicar, você verá a tela inicial do debugger. A ideia é que você depure binários (.exe, .dll, etc) portanto, vamos abrir o AnalyseMe-00.exe e seguir.
Vá em Options -> Preferences e desmarque a caixa System breakpoint. Isso vai fazer com que o debugger pare direto no entrypoint de um programa ao abrirmos.
Clique em Save.
Existem muitas outras opções de configuração que você pode experimentar, mas para o momento isso basta.
Descompacte e abra o AnalyseMe-00.exe
no x32dbg clicando em File -> Open. Você deverá ver uma tela como esta:
A aba CPU é sem dúvida a mais utilizada no processo de debugging, por isso, fizemos questão de nomear algumas de suas áreas, que descreveremos agora.
Nesta região são exibidos os endereços (VA's), os opcodes e argumentos em bytes de cada instrução, seu disassembly (ou seja, o que significam em Assembly) e alguns comentários úteis na quarta coluna, como a palavra EntryPoint, na primeira instrução do programa a ser executada (em 401000 no nosso exemplo).
Tomei a liberdade de nomear essa seção de Helper, porque de fato ela ajuda. Por exemplo, quando alguma instrução faz referência a um dado em memória ou em um registrador, ela já mostra que dado é este. Assim você não precisa ir buscar. É basicamente um economizador de tempo. Supondo que o debugger esteja parado na instrução push esi
, no Helper aparecerá o valor do registrador ESI.
O dump é um visualizador que você pode usar para inspecionar bytes em qualquer endereço. Por padrão há cinco abas de dump, mas você pode adicionar mais se precisar.
Como o nome sugere, mostra o valor de cada registrador do processador.
Mostra a pilha de memória, onde o endereço com fundo em preto indica o topo da pilha.
Na próxima seção, iremos depurar o binário de exemplo e devemos nos atentar às informações exibidas em cada uma das regiões da tela do debugger, acima apresentadas.