API Hooking ohne Umwege

Intro Info: Windows 7 64-bit. C++. 64-bit-Anwendungen und DLLs. Haken ohne MS Umwege.

Frage: ich habe gekämpft, auf die Frage der immer ein funktionierendes Beispiel, das zeigt, Einhaken in Windows. Die meisten tuts da draußen zu haben scheinen, geschrieben worden ist, während einer Zeit, wo die 32-bit-Windows XP war das einzige Betriebssystem... ich habe seit überwindung der 64-bit-Hürden der Verständigung und injiziert eine DLL erfolgreich. Mein Nächster Schritt in dieser Reise des Wissens anschließen.
Im Einklang mit der Nostalgie des Themas, MS Umwege unterstützt keine 64-bit (kostenlos) und ich bin sicherlich nicht zahlen $10.000 für alles. So verfolgte ich die herkömmlichen Methoden in dieses tutorial.

Dieses tut ist genial, aber ich bin mit ein wenig Schwierigkeiten zu verstehen, diesem segment:

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);
}

Besonders, ich habe Mühe mit der tempJMP byte und alle memcpy geht. Ich habe eine Adresse für die InsertDate () - Funktion von Notepad, das ich will, zu entführen, aber ich bin mir nicht sicher, wo Sie wollen es... Wäre dies die Adresse der neuen Funktion? Oder ist es nicht doch relativ? Idk, ich bin gerade auf der Suche für einige Hinweise.

InformationsquelleAutor user850275 | 2012-01-24
Schreibe einen Kommentar