Reversing

Caloni, 2026-03-13 computer reversing_tag blog

A depuração é o meu assunto favorito de ciência da computação. Para mim é até a mais ciência de todas (programação eu considero mais próxima até de matemática). A criação de teorias, testes, obtenção de teorias e a transpiração constante em busca de padrões e os diabos dos detalhes é o que praticamente me fez virar programador. Sem gostar dessa parte menos nobre onde precisamos escarafunchar os algoritmos que criamos ou mantemos, muito se perde de tempo no dia-a-dia. Afinal de contas, se você trabalha com algo que não gosta está perdendo seu tempo. Se depuração te atrai, tenho boas notícias sobre a área para você :).

Para começar a rodar seu código passo-a-passo comece com o artigo Guia básico para programadores de primeiro breakpoint. Se estiver usando outro ambiente adapte o que aprendeu para este ambiente. Os conceitos são os mesmos.

Não escrevi muitos posts sobre depuração depuração mesmo. Minha vibe gira mais em torno de descobrir como as coisas funcionam por trás dos panos, o que acaba sendo útil também quando você conhece o código-fonte, mas se transforma em um superpoder quando você descobre que se souber assembly você nem precisa do fontes.

Por isso estou listando posts com um viés mais sobre engenharia reversa do que depuração no sentido acadêmico da coisa. Considero conhecimento fundamental para não perder tempo se intimidando com a entranhas de um sistema. Não será o que você irá mexer sempre, apenas em casos exceptionais, mas te dará mais confiança ao longo do tempo para a depuração com o código-fonte.

E por isso mesmo tenho alguns artigos mais densos utilizando ferramentas mais complexas como WinDbg e IDA. Eu sempre apelo para o WinDbg porque programo para Windows e ele é o depurador definitivo para todos os casos. Ele é mantido pela Microsoft junto do sistema operacional e é possível depurar userland e kernel na mesma ferramenta. Seus comandos não são intuitivos, mas seu poder acaba compensando. Especialmente para reversa :).

Antes de saber como desmontar as coisas para descobrir erros ou comportamentos é bom ter uma noção de como as coisas deveriam funcionar. Esses dois primeiros artigos são leves e irão te guiar por este caminho. Os dois próximos já começam a adentrar em assuntos que um depurador master precisa dominar, como multithreading. O último deles abre o leque de aprendizados fundamentais.

A partir daí você terá alguns possíveis caminhos a seguir com mais ênfase. Pode se dedicar inteiramente ao baixo nível, mais próximo das entranhas da máquina e do sistema operacional. Eu não tenho muito aqui sobre kernel development, mas a depuração muitas vezes passa pelo kernel mode e assembly. Você pode pular esta série e a seguinte se não preferir se enveredar por caminhos tão escuros.

Este grupo abaixo é mais sobre conhecimento de sistema aliado à depuração efusiva. Deve sair desta lista com uma confiança muito boa em conseguir depurar qualquer coisa para Windows e outros SOs (o aprendizado de um acaba sendo uma escalada independente para outros).

Agora, se você sentir que sua vibe está mais para user land, talvez um escalation engineer que manja muito sobre os paranauê dos registros, coisas e tá, quem sabe uma boa não seja você praticar reversa e depuração de sistemas fechados? Nesta série tenho algumas brincadeiras que fiz no serviço e no lazer.

E é isso. Desculpe pela extensa lista. E ela não é final, há mais posts escondidos sobre esses assuntos por aqui. No futuro devo manter este artigo atualizado, talvez mais enxuto e focado ou estruturado por áreas específicas. Se você quiser algum tipo de contato eu criei um grupo de engenharia reversa no Telegram. Dá uma passada por lá.

Boas depuradas!

[prev: programming]