我试图弄清楚如何获得模块的功能+线程的偏移量。类似于 Process Explorer 在其线程显示中的作用。例子....
ntdll!TplsTimerSet+0x07c0
我可以毫无问题地拉取起始地址,也可以将起始地址解析到模块。我可以获得显示“ntdll.dll”的起始地址加上偏移量(startaddress - baseaddress),但不是函数。所以我的看起来像这样..
ntdll+3BC0C
我想找到偏移量所在的ntdll dll的哪个函数。在这种情况下,函数是Tplstimerset。我知道我必须计算偏移量和函数地址的差异,但这应该很容易。此代码可以在 Delphi/Pascal 的 C++ 中。提前致谢。
最佳答案
在 Process Explorer -> Options -> Configure Symbols 中,您可以看到用于解析函数的符号文件。
这些符号来自 Microsoft windbg 和 Visual Studio 在调试时都在使用它们。
如果你启动了windbg并且已经加载了一个可执行文件,输入“x ntdll!*”来显示ntdll的所有命名函数,星号表示它匹配所有。
我假设您需要以编程方式获取命名函数的地址,您可能需要 .pdb file specification .
关于multithreading - 使用函数 + 偏移量获取模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9652469/