Windbg/cdb 不支持函数名称中的某些特殊字符(<>)吗?

逆向工程 二元分析 C++ 风袋
2021-07-04 01:22:36

我有一个像这样的二进制函数class<class1::class2>::function我不能直接在函数上使用bp, u, 之类的命令x我现在唯一的选择是x class*然后在输出中查找地址,然后设置断点bp <address>

有什么我想念的吗?复制和粘贴地址每个调试会话太麻烦了。一种选择是使用 pykd,但我正在寻找一种纯粹的 Windbg 解决方案。

2个回答

如果您添加特殊的转义序列,则支持它们 @!" symbol "

确保设置已解决的断点而不是未解决的断点

并注意单个地址可能指向这些类的多个实例

windbg version 
Microsoft (R) Windows Debugger Version 10.0.17744.1001 X86

lets look for some functions with angle brackets in them

0:000> x /f /v windbg!*<*<*<*

prv func   00b76da9            6d windbg!Debugger::Utils::SmartCleanup_______snipped
prv func   00b76e16            46 windbg!Debugger::Utils::SmartCleanup_______snipped
pub func   00b9bcd1             0 windbg!std::basic_string<char,std::_______snipped
snip 



0:000> bp @!" windbg!Debugger::Utils::SmartCleanup_____snipped "
Bp expression '@!" windbg!Debugger::Utils::SmartCleanup<<lamb___snipped "'    

could not be resolved, adding deferred bp <<<<<

0:000> bl
     0 e Disable Clear u             0001 (0001) (@!" windbg!Debugger::Utils::SmartCleanup<<lambda_snipped

bm可能有助于通过某种模式匹配您的功能。看到这个帖子