Grundlagen

Was ist Binary Protection? Statische Binary Protection bedeutet, dass ein Entwickler sein Produkt gegen forensische Analysen oder Reverse Engineering (aus einem compilierten Produkt wieder einen Sourcecode entwickeln) schützen kann. Runtime Binary Protection ermöglicht es Entwickler ihren Code zu verbergen oder zu verschleiern.

Eine gute Referenz zur ELF Binary Protection ist der Phrack 58-Artikel "Armouring the ELF: Binary encryption on the UNIX platform." MacOSX benutzt zwar nicht das ELF Binary Format, aber das Mach-O Format. Weiterhin nutz MacOSX das PEF Binary Format, was in diesem Dokument aber nicht besprochen wird.

Binary Protection ist interessant für Autoren von Malware und Shareware. Beide dürften kaum ein Interesse daran haben, dass Ihr Binäries ausgespäht werden.

Worum es geht

In der momentanen Ausbaustufe ist dieser Artikel nicht dazu geeignet irgendwen in Sachen Binary Protection zu schulen. Eher ist es als Themensammlung, speziell auch zum Thema UPX zu verwenden. Experten sind ausschliesslich dazu aufgefordert diesen Artikel zu erweitern und auszubauen.

Was UPX ist

UPX ist ein Packer für binäre Daten, den es für eine Reihe von Betriebssystemen gibt und der auch Mach-O (PPC) unterstützt. Für MacOSX gibt es auf der Sourceforge Seite keine offizielle Unterstützung. Der CVS-Sourcecode lässt sich jedoch mit einigen wenigen Problemen kompilieren.

Der Autor des in der Quelle genannten Artikels schrieb folgendes kleines Testprogramm:

#include <stdio.h>
int main()
{
printf("Hallo wie geht es Dir?\n");
return 0;
}

Nachdem es mit UPX gepackt wurde, erhielt er folgende Dateigrößen:

  • Ungepackt: -rwxr-xr-x 1 braden staff 11532 22 Feb 16:00 hello
  • Gepackt: -rwxr-xr-x 1 braden staff 4947 22 Feb 16:00 hello.upx

Das resultierende Binäry gibt keine Zeichenketten aus, wenn es mit dem "strings" Befehl angesprochen wird – jedoch deckt ein Hex Editor auf, daß es Zeichenketten aus dem Source-Code gibt, da UPX diese nicht verschlüsselt. Die Zeichenketten sind zwar ein wenig im Kompression-Prozeß durcheinandergebracht worden, jedoch ist eine einfache Kompression nicht genug, wenn man eine statisch binäre Kontrolle verhindern möchte. Durch Reverse Enginnering könnte man das Binary einfach wieder dekomprimieren und alles ans Tageslicht fördern.

Allerings bereitet das Binary ptrace Schwierigkeiten, die GDB-Debug-Methode (lies den Phrack-Artikel für mehr Informationen), sowie dem Darwin Disassembler "otool." Ein "otool -tv hello" liefert ein Dissassembling des Programms, während "otool -tv hello.upx" nichts zurück bringt.

Ein nächster Schritt wäre es den UPX-Sourcecode so zu verändern, das er um Verschlüsselungsfähigkeiten erweitert würde.

Quelle

  • Frei übersetzt aus dem Englischen (Quelle:geronimooo). Bitte öfters mal wegen Erweiterungen checken.

Kategorien

Datenkompression, Softwareentwicklung


FooterBadgetsFct('Diskussion') FooterBadgetsFct('Rezension')

Zuletzt geändert am 20.01.2006 22:09 Uhr von Georg (1 Besuche)

© 2004 – 2018 ApfelWiki

Impressum - Datenschutz

cb