mikrocontroller.net

Forum: PC-Programmierung Wurm mit 8 Bytes


Autor: Lötknecht (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: gast (Gast)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Windows

Da passt sogar die abschließende 0 noch rein

Autor: Peter (Gast)
Datum:

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

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nachtrag:

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

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

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

Autor: Thomas K. (muetze1)
Datum:

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

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.