为了将热修复应用于DLL,我使用了'LoadLibrary'和 'GetProcAddress'查找导出的基址和偏移量 DLL中的函数。例如:
// Use Handle as base address
base = LoadLibrary(...);
// Get offset relative to base
offset = GetProcAddress(...);
以这种方式使用它:
// Calculate offset in file
offsetInFile = offset - base;
// Apply hotfix in file
PatchExportedFunction(offsetInFile, "MyDLL.dll");
到目前为止,此工作正常 - 但我现在遇到了问题 有一些DLL的计算方式不同 offset不再与文件中的偏移量匹配。
显然,我找到这个功能的方法太简单了 我不知道我错过了什么,以及为什么它的大多数工作 时间但并非总是如此。
也许有人有想法?