イントロインフォメーション: Windows 7 64ビット。 C++。 64ビットのアプリケーションとDLL。 MS Detoursなしでフック。迂回のないAPIフックなし
質問:私は、Windowsでフッキングを示す実例を得るという問題に苦労しました。そこには、32ビットのWindows XPが唯一のオペレーティングシステムだった頃に書かれたようなものがあります...私は64ビットのハードルを克服し、DLLを正常に注入しました。知識のこの旅の私の次のステップはフックです。 トピックのノスタルジアに合わせて、MSのDetoursは64ビット(無料)をサポートしていません。だから私は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、私はちょうどいくつかのポインタを探しています。