команда функции windbg disassemble (uf) нуждается в некотором форматировании - PullRequest
1 голос
/ 25 мая 2009

Я сделал команду uf в windbg после прикрепления notepad.exe Команда была UF Notepad! WinMain я получил следующий вывод

0:000> uf notepad!WinMain
notepad!WinMain:
0021138d mov     edi,edi
0021138f push    ebp
00211390 mov     ebp,esp
00211392 sub     esp,1Ch
00211395 push    esi
00211396 push    edi
00211397 push    6
002113c8 test    eax,eax
002113ca jl      notepad!WinMain+0x118 (00211c93)

notepad!WinMain+0x43:
002113d0 push    ebx
002113d1 push    dword ptr [ebp+14h]
002113d4 push    edi
002113d5 call    notepad!SkipProgramName (00213170)
002113e5 je      notepad!WinMain+0x10e (00211ca9)

notepad!WinMain+0x5e:
002113eb push    esi
002113ec push    esi
002113ed call    dword ptr [notepad!_imp__GetCurrentProcessId (00211084)]

и т. Д. Если вы заметили, что после каждой инструкции перехода создается новый блок, например

002113ca jl      notepad!WinMain+0x118 (00211c93)

notepad!WinMain+0x43:

и

002113e5 je      notepad!WinMain+0x10e (00211ca9)

notepad!WinMain+0x5e:

Так что я хотел знать настройку в WinDbg, где я могу опустить создание нового блока при каждом переходе для разборки функции. Почему я не могу получить выходные данные так, как получаю их командой U?

Так что я ищу такой вариант

002113c8 test    eax,eax002113ca 
jl      notepad!WinMain+0x118 (00211c93)
**blank line omitted**
**notepad!WinMain+0x43:** omitted**
002113d0 push    ebx002113d1 push    dword ptr [ebp+14h]

Любая помощь?

1 Ответ

5 голосов
/ 25 мая 2009

потому что код функции потенциально рассредоточен по всему разделу кода (вплоть до компоновщика, который решает, куда помещать что-либо, и, как правило, он заканчивает перемещением частей, которые выполняются больше всего вверх)

сейчас, u не волнует, интересует ли вас определенная функция - она ​​просто выдает инструкции последовательно, в то время как uf должна искать все соответствующие кодовые блоки и форматирует их вместе, чтобы это выглядело целой функцией.

edit: к сожалению (насколько я знаю) не существует немедленной настройки для windbg, чтобы приспособиться к вашим потребностям - здесь вам, вероятно, придется прибегнуть к какой-то постобработке (скрипт pretty-print для удаления пустых строк и все, что вам нужно).

...