O Debugger
Instalação
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 64 quanto a 32-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 x64dbg na sua área de trabalho. Dê um duplo-clique nele e você verá a tela inicial do debugger.
Configuração
Se o x64dbg estiver em português, mude o idioma para inglês. Isso é necessário, pois vários termos em inglês não estão traduzidos e isso pode dificultar o aprendizado. Para mudar o idioma, vá em Opções ► Idiomas e escolha [en_US] American English - United States. Você precisará fechar o x64dbg e abri-lo novamente para que o novo idioma entre em vigor. Depois que o software estiver em inglês, siga com a configuração:
Vá em Options ► Preferences e, na aba Events, desmarque a caixa System Breakpoint. Isso vai fazer com que o debugger pare direto no entrypoint de um programa ao abrirmos.
Clique na aba Engine e marque a caixa Disable ASLR, que desabilita a randomização de endereços de memória.
Clique em Save.
Existem muitas outras opções de configuração que você pode experimentar. Para o momento, essas bastam.
Tela Inicial
Na tela inicial do x64dbg, clique em File ► Open. Localize o arquivo analyseme00.exe
e clique em em Open. Você deverá ver uma tela como esta:

A aba CPU, realçada em preto, é sem dúvida a mais utilizada no processo de debugging, por isso, fizemos questão de nomear algumas de suas áreas, que descreveremos agora.
Disassembly
Nesta região são exibidos os endereços (VAs), opcodes e argumentos de cada instrução, seu disassembly (ou seja, o que os bytes significam em Assembly) e alguns comentários na quarta coluna, que podem ser automáticos (gerados pelo x64dbg ou por plugins) ou inseridos por você. No endereço inicial, por exemplo, há o texto OptionalHeader.AddressOfEntryPoint na quarta coluna, que nos diz que aquela instrução é a primeira executada pelo programa. Dizemos também que ela é o entrypoint do programa.
Helper
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. Para entender melhor, suponha que o debugger esteja parado numa instrução que esteja lendo de [rsp+20]
. No Helper, aparecerá o valor que está na posição de memória RSP+20, assim você não precisa ir até lá manualmente para ver tal valor.
Dump
O dump é um visualizador que você pode usar para inspecionar bytes em qualquer endereço. Por exemplo, você pode ir até o endereço RSP+20 e ver o que tem lá.
Há cinco abas de dump, onde cada uma pode mostrar o conteúdo de uma região de memória diferente para o mesmo alvo. Há ainda as abas Watch, Locals e Struct, que fogem do escopo deste livro, mas também são ferramentas de inspeção.
Registradores
Como o nome sugere, nesta região são mostrados os valores de cada registrador do processador, incluindo o do registrador de flags. Na verdade, o x64dbg vai um pouco além e mostra também variáveis globais úteis como LastError
e LastStatus
, ambas modificadas por chamadas à algumas funções da API do Windows.
Convenção de Chamada
Nesta janela é possível configurar a convenção de chamada com a qual estamos trabalhando e o número de argumentos que você quer ver em cada chamada de função.
Pilha
Mostra a pilha de memória, onde o endereço com fundo em preto indica o topo da pilha, ou seja, o endereço que está em RSP.
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.
Last updated
Was this helpful?