首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从函数的.pdb中获取增量链接块?

从函数的.pdb中获取增量链接块?
EN

Stack Overflow用户
提问于 2011-08-03 08:14:13
回答 1查看 468关注 0票数 0

我正在尝试使用.pdb和DIA来确定.exe的静态调用图。不幸的是,在增量链接时,使用dia2dump示例时,函数调用的增量跳床thunk不会显示出来。

如果在启用调试和增量链接的情况下运行和链接dia2dump示例(或简单的here示例),则对wprintfprintf的调用不会显示在任何函数的符号转储中。但是,如果您禁用增量链接,则会禁用增量链接。

有没有办法通过DIA获得函数使用的增量跳床?或者我应该破解.obj和.lib文件?

EN

回答 1

Stack Overflow用户

发布于 2011-08-04 15:30:23

您是如何链接到CRT的?静态的还是动态的?

我用VS2010 (使用dynamic/dll CRT)编译了这个示例,并将生成的.exe加载到IDA Pro中。以Fatal函数(来自示例)为例,它的所有printf调用都直接编译为该函数(即__imp__printf)的.exe导入条目的引用。这可能就是为什么你看不到它们出现在你的垃圾堆里的原因。如果我使用静态链接到CRT (在增量打开的情况下),它将调用ILT。如果我关闭了增量,它会直接调用printf (因为它没有导入它)

对于动态CRT,printf函数的间接(调用导入)和ILT (调用间接;我相信你的'trampoline‘)版本仍然存在于增量.exe中,但没有对它们的代码引用。

该示例正确地转储了自身的ILT(如下所示的printf示例),因此当它们被实际调用时,我认为它应该能够正确地将它们转储到函数符号dump中。然而,我使用DIA的经验有限,所以到目前为止,我或多或少是在说我的话。

代码语言:javascript
运行
复制
0x00011799 (PublicSymbol) @ILT+1940(_printf)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6920261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档