【发布时间】:2018-11-28 10:24:04
【问题描述】:
我有一个令人遗憾的任务,即从我的 .dll(由该 .exe 加载)中访问 .exe 的全局(!)变量。
头文件给了我以下全局变量的声明:
extern Element *ops_TheActiveElement;
基本上,全局变量是一个指向我需要访问的类实例的指针。
根据我在网上找到的内容,我可以在 dll 中使用类似的东西:
Element* getTheActiveElement()
{
auto handle = GetModuleHandle(NULL);
if (handle == NULL)
std::cout << "handle" << handle << std::endl;
auto activeElement = GetProcAddress(handle, "ops_TheActiveElement") ;
return (Element*)activeElement;
}
获取模块句柄没问题,但是获取全局变量的地址失败。 我不确定这是否可能,因为我不熟悉 Windows 编程。 可能的方法是什么?提前谢谢!
【问题讨论】:
-
您可以使用
dumpbin /exports查看导出的符号。如果该变量未导出,则您无法使用GetProcAddress获取它(通常exe 不会导出任何内容)。当然,您可以使用反汇编程序和一些逆向工程工作找到该变量。