C ++代理DLL(64位)

时间:2014-11-30 22:11:39

标签: c++ assembly proxy 64-bit

我使用了一个名为wrappit的工具来生成代理dll文件。 该工具可在此处找到:http://www.codeproject.com/Articles/16541/Create-your-Proxy-DLLs-automatically

但是目标DLL被编译为64位,并且由于Visual Studio不支持64位内联汇编,并且我不知道任何其他选项,我无法再进一步。

这是一个功能:

extern "C" __declspec(naked) void __stdcall __E__312__()
{
__asm
    {
    jmp p[312*4];
    }
}

不支持Naked / inline asm并给出编译器错误。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

在x64世界中没有内联asm,即使你找到了一些替代品(内在函数?),那里 也不支持__declspec(裸体)

你到底想要做什么? 你试图拦截外国(为你)DLL的一些电话吗?

如果是这种情况,有微软称之为Detours的东西,听说它很不错,从不使用它

http://research.microsoft.com/en-us/projects/detours/

您可能希望将MinHook作为替代方案,这个很好

http://www.codeproject.com/Articles/44326/MinHook-The-Minimalistic-x-x-API-Hooking-Libra

答案 1 :(得分:0)

此外,您可以使用Deviare in-proc作为Detours替代拦截任何函数。它在x86和x64都很完美,它是开源的,并且维护得很好。