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.
also 8byte halte ich für nicht möglich, ich glaube der Wurm für den SQL-Server war 80byte.
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
@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.
nachtrag: man bekommt in 8byte nur 4 Befehle rein, 1 byte instruction, 1 byte operant.
>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.
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.
Nachtrag: eine 0x90 (nop) ist nur ein byte groß und geht auf allen x86 Prozessoren
Das wäre dann aber in Verbindung mit einem 8 Byte Wurm schon wieder eine Leistung, darin noch ein NOP einzubauen...
>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.
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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.