我正在尝试在当前进程中注入一个dll来查找不同函数的偏移量。
我的dll中有一个简单的函数,如下所示:
void testfunction()
我试图通过C#app获取函数ptr。
public IntPtr GetFunctionPointer()
{
IntPtr hLoaded = LoadLibrary("C:\\test\\test.dll");
IntPtr functionPtr = GetProcAddress(hLoaded, "testfunction");
return functionPtr;
}
函数ptr每次都返回0,即使函数存在于dll中。 任何帮助将不胜感激。
答案 0 :(得分:0)
该函数在您的DLL的导出表中未命名为testfunction
,但它已被类型信息损坏。所以GetProcAddress
找不到它。 (P / invoke DllImportAttribute
尝试了大量的名字,可能会找到它......但GetProcAddress
需要完全匹配。)
为了导出一个完全没有修改的函数,你需要使用extern "C"
减少函数名的修改,然后使用模块定义文件进行链接。类似的东西:
LIBRARY test
EXPORTS
testfunction
有关完整信息,请参阅the MSDN documentation