注册 登录
编程论坛 VC++/MFC

使用detours的问题

Vincent800 发布于 2018-08-02 14:39, 1781 次点击
大家是否有使用微软的detours库,一般的hook是方便的,但至少有2种情况我觉得有的问题的,或者是我的使用方法不对
情况1:
先看图

只有本站会员才能查看附件,请 登录


代码:

ULONG g_Test1 = 0x00421EF4;
__declspec(naked) VOID NewTest1()
{
    __asm {
        mov eax, 1
        jmp g_Test1
    }
}

    DetourTransactionBegin();
    DetourUpdateThread(GetCurrentThread());
    DetourAttach ((PVOID*)&g_Test1, NewTest1);
    DetourTransactionCommit();

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


结果是改不了的,detours执行源代码时给恢复了,解决办法是改用普通的hook方法

情况2:iat hook
call dword ptr ds:[50B9B8]这种格式的,用detours hook会崩溃

1 回复
#2
zzz32652022-02-06 14:11
1. 是用法不对
DetourAttach ((PVOID*)&g_Test1, NewTest1);
函数这样写
NewTest1(xx)
{
    xxxx
    g_Test1(xx) ;
    xxx
}

2.  iat 应该hook对应的函数, 而不是call 的位置
1