Forum: PC-Programmierung Wurm mit 8 Bytes


von Lötknecht (Gast)


Lesenswert?

Hallo,
ich konnte nicht vermeiden, in der Kantine ein Gepräch mitzuhören:

"So ein Wurm hat 8 Byte...  die da irgendwo zwischen sind..."

Jetzt meine Frage, da ich nur ein einfacher Lötknecht bin, verstehe ich 
von diesen Sachen ja nicht so viel:

Kann es sein, das man einen (Computerwurm) mit nur 8 Byte programmieren 
kann?
Das kann dann doch nur ein Assembler Unterprogrammaufruf mit ein paar 
Übergabeparametern sein. Oder zwei Unterprogrammaufrufe aber ohne 
Übergabeparameter.

von gast (Gast)


Lesenswert?

ein Computerwurm hat strlen("Computerwurm") 12Bytes. Ein Wurm sogar nur 
4;)

von Klaus W. (mfgkw)


Lesenswert?

Windows

Da passt sogar die abschließende 0 noch rein

von Peter (Gast)


Lesenswert?

also 8byte halte ich für nicht möglich, ich glaube der Wurm für den 
SQL-Server war 80byte.

von Timmo H. (masterfx)


Lesenswert?

Ein Computerwurm verbreitet sich über das Internet/Netzwerk (E-Mail, AIM 
etc)
Es benötigt dafür also einen Rechner mit Betriebssystem. Um die 
Systemfunktionen verwenden zu können (daher ein Ausführbares 
Windows/Linux Programm) gehören noch einige weitere Sachen, die alleine 
schon die 8 Bytes übersteigen (Header etc wie z.B. bei Windows das PE 
"Portable Executable").
Das kleinste Programm was ich mal hatte war glaub ich 12 Bytes und hat 
den Bildschirm zum flackern gebracht. Dies geschah aber indem direkt in 
den Framebuffer der Grafikkarte geschrieben wurde und nicht über die 
Umwege des Betriebssystems.
Also ich würde sagen: Nein, einen Wurm mit einer Größe von 8 Byte gibt 
es nicht. Alleine der Aufruf einer API Funktion mit einem Parameter 
besteht zumindest aus zwei Assembler Befehlen. Alleine das übersteigt 
schon die 8 Bytes

von Peter (Gast)


Lesenswert?

@Timmo H.
> Header etc wie z.B. bei Windows das PE"Portable Executable")
Die kann man pauschal nicht sagen, es gibt sogenannten shell-code dieser 
hat kein Header.

Er wird einfach in den Speicher gelegt (also reicht wenn er in einer 
Variable liegt z.b. char*) und dann wird dieser durch einen geschickten 
stacküberschreiber vom Prozessor angesprungen.

in 8byte bekommt man 8 befehle rein ( z.b. Add, Push, Pop, or ). Wenn im 
Speicher schon ein Wurm liegt kann man ihn mit 8byte anspringen. Aber 
ein eigenständiger Wurm mit 8byte ist nicht möglich.

von Peter (Gast)


Lesenswert?

nachtrag:

man bekommt in 8byte nur 4 Befehle rein, 1 byte instruction, 1 byte 
operant.

von Timmo H. (masterfx)


Lesenswert?

>man bekommt in 8byte nur 4 Befehle rein, 1 byte instruction, 1 byte
>operant.
Das hängt davon ab welche Befehle man verwendet. Bei 32-Bit RISC 
Maschinen ist JEDER Befehl 32 Bit lang, bei CISC können die Befehle auch 
64 Bit haben, womit das dann nur noch ein Befehl wäre.

von Peter (Gast)


Lesenswert?

eine aktuelle x68 cpu kann auch alle 2byte (1byte + operant) befehle 
noch ausführen. Sonst könnte man nicht auf einer 64bit cpu noch 32bit 
programm laufen lassen.

von Peter (Gast)


Lesenswert?

Nachtrag:
eine 0x90 (nop) ist nur ein byte groß und geht auf allen x86 Prozessoren

von Thomas K. (muetze1)


Lesenswert?

Das wäre dann aber in Verbindung mit einem 8 Byte Wurm schon wieder eine 
Leistung, darin noch ein NOP einzubauen...

von Timmo H. (masterfx)


Lesenswert?

>eine aktuelle x68 cpu kann auch alle 2byte (1byte + operant) befehle
>noch ausführen. Sonst könnte man nicht auf einer 64bit cpu noch 32bit
>programm laufen lassen.
Es heißt 1. x86 und 2. hat das nichts mit 64 Bit zu tun sondern eine x86 
Architektur muss die "alten Befehle" noch können, damit es eine x86 
Architektur ist. Die 64 Bit Unterstützung der aktuellen CPUs ist nur 
eine Erweiterung, weshalb diese Architektur auch x86-64 heißt. Reine 64 
Bit CPUs wie z.B. der Intel Itanium können 32 Bit befehle nur sehr 
langsam über eine Emulation ausführen.

von Markus (Gast)


Lesenswert?

Hier hat sich jemand mal ein paar Gedanken über das Thema gemacht
http://www.phreedom.org/solar/code/tinype/

Ein kleiner Ausschnitt:


    * Smallest possible PE file: 97 bytes
    * Smallest possible PE file on Windows 2000: 133 bytes
    * Smallest PE file that downloads a file over WebDAV and executes 
it: 133 bytes

Also muss ein Wurm mind. 133b groß sein.

von Peter (Gast)


Lesenswert?

> Also muss ein Wurm mind. 133b groß sein.
Wenn es ein PE sein soll ja, aber es kann ja auch shellcode sein. Und 
diser hat kein Header.

http://wiki.hackerboard.de/index.php/Shellcode_(Exploit)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.