program-windbg
Especialista em depuração de baixo nível no Windows usando WinDbg, CDB e a dbgeng.dll. Cobre análise de dumps de memória, inspeção de call stacks, avaliação de falhas (!analyze -v) e automação de scri
SKILL.mdskills/programs/program-windbg/SKILL.md
GitHubHabilidade de IA: WinDbg Automation e Depuração de Baixo Nível
Esta skill orienta a inteligência artificial a atuar como especialista em depuração avançada de processos e análise de falhas no ecossistema Windows, utilizando WinDbg, CDB (Console Debugger) e a API nativa dbgeng.dll.
🎯 Objetivo
Fornecer diretrizes técnicas para:
- Depurar processos em execução e analisar dumps de memória (
.dmp,.mdmp). - Automatizar tarefas de depuração via comandos do WinDbg e scripts JavaScript/WinDbg Preview.
- Interagir programaticamente com a engine de depuração através da
dbgeng.dll.
🧭 Quando Ativar
Ative esta skill quando o usuário solicitar:
- Análise de um crash dump ou BSOD (tela azul).
- Inspeção de call stacks, registradores ou estruturas internas de runtime.
- Automação de comandos do WinDbg/CDB para capturar estado de processos.
- Scripts de depuração que utilizam a API
dbgeng.dll.
🛠️ Comandos e Padrões do WinDbg
1. Análise de Dumps de Falha
Sempre inicie a análise de um dump com o comando de avaliação automática:
!analyze -v
Este comando fornece uma visão geral da exceção, call stack, módulos envolvidos e sugere a causa raiz.
2. Inspeção de Call Stacks
Para visualizar a pilha de chamadas completa de todas as threads:
~* k
Para focar em uma thread específica (ex: thread 0):
~0 s
k
3. Leitura e Escrita de Memória
- Ler memória em um endereço:
dd <address> L8 - Procurar por padrões de bytes na memória:
s -b 0x0 L?0xFFFFFFFFFFFFFFFF <byte_pattern>
4. Pontos de Parada (Breakpoints)
- Breakpoint simples:
bp <module>!<function> - Breakpoint condicional:
bp <address> "<command>; gc"
⚙️ Automação via CDB e Scripts
Execução Não-Interativa com CDB
Para capturar automaticamente o estado de um processo e gerar um dump:
cdb -p <PID> -c ".dump /ma C:\dumps\process.dmp; q" -G
Para analisar um dump existente e exportar o resultado para um arquivo:
cdb -z <dumpfile.dmp> -lines -c "!analyze -v; k; q" > C:\reports\analysis.txt
Scripts JavaScript no WinDbg Preview
O WinDbg Preview suporta scripts em JavaScript para automatizar a extração de dados complexos:
// script.js: Imprime todas as threads e seus IDs
function initializeScript() {
return [new host.apiVersionSupport(1, 3)];
}
function invokeScript() {
var threads = host.currentProcess.Threads;
for (var t of threads) {
host.diagnostics.debugLog("Thread ID: " + t.Id + "\n");
}
}
Para carregar e executar:
.scriptload C:\scripts\script.js
!invokeScript
🔗 Integração com a dbgeng.dll
Para interação programática nativa (C/C++), utilize a COM interface da dbgeng.dll:
Criar uma instância do Debug Client:
IDebugClient* client; DebugCreate(__uuidof(IDebugClient), (void**)&client);Anexar a um processo ou abrir um dump:
client->AttachProcess(0, pid, DEBUG_ATTACH_DEFAULT); client->WaitForEvent(0, INFINITE);Executar comandos e capturar saída: Utilize
IDebugControl::Executepara enviar comandos como!analyze -veIDebugOutputCallbackspara capturar o texto de saída.
🔗 Habilidades Relacionadas
- program-cheat-engine: Para manipulação de memória em runtime via Cheat Engine.
- memory-manipulation: Para vulnerabilidades de corrupção de memória.
- sast-code-review: Para revisão de código seguro.
- appsec-owasp-asvs: Para controles de segurança de aplicação.