Der Welt kleinstes PE (Windows) Executable

Hinweise auf besondere Websites, Vorstellung eigener Websites, Internet-Smalltalk
Antworten
Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Der Welt kleinstes PE (Windows) Executable

Beitrag von fat-lobyte » Do Aug 12, 2010 2:10 pm

Hallo!

Bin gerade auf etwas gestoßen, was ich mal etwas unformal als "kranken Scheiß" bezeichne.
Da hat so ein typ die kleinste Ausführbare Datei der Welt geschrieben, die eine Datei herunterlädt und ausführt. Die Datei ist 133Bytes groß.
Ich bin erstaunt über das Wissen und die Methoden dieses Menschen, und auch aller anderen "Bitschupfer".

Hut ab vor allen Crackern und Hackern dieser Welt!!

Hier der link zur Story: (ich glaubs immer noch nicht ganz...):

http://www.phreedom.org/solar/code/tinype/


Man beachte übrigens die Sicherheitsimplikationen. Eine kleine Datei, eingebettet in ein jpeg Bild, das geöffnet wird durch eine buggy jpeg bibliothek, der EIP rutscht "zufällig" über den Code und bums - ein sauberer "Arbitrary Code execution". Ich finds schön. Erschreckend, aber schön.

Irgendwie motiviert mich das wiedermal in die Crackerei einzusteigen...
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Der Welt kleinstes PE (Windows) Executable

Beitrag von Xin » Do Aug 12, 2010 2:39 pm

Danke für den interessanten Link, der wird sicherlich für meinen den Windows-Codegenerator meines Compilers auch nochmal interessant werden. :-)

Dazu möchte ich allerdings sagen, dass 133 Bytes immernoch sehr groß sind. Unter AmigaOS war ein "Hello World" (also die Ausabe eines Strings von 12 Zeichen und nicht nur die Rückgabe eines Wertes) wenn ich mich recht entsinne 23 Bytes groß.

Code: Alles auswählen

#include <proto/dos.h>

int main()
{
  PutStr( "Hello World" );

  return 0;
}
In Perlen der Programmierkunst ist ein besonders schönes Beispiel beschrieben, wie man es geschafft hat ein Lexikon für eine Rechtschreibprüfung mit 70000 Wörtern (!) im Arbeitsspeicher eines Rechners mit 64kB RAM unterzubringen.
Dem entgegenzusetzen ist nun wieder Dein Link, der beschreibt dass, dieser Code:

Code: Alles auswählen

int main()
{
    return 42;
}
bei normaler Compilierung mit Visual Studio 2005 bereits 45056 groß ist und damit die 64kB Arbeitsspeicher des damaligen Rechner bereits zu über 2/3 ausfüllt.
Bitschieben scheint aus der Mode gekommen sein. Die 4GB RAM meines aktuellen Rechners haben 130 Euro gekostet. Mit einer Minute arbeiten kann ich mir also vermutlich mehr RAM kaufen, als eine Stunde Optimierung in dem Bereich einsparen lassen würden.

Es sind keine guten Zeiten mehr, um sich für Details zu begeistern.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Der Welt kleinstes PE (Windows) Executable

Beitrag von cloidnerux » Fr Aug 13, 2010 11:02 am

Man beachte übrigens die Sicherheitsimplikationen. Eine kleine Datei, eingebettet in ein jpeg Bild, das geöffnet wird durch eine buggy jpeg bibliothek, der EIP rutscht "zufällig" über den Code und bums - ein sauberer "Arbitrary Code execution". Ich finds schön. Erschreckend, aber schön.
Gibt es schon lange, in PDFs, FLash-Filmchen, Jpegs oder allem anderen, was durch irgendeine weise erlaubt ausführbaren code in den ram zu schleusen:
http://www.heise.de/security/artikel/Ta ... 17983.html
Ich finde es interessant, was alles an Daten in eine Simple ausführbare Datei gepackt werden. Ich habe hier Code für AVR-Microprozessoren mit gerade mal 70Bytes Länge und da habe ich noch Potential, wenn ich mit ASM arbeite.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten