如何解决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 举报,一经查实,本站将立刻删除。