NtQuerySystemInformation挂钩失败

时间:2012-09-23 16:54:36

标签: c++ api winapi hook

在成功构建蹦床并了解有关进程内存空间的更多信息后,我在MessageBoxA上测试了蹦床。它工作得很好,所以我决定最终把代码放到它应该用于的地方,通过挂钩NtQuerySystemInformation隐藏一个进程。重定向函数应该可以正常工作,但是我用来编写jmp指令的代码现在每次都会导致任务管理器崩溃。

        BYTE tmpJMP[5] = {0xE9,0x00,0x00,0x00,0x00}; //jmp,A,D,D,R
        memcpy(JMP,tmpJMP,5);
        DWORD Addr = ((DWORD)func - ((DWORD)oNtQuerySystemInformation + 0x5));

        for (int i=0;i<4;++i)
            JMP[i+1] = ((BYTE*)&Addr)[i];

        if (VirtualProtect((LPVOID)oNtQuerySystemInformation,5,PAGE_EXECUTE_READWRITE,&oldProtect) == FALSE)
            MessageBox(NULL,L"Error unprotecting memory",L"",MB_OK);

        memcpy(oldBytes,(LPVOID)oNtQuerySystemInformation,5);

        if (!WriteProcessMemory(GetCurrentProcess(),(LPVOID)oNtQuerySystemInformation,(LPCVOID)JMP,5,NULL))
            MessageBox(NULL,L"Unable to write to process memory space",L"",MB_OK);

        VirtualProtect((LPVOID)oNtQuerySystemInformation,5,oldProtect,NULL);

        FlushInstructionCache(GetCurrentProcess(),NULL,NULL);

我正在写这样的记忆。我似乎无法找到代码的问题。我在想,也许内存从API变为API,但我被告知这是不正确的,让我大家都感到困惑。你们都看到了什么问题吗?请描述一下。我喜欢学习o3o

0 个答案:

没有答案
相关问题