微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Detours 的 x64 到 x86 转换问题

如何解决Detours 的 x64 到 x86 转换问题

我想在我的项目中使用 repo detours.net 来挂钩本机 win32 api 函数。它正在为 x64 应用程序创建,但不适用于 x86 应用程序。因此,我已将 detours 目录中的 CMakeList.txt 更改为 -E env DetoURS_TARGET_PROCESSOR=X86,并使用以下命令创建 Visual Studio 项目文件cmake -G "Visual Studio 16 2019" -A Win32 ..\detours.net。尝试构建解决方案后,我在此行中收到错误消息:

return DetourEnumerateImportsEx(hModule,&context,nullptr,UnsandBox);
Severity    Code    Description Project File    Line    Suppression State
Error   C2664   'BOOL DetourEnumerateImportsEx(HMODULE,PVOID,PF_DetoUR_IMPORT_FILE_CALLBACK,PF_DetoUR_IMPORT_FUNC_CALLBACK_EX)': cannot convert argument 4 from 'BOOL (__cdecl *)(PVOID,DWORD,LPCSTR,PVOID *)' to 'PF_DetoUR_IMPORT_FUNC_CALLBACK_EX'   DetoursDll  C:\Users\sebastian\source\repos\de32\detours.net\detours.net\DetoursDll\src\DetoursDll.cpp  30

但是 PF_DetoUR_IMPORT_FILE_CALLBACK 对函数 'UnsandBox' 的定义似乎是正确的:

typedef BOOL (CALLBACK *PF_DetoUR_IMPORT_FUNC_CALLBACK_EX)(_In_opt_ PVOID pContext,_In_ DWORD nordinal,_In_opt_ LPCSTR pszFunc,_In_opt_ PVOID* ppvFunc);
static BOOL UnsandBox(_In_opt_ PVOID pContext,_In_opt_ PVOID* ppvFunc)

它的构建对于 x64 没有任何问题,但对于 x86 则没有。我错过了什么吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。