Hallo, ich weiss zwar nicht ob das hier noch Interesse an dem Thema besteht aber ich schreib mal was dazu:
1. Mit VirtualAllocEx Speicher im Zielprozess reservieren.
VirtualAllocEx(handle, NULL, SizeOfBytesToReserve, MEM_COMMIT , PAGE_EXECUTE_READWRITE );
2. Mit ReadProcessMemory die Daten sichern welche überschrieben werden.
3. Mit WriteProcessMemory folgendes schreiben:
JMP AdresseVoMReserviertenSpeicherBereich
Hier schreibst du zuerst den Opcode 0xe9
Die Adresse wo hingesprungen werden soll wird wohl kleiner sein als
die Adresse VON der du springst, also rechnest du folgendes:
ZielAdressOpcodes = ZielSprungAdresse - StartSprungAdresse - 5
Ach ich geb mal ein genaueres Beispiel^^:
1. Mit VirtualAllocEx Speicher im Zielprozess reservieren.
VirtualAllocEx(handle, NULL, SizeOfBytesToReserve, MEM_COMMIT , PAGE_EXECUTE_READWRITE );
2. Mit ReadProcessMemory die Daten sichern welche überschrieben werden.
3. Mit WriteProcessMemory folgendes schreiben:
JMP AdresseVoMReserviertenSpeicherBereich
Hier schreibst du zuerst den Opcode 0xe9
Die Adresse wo hingesprungen werden soll wird wohl kleiner sein als
die Adresse VON der du springst, also rechnest du folgendes:
ZielAdressOpcodes = ZielSprungAdresse - StartSprungAdresse - 5
Ach ich geb mal ein genaueres Beispiel^^:
PHP-Code:
1 |
|
Ich hoffe man kann meine Erklärung verstehen.
So würde dann BerechneSprungAdresse intern aussehen:
PHP-Code:
|