# Breakpoints promíscuos

Caloni, 2010-07-26 [up] [copy]

Ontem falei sobre como "brincar" com os breakpoints promíscuos, ou seja, aqueles que topam qualquer processo. Isso é muito simples de se fazer:

  • Configure uma VM para bootar em kernel debug.
  • Encontre um processo qualquer (vamos usar o notepad pra variar?).
  • Reabra os símbolos de user mode nele.
  • Defina um breakpoint em alguma DLL de user mode.

Como meus leitores são muito espertos vou partir para o momento após rodarmos um notepad.exe:

   
   kd> !process 0 0 notepad.exe
   PROCESS 81681be0  SessionId: 0  Cid: 0598    Peb: 7ffd7000  ParentCid: 0200
       DirBase: 08740260  ObjectTable: e18ee8d8  HandleCount:  29.
       Image: notepad.exe
   
   kd> .process /i 81681be0
   You need to continue execution (press 'g' <enter>) for the context
   to be switched. When the debugger breaks in again, you will be in
   the new process context.
   kd> g
   Break instruction exception - code 80000003 (first chance)
   nt!RtlpBreakWithStatusInstruction:
   80527bdc cc              int     3
   kd> .reload /user
   Loading User Symbols
   .......................
   kd> bp user32!MessageBoxExW
   kd> g
   Breakpoint 0 hit
   USER32!MessageBoxExW:
   001b:7e3a0838 8bff            mov     edi,edi
   kd> du poi(esp+8)
   0007cfb8  "naoexistetralala.txt.Arquivo não"
   0007cff8  " encontrado..Verifique se o nome"
   0007d038  " do arquivo correto foi especifi"
   0007d078  "cado."
   kd> ezu poi(esp+8) "Esse arquivo não existe! Mas é muito mané, não é mesmo?"
   kd> g

O screenshot diz tudo:

Agora a parte mais divertida: experimente com outro notepad, ou com o explorer =)


# Sétimo Encontro de Programadores C++

Caloni, 2010-07-26 [up] [copy]

Mais um fim-de-semana no ócio e na vadiagem. Tenho que manter minhas qualidades de bom programador que sou: preguiçoso, impaciente e pretensioso.

Mas nem por isso deixei de terminar uma primeira versão do aplicativo que irei usar como base na minha palestra do nosso próximo encontro C++: Crash Dump Analysis. Se alguém tiver dicas de quais os problemas mais difíceis do Universo para analisar em um dump de memória, comente a respeito e veremos o que dá pra fazer.

Enquanto isso, continuo descobrindo maravilhas do WinDbg. Essa semana fiquei brincando de colocar breakpoint em user-mode, mas depurando o kernel, como fizeram os rapazes do Ntdebugging. A conclusão é que ele vale para todos os aplicativos abertos. Tente com o MessageBox!

   
   !process 0 0 notepad.exe
   .reload /user
   bp user32!MessageBoxW

Mas devaneio. Talvez outra boa qualidade de um bom programador.


# Twitter, eu?

Caloni, 2010-07-28 [up] [copy]

Fico meio receoso de comentar aqui que, sim, eu tenho twitter, e, sim, sou praticante de mais uma das artes da vadiagem. Até porque se 5% dos meus tweets tiver alguma relação com o conteúdo desse blogue, é  muito. O resto são comentários sobre economia&finanças, notícias aleatórias sobre alguma descoberta científica (ou não), dicas rápidas sobre cinema e sabe-lá-deus-o-que-mais.

E isso não vai mudar. É meu twitter pessoal. Aliás, meu próprio blogue também é pessoal, e é provável que no futuro ele que mude, e não o contrário.

Isso não quer dizer que vou deixar de ser programador. Acho que depois de dez anos programando sem parar essa opção não existe mais, pois as habilidades adquiridas já foram registradas no meu código genético. Só que, no meu caso, ser programador não evita que eu tenha uma porção de outros interesses e que me dedique a eles tanto quanto programação.

Dito isso, segue mais um ponteiro perdido pela rede.


[2010-06] [2010-08]