Просмотр аргументов функции в WinDbg - PullRequest
4 голосов
/ 18 августа 2011

Я что-то перепроектировал. Я хотел бы просмотреть хорошую распечатку аргументов, передаваемых различным системным функциям в WinDbg. Вроде как OllyDbg. Как мне сделать это без символов?

Спасибо.

1 Ответ

3 голосов
/ 03 апреля 2015

Вы не можете просматривать его как ollydbg / Immunity отладчик.Но вы можете извлечь аргументы из стека вручную.Вы должны проверить ссылку API в MSDN и получить дополнения из стека.

Например, чтобы получить аргументы MessageBoxW (), вы можете установить точку останова в MessageBoxW ().

0:002> g
(9e0.91c): Break instruction exception - code 80000003 (first chance)
eax=7efa9000 ebx=00000000 ecx=00000000 edx=76f6f8ea esi=00000000 edi=00000000
eip=76ee000c esp=00f3ff5c ebp=00f3ff88 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!DbgBreakPoint:
76ee000c cc              int     3
0:005> bp user32!MessageBoxW
0:005> g
Breakpoint 0 hit
eax=00000001 ebx=00000000 ecx=002a2fc6 edx=00000000 esi=002b7f00 edi=00000003
eip=749ffd3f esp=000cf608 ebp=000cf624 iopl=0         nv up ei pl nz na po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
USER32!MessageBoxW:
749ffd3f 8bff            mov     edi,edi

Теперь, когда достигнута точка останова, вы можете получить их из стека.MessageBoxW () принимает 4 аргумента.Таким образом, мы выгружаем 5 элементов стека из стека.

0:000> dd esp L5
000cf608  01001fc4 000806aa 002b7f00 002a3074
000cf618  00000040

Где 0x01001fc4 - это адрес возврата, куда MessageBoxW вернется.И следующие 4 указателя являются аргументами, передаваемыми MessageBoxW ().Теперь вы можете сбросить их соответственно.

0:000> du 002b7f00
002b7f00  "Cannot find "foo""
0:000> du 002a3074
002a3074  "Notepad"

Надеюсь, это поможет:)

...