在WinDBG中创建符号或重命名函数



有办法重命名windbg中的函数吗?类似于使用符号。

例如,我们有一个函数,在windpg中被识别为";例如+0x14";。经过逆向工程,我知道这个函数正在调用一个蹦床,它将执行printf。现在,我想将";示例+0x14";至";示例printf";。

在其他调试器(如x64)中,这样做非常简单,但我在windbg中找不到这样做的方法。

最终,我想解析IAT中的地址,找到它们的引用(蹦床),重命名这些蹦床,让我的调试更容易。

有办法做到这一点吗?

有一个API可以实现这一点。不幸的是;命令";可以很容易地从调试器扩展创建一个。

有问题的API是IDebugSymbols3::AddSyntheticSymbol(https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/dbgeng/nf-dbgeng-idebugsymbols3-addsyntheticsymbol)或Unicode变体IDebugSymbols3::AddSyntheticSymbolWide(https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/dbgeng/nf-dbgeng-idebugsymbols3-addsyntheticsymbolwide)。

如果您想编写一个插件,您可以进一步。调试器有新的目标组合API(https://www.nuget.org/packages/Microsoft.Debugging.TargetModel.SDK)通过提供符号提供程序(DEBUG_SERVICE_symbol_provider/ISvcSymbolProvider),您可以定义自己的符号概念。唯一的样本(https://github.com/microsoft/WinDbg-Samples/tree/master/TargetComposition/TextDump)不幸的是,目前可用于该API表面还没有涵盖符号。在不久的将来(希望在一两个月内),同一回购中会有第二个样本,它将涵盖这一点,并允许对符号and类型系统进行大量动态操作和编辑。

JFYI:关于你对IAT的评论。调试器中包含的ImageInfo.jsJavaScript扩展已经解析了IAT,并通过数据模型公开了大部分信息。它公开的所有内容都在模块对象的Contents属性上。IAT信息在.Contents.Imports:内

0:007> dx -r3 @$curprocess.Modules[0].Contents.Imports
@$curprocess.Modules[0].Contents.Imports                
["KERNEL32.dll"] : KERNEL32.dll
ModuleName       : KERNEL32.dll
ResolvedModule   : C:WindowsSystem32KERNEL32.DLL
BaseAddress      : 0x7ff8eef70000
Name             : C:WindowsSystem32KERNEL32.DLL
Size             : 0xbd000
Contents        
ImageType        : PE
Functions       
[0x0]            : Named Import of 'SetEvent'
[0x1]            : Named Import of 'GlobalFree'
[0x2]            : Named Import of 'GetLocaleInfoW'
[0x3]            : Named Import of 'CreateFileW'
[0x4]            : Named Import of 'ReadFile'
...
["GDI32.dll"]    : GDI32.dll
ModuleName       : GDI32.dll
ResolvedModule   : C:WindowsSystem32GDI32.dll
BaseAddress      : 0x7ff8f0750000
Name             : C:WindowsSystem32GDI32.dll
Size             : 0x29000
Contents        
ImageType        : PE
Functions       
[0x0]            : Named Import of 'CreateDCW'
[0x1]            : Named Import of 'StartPage'
[0x2]            : Named Import of 'StartDocW'
[0x3]            : Named Import of 'SetAbortProc'
[0x4]            : Named Import of 'EndDoc'
...

相关内容

  • 没有找到相关文章

最新更新