【发布时间】:2014-05-24 14:03:49
【问题描述】:
在 Windows 7/8/2012 的 64 位版本中,ETW 内核跟踪器为系统调用进入事件提供内存地址。我想将这些地址映射到一些有意义的东西,比如位于该地址的函数的名称:例如接受连接端口。
我知道我可以在内核调试器会话中使用ln(列出最近的符号)来查找特定地址的符号。我想要的是一种以编程方式做到这一点的方法。有没有可以用来在给定内存地址查找符号的库?
更好的是,是否有针对不同 Windows 版本的内存偏移量的权威参考。我找到了this table,但这些数字似乎与我观察到的任何内存地址都不对应。
【问题讨论】:
-
你看过 Dependency Walker (depends.exe) 主页 www.dependencywalker.com
-
您可以使用 DbgHelp 库从 Microsoft 符号服务器获取适当的符号并进行查找 - msdn.microsoft.com/en-us/library/windows/desktop/…
-
功能地址是否公开(官方或非官方)列表值得怀疑。这将是巨大的,因为每次 Windows 更新发生时模块中的地址都会发生变化。
-
@Marichyasana Dependency Walker 看起来很有希望,但程序中显示的入口点似乎与我在内核跟踪中观察到的任何偏移都不对应。
-
@AndrewMedico 我认为 DbgHelp 是这里的关键。感谢您的参考。
标签: windows system-calls etw