[Windbg Script] Desabilitando IsDebuggerPresent()

Por Roberto Alexis Farah

Alguns anos atrás precisei depurar uma aplicação sem símbolos ou código fonte. Para piorar a situação, descobri que o executável tinha algum tipo de proteção anti-depurador.

Depois de analisar a listagem disassemblada usando DumpBin, descobri o truque. A aplicação usava IsDebuggerPresent() e, além disso, chamadas assembly adicionais para checar a existência do depurador.

Nesse caso, fiz o depurador trabalhar mudando a aplicação na memória depois de conectar o depurador a ela.

Então, algum tempo mais tarde decidi criar esse simples script “só por diversão” que desabilita IsDebuggerPresent().

Basta conectar o depurador na aplicação usando IsDebuggerPresent() e rodar o script usando “g” para continuar a execução.

Eis imagens e código fonte:

 

Debugging Toolbox.