如何使用 Windbg 和 SOS 在托管代码中找到方法的名称?

逆向工程 风袋 。网
2021-06-11 03:07:52

我有一个崩溃转储,应用程序肯定会在 JIT 优化的汇编代码中崩溃。我知道方法的起始地址。如何使用 Windbg 和 SOS 扩展找到它的名称?

目前我只是探索域中的每个程序集,然后在每个程序集中我转储所有模块,然后在每个模块中我转储方法表,希望某些方法地址等于我搜索的方法。它需要我永恒......

1个回答

您可以使用ip2mdsos 命令获取 jitted 代码的方法名称。

0:016> k
 # Child-SP          RetAddr           Call Site
00 00000000`013fe688 00007ffb`4567ddb8 win32u!NtUserWaitMessage+0x14
01 00000000`013fe690 00007ffb`45611535 System_Windows_Forms_ni+0x2cddb8


0:016> !ip2md 00007ffb`45611535 
MethodDesc:   00007ffb454a25e8
Method Name:  System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr, Int32, Int32)
Class:        00007ffb4540c9f8
MethodTable:  00007ffb45743f78
mdToken:      00000000060052f3
Module:       00007ffb453b1000
IsJitted:     yes
CodeAddr:     00007ffb45610fd0
Transparency: Safe critical