在附加notepad.exe命令后,我在windbg中执行了一个uf命令,这是uf记事本!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)]
Run Code Online (Sandbox Code Playgroud)
如果您在每次跳转指令后发现它会创建一个新的块
002113ca jl notepad!WinMain+0x118 (00211c93)
notepad!WinMain+0x43:
Run Code Online (Sandbox Code Playgroud)
并在
002113e5 je notepad!WinMain+0x10e (00211ca9)
notepad!WinMain+0x5e:
Run Code Online (Sandbox Code Playgroud)
所以我想知道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]
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
因为功能代码可能分散在整个代码部分(直到链接器来决定放置什么内容,并且通常最终会将最常执行的部分移动到顶部)
现在,ü如果你有兴趣在一个特定的函数并不关心-它仅仅转储指令顺序,而UF具有查找所有相关的代码块并将它们格式化在一起,使其看起来整体功能.
编辑:不幸的是(据我所知)没有立即设置windbg来满足您的需求 - 在这里你可能不得不采取某种后处理(漂亮的打印脚本来删除空行和其他任何你需要).