首页
社区
课程
招聘
[求助]**** Detours 如何Hook自定义函数****
发表于: 2011-4-21 20:46 6070

[求助]**** Detours 如何Hook自定义函数****

2011-4-21 20:46
6070
我已经成功将DLL注入目标进程中,并且也能够Hook住目标进程中的MessageBox,我现在想Hook目标进程肯定会调用的函数却失败!!!
求高高手。。。。

LUA_API lua_State *(*lua_newstate_p) (lua_Alloc f, void *ud) =lua_newstate ;

LUA_API lua_State* real_luaL_newstate (lua_Alloc f, void *ud)
{
        OutputDebugString("XXXXXXXXXXXXXX real_luaL_newstate");
        return 0;
}

int (WINAPI *MessageBoxAPointer)(HWND hWnd,        LPCSTR lpText, LPCSTR Caption, UINT uTypee) = MessageBoxA;

int WINAPI My_MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, INT uType)
{
        OutputDebugString("XXXXXXXXXXXXXX My_MessageBoxA");
        return MessageBoxAPointer(NULL, "", "HOOK成功", MB_OK);
}

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
        static CMyMutex Mutex(FALSE,_T("Zhujnt@163.com"),NULL);
        switch (ul_reason_for_call)
        {
        case DLL_PROCESS_ATTACH:
                {
               
                                DetourRestoreAfterWith();
                                DetourTransactionBegin();
                                DetourUpdateThread(GetCurrentThread());
                                DetourAttach(&(PVOID&)lua_newstate_p, real_luaL_newstate);
                                DetourAttach(&(PVOID&)MessageBoxAPointer, My_MessageBoxA);
                                DetourTransactionCommit();
                }
                break;
        case DLL_THREAD_ATTACH:
                break;
        case DLL_THREAD_DETACH:
                break;
        case DLL_PROCESS_DETACH:
                {
                                DetourTransactionBegin();
                                DetourUpdateThread(GetCurrentThread());
                                DetourAttach(&(PVOID&)lua_newstate_p, real_luaL_newstate);
                                DetourAttach(&(PVOID&)MessageBoxAPointer, My_MessageBoxA);
                                DetourTransactionCommit();
                       
                }
                break;
        }
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
打开Detour的log,一般detour失败在哪一步会有信息输出
2011-4-22 10:45
0
雪    币: 72
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对了,如何可以在目标进程的PDB文件中查找该函数入口??
2011-4-22 13:27
0
游客
登录 | 注册 方可回帖
返回
//