我最近编写了一个简单的测试程序来调用Windows附带的DLL中的一些私有函数。由于不导出私有函数,因此无法使用GetProcAddress()找到它们的地址,并且我正在寻找一种在没有它的情况下实现相同功能的方法。
使用IDA Pro,我注意到导出函数的偏移量,在这种情况下为DllRegisterServer。由于导出了此函数,我可以使用GetProcAddress查询其地址。通过知道它从PE可执行文件的.text部分的开头的偏移量,我可以在用LoadLibrary加载DLL之后动态查询.text部分的地址。
同样,仍然使用IDA Pro,我注意到每个感兴趣的私有函数的偏移量。一旦我有.text部分的地址,我只需要为已知的私有函数添加偏移量,我现在有正确的地址来调用这些函数。但是只有一个问题:由于偏移量已经过硬编码,因此只适用于此精确版本的DLL。
我知道有很多工具可以读取PE并提供私有函数的地址。我假设调试符号用于查询这些私有函数的名称。我正在寻找的是一个简单的库,它可以读取PE和调试符号,并允许我按名称查询私有函数的地址。
有没有人知道这样的库可以帮助按名称查找私有函数的地址,如果有可用的调试符号可以使用吗?