首页
社区
课程
招聘
[求助]问一个关于perfHUDAny的问题
发表于: 2013-4-10 19:49 4694

[求助]问一个关于perfHUDAny的问题

2013-4-10 19:49
4694
从网上下载下源代码编译,
void hookDirect3D(void)
{
        typedef IDirect3D9 * (WINAPI* DIRECT3DCREATE9)(UINT SDKVersion);
        #define        OPCODE_LONG_JMP                        (0XE9)

        //get "Direct3DCreate9" address
        DIRECT3DCREATE9 pDirect3DCreate9 = (DIRECT3DCREATE9)::GetProcAddress(::LoadLibrary("d3d9.dll"), "Direct3DCreate9");

        HANDLE hCurrentProcess = GetCurrentProcess();
        EnableDebugPri();

        //检查该函数是否已经被PefHUD修改
        unsigned char code[5];
        ::ReadProcessMemory(hCurrentProcess, (const void*)pDirect3DCreate9, code, 5, 0);
        if(code[0] != OPCODE_LONG_JMP)
        {
                DWORD dwErr = GetLastError();
                char chTemp[MAX_PATH];
                sprintf_s(chTemp,"操 出错了ReadProcessMemory code[0] != OPCODE_LONG_JMP ErrCode = %d",dwErr);
                MessageBox(NULL,chTemp,"唉 错了",MB_OK);
                return;
        }

        //记录PerfHUD函数的跳转地址
        g_oldDirect3DCreate9Func = (long)(LONG_PTR)pDirect3DCreate9 + 5 + *((int*)(code+1));

        //修改跳转地址
        long lNewAddress = (long)(LONG_PTR)onDirect3DCreate9-((long)(LONG_PTR)pDirect3DCreate9 + 5);
        BOOL bSucce = WriteProcessMemory(hCurrentProcess, (LPBYTE)(LONG_PTR)(pDirect3DCreate9)+1, &lNewAddress, 4, NULL);
        if(!bSucce)
        {
                DWORD dwErr = GetLastError();
                char chTemp[MAX_PATH];
                sprintf_s(chTemp,"操 出错了 WriteProcessMemory = false ErrCode = %d",dwErr);
                MessageBox(NULL,chTemp,"唉 错了",MB_OK);
        }
}

运行程序会进到
        if(code[0] != OPCODE_LONG_JMP)
        {
这个分支理,也就是 那个位置不是jmp指令,
我用的dx sdk的版本是10年2月份的。系统win7 32位的。
知道的朋友帮帮我吧。。

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

收藏
免费
支持
分享
最新回复 (2)
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己再顶一下,看看 有没有 遇到此类问题的朋友
2013-4-11 08:47
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
希望小软件的原作者能看到。。。
2013-4-12 08:59
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册