depurando até o fim do mundo: técnicas e truques de windbg

57
Trilha C/C++ Wanderley Caloni Sócio-Desenvolvedor da

Upload: wanderley-caloni

Post on 22-Nov-2014

354 views

Category:

Software


8 download

DESCRIPTION

O programador C/C++ de médio e baixo nível em Windows precisa estar familiarizado com as potencialidades de suas ferramentas de trabalho. Entre elas, o WinDbg é de longe o mais completo e complexo, além de ser quase desconhecido pela comunidade. Essa palestra visa um público que deseja conhecer novas técnicas de depuração para problemas específicos, mas comuns, como leak de memória, travamento durante shutdown da máquina e análise de processos de maneira não-intrusiva.

TRANSCRIPT

Page 1: Depurando até o fim do mundo: técnicas e truques de WinDbg

Trilha C/C++

Wanderley CaloniSócio-Desenvolvedor da

Page 2: Depurando até o fim do mundo: técnicas e truques de WinDbg

Depurando até o fim do mundo: técnicas e truques de

WinDbg

Page 3: Depurando até o fim do mundo: técnicas e truques de WinDbg

Onde sou? Quem estou?

• Segurança da Informação– Sistema de Controle de Usuários e Aplicações– Criptografia de Discos

Page 4: Depurando até o fim do mundo: técnicas e truques de WinDbg

Onde sou? Quem estou?

• Análise de Trojans– Engenharia Reversa– Crash Dump Analysis

Page 5: Depurando até o fim do mundo: técnicas e truques de WinDbg

Onde sou? Quem estou?

• Mercado Financeiro– Alto Desempenho– Análise de Risco

Page 6: Depurando até o fim do mundo: técnicas e truques de WinDbg

Onde sou? Quem estou?

• Mercado Financeiro– Alto Desempenho– Algoritmos– Cotações– Mobile

Page 7: Depurando até o fim do mundo: técnicas e truques de WinDbg

Onde sou? Quem estou?

Page 8: Depurando até o fim do mundo: técnicas e truques de WinDbg

Onde sou? Quem estou?

Page 9: Depurando até o fim do mundo: técnicas e truques de WinDbg

Onde sou? Quem estou?

Page 10: Depurando até o fim do mundo: técnicas e truques de WinDbg

Vamos ao que interessa?

Page 11: Depurando até o fim do mundo: técnicas e truques de WinDbg

dd ed kv kvn . ~ .frame lm a .dvalloc .dvfree .symfix .reload !analyze –v r !uniqstack bp bl bm bc bd s !heap

dv bm dd poi(esp+8) !db !eb .sympath .srcpath .kvn .frame .cl

s .echo u –remote –premote –server .help symstore adplus logger logviewer !sym noisy .call wt !heap

l+* –flt s 1034 –p –a $$> <:-o

Page 12: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 13: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 14: Depurando até o fim do mundo: técnicas e truques de WinDbg

SOFTICE

Page 15: Depurando até o fim do mundo: técnicas e truques de WinDbg

SOFTICE

Page 16: Depurando até o fim do mundo: técnicas e truques de WinDbg

DEBUG.COM

Page 17: Depurando até o fim do mundo: técnicas e truques de WinDbg

DEBUG.COM

Page 18: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 19: Depurando até o fim do mundo: técnicas e truques de WinDbg

windbg.exe -k com:port=1,baud=115200,resets=0,reconnect -b

bcdedit /dbgsettingsbcdedit /copy {current}bcdedit set debug on

Page 20: Depurando até o fim do mundo: técnicas e truques de WinDbg

windbg.exe -k usb2:targetname=USBString -b

bcdedit /dbgsettingsbcdedit /copy {current}bcdedit set debug on

Page 21: Depurando até o fim do mundo: técnicas e truques de WinDbg

windbg.exe -k com:pipe,port=\\.\pipe\com_1,resets=0,reconnect -b

Page 22: Depurando até o fim do mundo: técnicas e truques de WinDbg

windbg.exe -k com:pipe,port=\\.\pipe\com_1,resets=0,reconnect -b

Page 23: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 24: Depurando até o fim do mundo: técnicas e truques de WinDbg

WELCOME TO THE REAL WORLD

Page 25: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 26: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 27: Depurando até o fim do mundo: técnicas e truques de WinDbg

NABUCODEBUGGER

Page 28: Depurando até o fim do mundo: técnicas e truques de WinDbg

.symfix

.sympath!sym noisy.reload [/f] [/i] ModuleName.extlm[l]

Page 29: Depurando até o fim do mundo: técnicas e truques de WinDbg

symstore.exe add /f Symbols.pdb /s <SymbolStore> /t “ProductName"

Page 30: Depurando até o fim do mundo: técnicas e truques de WinDbg

SRCSRV (SVN)

Page 31: Depurando até o fim do mundo: técnicas e truques de WinDbg

windbg.exe -server tcp:port=<n>windbg.exe -remote tcp:server=<ip>,port=<n>windbg.exe -remote tcp:server=<ip>,port=<n>windbg.exe -remote tcp:server=<ip>,port=<n>

Page 32: Depurando até o fim do mundo: técnicas e truques de WinDbg

dbgsrv.exe -t tcp:port=<n>windbg.exe -premote tcp:server=<ip>,port=<n>

Page 33: Depurando até o fim do mundo: técnicas e truques de WinDbg

TCP Client => ServerTCP Server => ClientSerial (??????)Named PipeSSL/SPIPE

(password, ipv6, ...)

Page 34: Depurando até o fim do mundo: técnicas e truques de WinDbg

selfie

Page 35: Depurando até o fim do mundo: técnicas e truques de WinDbg

.dump /ma <dump-file.dmp>

Page 36: Depurando até o fim do mundo: técnicas e truques de WinDbg

Adplus -Crash -pmn <proc-name>

Page 37: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 38: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 39: Depurando até o fim do mundo: técnicas e truques de WinDbg

!analyze -v!analyze -v!analyze -v!analyze -v!analyze -v!analyze -v!analyze -v!analyze -v

Page 40: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 41: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 42: Depurando até o fim do mundo: técnicas e truques de WinDbg

GLOBAL FLAGS

Page 43: Depurando até o fim do mundo: técnicas e truques de WinDbg

GLOBAL FLAGS

Page 44: Depurando até o fim do mundo: técnicas e truques de WinDbg

SXE, SXD, SXN, SXI

Page 45: Depurando até o fim do mundo: técnicas e truques de WinDbg

SXE ld:MinhaDLL.dll

Page 46: Depurando até o fim do mundo: técnicas e truques de WinDbg

logger process.exe

Page 47: Depurando até o fim do mundo: técnicas e truques de WinDbg

CODECOMPILEPROFILECODECOMPILEPROFILECODECOMPILEPROFILECODECOMPILEPROFILECODECOMPILEPROFILECODECOMPILEPROFILE...

WT

Page 48: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 49: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 50: Depurando até o fim do mundo: técnicas e truques de WinDbg

DEBUGGER

KERNEL

USER

PROCESS

CABLE

DEBUGGER

Page 51: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 52: Depurando até o fim do mundo: técnicas e truques de WinDbg

$<, $><, $$<, and $$><

Page 53: Depurando até o fim do mundo: técnicas e truques de WinDbg

#include < wdbgexts.h>

Page 54: Depurando até o fim do mundo: técnicas e truques de WinDbg
Page 55: Depurando até o fim do mundo: técnicas e truques de WinDbg

.hh <topic>

Page 56: Depurando até o fim do mundo: técnicas e truques de WinDbg

www.windbg.info

Page 57: Depurando até o fim do mundo: técnicas e truques de WinDbg

Perguntas?

[email protected]

saite

e-mail