我在视频游戏中使用 DLL 注入来进行改装(我正在构建游戏 API)。
我想从我的新 DLL 中直接访问 EXE 中的结构和变量。变量的绝对地址是已知的(EXE 具有固定的映像库)。
根据 GNUld
文档,我可以使用--defsym=symbol=expression
在输出文件中创建一个全局符号,其中包含由表达式给出的绝对地址。
我无法让它工作。
如果我extern
在代码中声明符号并使用ld --defsym
,我会得到未定义的引用错误。但是,如果我在代码中定义符号,它只会使用本地(DLL)版本,而不是 EXE 版本。
似乎这些--defsym
选项没有效果。任何见解将不胜感激。
更新:--defsym
在 Linux 下完美运行。当我尝试在 Windows 上使用 mingw 进行编译时,undefined reference
出现错误。