从DLL获取函数PTR

时间:2014-10-11 02:51:00

标签: c# c++ dll

我正在尝试在当前进程中注入一个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中。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

该函数在您的DLL的导出表中未命名为testfunction,但它已被类型信息损坏。所以GetProcAddress找不到它。 (P / invoke DllImportAttribute尝试了大量的名字,可能会找到它......但GetProcAddress需要完全匹配。)

为了导出一个完全没有修改的函数,你需要使用extern "C"减少函数名的修改,然后使用模块定义文件进行链接。类似的东西:

LIBRARY test
EXPORTS
testfunction

有关完整信息,请参阅the MSDN documentation