Assembler Code an bestehende Exe hängen

Verständnisfrage:

Wenn ich Assemblercode an eine bestehende .exe bzw ausführbare Datei anhängen will, kann ich dann einfach mitm HEX Editor Code hinter an der Exe anfügen?

Dann könnte ich ja gleich als ersten Befehl einen JMP auf den neuen Code am Ende der Exe machen und nach dem Code wieder zurück springen.

Geht das so?
Wenn nein, wie würde man diese Funktionalität einbauen?

MFG
Ace
 
hier ist es detailiert beschrieben:
PE Infektion
und hier eine Kurzfassung:
Wie funktioniert ein Crypter in C/C++?
code von exe an code von anderen exe hängen? (c++)

kurze Antwort (für Windows):
nein.
Eine Exe hat einen PE-Header, in dem unter anderem auch steht, welche Teile (Sections) was enthalten (Daten,Code) und wie groß diese sowohl in der Datei selbst wie auch später nach dem Laden in den Speicher sein sollen. D.h einfach Code ans Ende der Exe dranzuhängen bringt nichts, da dieser gar nicht geladen wird.
Weiterhin: eine Exe hat auch einen Entrypoint - die Adresse, ab der die Ausführung beginnen soll (wiederum im PE Header vermerkt). Vergleichbar mit "main" in C/Java usw.
Vor "main" können Datenstrukturen oder andere Funktionen stehen - die obere/erste Anweisung zu ändern bringt also nur was, wenn die "Main" ganz am Anfang steht (was oft nicht der Fall ist).
 
Vor "main" können Datenstrukturen oder andere Funktionen stehen - die obere/erste Anweisung zu ändern bringt also nur was, wenn die "Main" ganz am Anfang steht (was oft nicht der Fall ist).
Den OEP auf den eigenen, eingefügten code zeigen lassen? (Habe ich noch nie so gemacht, bisher auch einen jump in die "main" sub gebastelt, wenn man es so nennen will)

LordPE ist ganz nützlich um den PE Header zu begutachten und zu manipulieren :)
 
Original von 90nop
Den OEP auf den eigenen, eingefügten code zeigen lassen? (Habe ich noch nie so gemacht, bisher auch einen jump in die "main" sub gebastelt, wenn man es so nennen will)

LordPE ist ganz nützlich um den PE Header zu begutachten und zu manipulieren :)

Kann man. Dazu AddressOfEntryPoint des optionalen Headers auf die gewünschte RVA setzen.
OEP (Original Entry Point) nennt man im übrigen nur den ursprünglichen Entry Point bei gepackten PEs. Sonst als Abkürzung einfach EP. ;)
 
Zurück
Oben