---
Hallo CDW,
also das habe ich jetzt nicht so ganz verstanden..
Der "ausführbare" Teil des Programms beginnt doch mit dem EntryPoint, oder?
Oder gibt es mehrere EPs?
Wenn ich nun will, dass mein Code zuerst ausgeführt wird, dann muss ich doch den EntryPoint umlenken auf das Ende des Programms (also da, wo dann mein Code anfängt), oder?
Wieso schreibst du dann:
jmp NOTHING
OEP:
nop <--- der Injektor sollte diese 4 "dummy" Bytes mit dem ausgelsenen
nop <<-------- und berechneten OEP (EP Wert+ImageBase =Virtuelle Adresse)
nop <------- überschreiben
nop
NOTHING:
nop
nop
mov eax,dword ptr [OEP]
jmp eax
??
1. Wieso muss ich vor den OEP einen JMP-befehl setzen, welcher zu meinem Code springt?? Dieser JMP-Befehl wird doch nie ausgeführt, oder?? Er steht ja noch vor dem OEP...
2. Was meinst du mit den Kommentaren
("der Injektor sollte diese 4 "dummy" ...")???
Ich dachte, ich muss einfach nur den OEP umändern in die Adresse, wo mein Code beginnt, und am Ende meines Codes dann wieder zum echten OEP springen....
Noch ne Frage:
Nach dem OEP kommen nur noch die Sections, oder? Sonst könnte ich ja nicht einfach meinen Code ans Ende des Programms setzen, oder? Und kann man diese Sections mit den Befehlen
.data bzw. .code vergleichen? Aber dann gäbe es ja nur 2 Sections...
Was wäre, wenn die letzte Secion, in die ich meinen Code injiziere, eine Section ist, in der es nur Daten gibt, welche beim Versuch sie auszuführen einen Fehler hervorrufen würden??
Und wird mit memcpy nur der Codeteil des Programms copiert??
Eigentlich möchte ich nur wissen, welchen Teil meines Injektionsprogrammes ich (in HexFormat) an welcher Stelle des Wirtsprogramms einfüge.
Wo fange ich an, meinem Injektionsprogramm den Code auszulesen?? Beim OEP, oder? Und wie weit lese ich dann aus? Doch nicht etwa bis zum Ende des Programms, oder? Wenn mein Injektionsprogramm nun mehrere Sections hat, dann lese ich die ja alle mit aus und füge sie dann in eine Section (letzte Section des Wirtprogramms)...gibt das keine Fehlermeldung??
Grüße
Gapa