Ir para conteúdo

winedbg com --gdb [Resolvido]


gzn

Posts Recomendados

Vi nessa pergunta no stackexchange que parece ser possível usar o radare no linux e depurar um exe. Mas pra isso precisamos iniciar o winedbg com argumentos como --gdb e --no-start. Eu tentei isso e também não deu certo aqui.

Se você também esta tendo esse problema (testei aí na sua distro linux) comente nessa issue aqui e se inscreva na lista. Quanto mais gente tiver mais chance terá de ser corrigido.

Colaborar com software livre também é assim. Você nem sempre envia códigos, você envia bugs, sugestões, etc. Não tenham receio, participem.

Obrigado.

:D

Link para o comentário
Compartilhar em outros sites

Atualizei o wine aqui e funcionou!

1º Inicie o winedbg com alguns parâmetros

gzn@note ~/Downloads % winedbg --gdb --no-start crackme_level1.exe
002b:002c: create process 'Z:\home\gzn\Downloads\crackme_level1.exe'/0x110770 @0x45f050 (344064<1386>)
002b:002c: create thread I @0x45f050
target remote localhost:51853
002b:002c: loads DLL C:\windows\system32\KERNEL32.dll @0x7b410000 (0<0>)
002b:002c: loads DLL C:\windows\system32\ntdll.dll @0x7bc10000 (0<0>)
002b:002c: loads DLL C:\windows\system32\msvcrt.dll @0x7ec00000 (0<0>)
0000002b:0000002c: exception code=0x80000003
Unknown or malformed query Xfer:exec-file:read::0,40
No support for verbose packet File:open:2f70726f632f34342f6d617073,0,1c0
No support for verbose packet File:open:2f70726f632f34342f6d617073,0,1c0

2º Abra outro terminal e inicie o radare

gzn@note ~ % r2 -b 32 -D gdb -d gdb://localhost:51853
= attach 44 0
-- Everything up-to-date.

:)

Captura de tela de 2018-03-12 14-23-53.png

Link para o comentário
Compartilhar em outros sites

Aproveitando a motivação dada pelo workshop do Júlio Neves, vamos ao shell para exercitar!

O winedbg com proxy gdb não nos dá sempre o mesma porta. Se sabemos um tiquinho de shell dá pra resolver isso. Veja abaixo um exemplo simples:

 1 #!/bin/bash
 2 
 3 # a gente salva a saída do windbg num arquivo
 4 log=winedbg.log
 5 winedbg --gdb --no-start $1 2> $log&
 6 
 7 # espera ele escrever target
 8 while ! grep -qF target $log
 9 do
10     sleep 1
11 done
12 
13 # pegamos só o que interessa endereço:porta
14 if awk 'NR==3{print $3}' winedbg.log > $0.remote
15 then
16 
17     # 32 ou 64 bits?
18     arch=64
19     if file $1 |grep -qF PE32
20     then
21         arch=32
22     fi
23 
24     # agora chama o radare
25     r2 -b $arch -d -D gdb gdb://$(<$0.remote)
26 fi

Assim a gente não tem que ficar abrindo outros terminais e também não tem que ficar copiando e colando a saída do winedbg manualmente né... B|

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...