简介信息: Windows 7 64位。 C++。 64位应用程序和DLL的。没有MS Detours挂钩。API无挂钩挂钩
问题:我一直在努力解决在Windows中演示挂钩的工作示例问题。大多数TUTS在那里似乎是在时间,其中32位Windows XP是唯一的操作系统已经写......因为我已经克服的了解64位的障碍,成功注入的DLL。我在这个知识之旅中的下一个步骤是挂钩。 为了符合这个话题的怀旧情绪,MS的Detours不支持64位(免费),我肯定不会为任何东西支付10,000美元。所以我追求this tutorial中的传统方法。
这啧啧是真棒,但我有一个小麻烦了解这一细分市场:
void BeginRedirect(LPVOID newFunction)
{
BYTE tempJMP[SIZE] = {0xE9, 0x90, 0x90, 0x90, 0x90, 0xC3};
memcpy(JMP, tempJMP, SIZE);
DWORD JMPSize = ((DWORD)newFunction - (DWORD)pOrigMBAddress - 5);
VirtualProtect((LPVOID)pOrigMBAddress, SIZE,
PAGE_EXECUTE_READWRITE, &oldProtect);
memcpy(oldBytes, pOrigMBAddress, SIZE);
memcpy(&JMP[1], &JMPSize, 4);
memcpy(pOrigMBAddress, JMP, SIZE);
VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL);
}
特别,我与tempJMP字节挣扎,所有的memcpy的事情。我有一个记事本的InsertDate()函数的地址,我想劫持,但我不知道在哪里瞄准它...这是新函数的地址吗?或者它不是相对的? Idk,我只是在寻找一些指针。