C++如何找出当前进程中指定模块(DLL)的内存地址
首先是程序A.exeA.exe会加载一个B.dll的模块一个用C++写好的C.dll注入到A.exeC.dll想获取A.exe进程中B.dll模块的指定函数地址用静态的方...
首先是程序A.exe
A.exe会加载一个B.dll的模块
一个用C++写好的C.dll注入到A.exe
C.dll想获取A.exe进程中B.dll模块的指定函数地址
用静态的方法可以知道C.dll的地址是1002AEF0
用调试工具可以知道内存中B.dll的该函数的内存地址是054DAEF0
因为每次加载该dll,他的内存地址都不会相同(前面的054D)
请问如何获取该内存地址呢?(通过静态的1002AEF0)
(该函数地址不是导出函数)
求各位大侠给出点代码好原理来.实用的话分可以接着加. 展开
A.exe会加载一个B.dll的模块
一个用C++写好的C.dll注入到A.exe
C.dll想获取A.exe进程中B.dll模块的指定函数地址
用静态的方法可以知道C.dll的地址是1002AEF0
用调试工具可以知道内存中B.dll的该函数的内存地址是054DAEF0
因为每次加载该dll,他的内存地址都不会相同(前面的054D)
请问如何获取该内存地址呢?(通过静态的1002AEF0)
(该函数地址不是导出函数)
求各位大侠给出点代码好原理来.实用的话分可以接着加. 展开
1个回答
展开全部
HMODULE hModule = GetModuleHandle(_T("b.dll")); // 获取b.dll句柄
MODULEINFO mi;
GetModuleInformation(NULL, hModule, &mi, sizeof(MODULEINFO)); // 获取b.dll信息
// mi.lpBaseOfDll就是b.dll的加载起始地址
MODULEINFO mi;
GetModuleInformation(NULL, hModule, &mi, sizeof(MODULEINFO)); // 获取b.dll信息
// mi.lpBaseOfDll就是b.dll的加载起始地址
追问
添加了.h和.lib的支持 可以生成
但是运行测试不行啊....
lpBaseOfDll 0xcccccccc void *
SizeOfImage 0xcccccccc unsigned long
EntryPoint 0xcccccccc void *
mi.lpBaseOfDll 0xcccccccc void *
请问怎么个情况?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询