我正在分析一些用户模式内存转储以尝试追踪泄漏,我有一些漏洞,但是当我运行!heap -flt时,我继续在转储中看到这些条目s xx命令。
14a8bd58 0006 0006 [07] 14a8bd60 00018 - (busy)
14a8bd88 0006 0006 [07] 14a8bd90 00018 - (busy)
14a8bdf8 0006 0006 [07] 14a8be00 00018 - (busy)
14a8bf48 0006 0006 [07] 14a8bf50 00018 - (busy)
? SomeModule!SomeFunction+1bdf4
我得到了什么
14a8bd58 0006 0006 [07] 14a8bd60 00018 - (busy)
是行,但我不确定行是什么
? SomeModule!SomeFunction+1bdf4
真的很有意思。使用堆跟踪的+ ust标志捕获这些转储。
答案 0 :(得分:4)
他们只是提供符号信息,以便读者更有用地找到来源的相应部分。
在Windows下,进程的虚拟地址空间由一组模块填充。每个模块由基地址和大小组成。因此,有时会显示此信息的另一种方式是Module + Relative Offset
。
模块可以包含功能。在符号表完好无损的情况下,可以找到相对偏移量(进入模块)和这些函数的大小。转储只是以更易于阅读的格式显示此信息。
答案 1 :(得分:3)
SomeModule
是可执行模块的名称。
SomeFunction
是从正在执行的模块导出的函数的名称。
+1bdf4
是从该函数的开头以十六进制表示的偏移量。
此示例中的偏移值非常大,这可能意味着缺少模块的符号表,并且相对于具有已知名称的最近函数(通常是导出的函数)显示偏移量。