Intro Info: Windows 7 64-bit. C++. App e DLL a 64 bit. Agganciare senza Disturbi MS.API Hooking senza Detours
Domanda: Ho faticato sul problema di ottenere un esempio funzionante che dimostra l'aggancio in Windows. La maggior parte dei tutorial sembra essere stata scritta durante un periodo in cui Windows XP a 32 bit era l'unico sistema operativo ... Da allora ho superato gli ostacoli a 64 bit di comprensione e ho iniettato una DLL con successo. Il mio prossimo passo in questo viaggio di conoscenza è l'aggancio. In linea con la nostalgia dell'argomento, i Detours di MS non supportano 64 bit (gratuitamente) e di sicuro non sto pagando $ 10.000 per nulla. Così ho perseguito i metodi convenzionali in this tutorial.
Questa tut è impressionante, ma sto avendo un po 'di difficoltà a capire questo segmento:
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);
}
In particolare, sto lottando con il byte tempJMP e tutto il memcpy in corso. Ho un indirizzo per la funzione InsertDate() del blocco note che voglio dirottare, ma non sono sicuro su dove puntarlo ... Questo sarebbe l'indirizzo della nuova funzione? O non è relativo? Idk, sto solo cercando alcuni suggerimenti.