######################################################
# Reverse Engineering Description #
######################################################
0x00 Intro:
Reverse Engineering bedeutet eigentlich nichts anderes als rekonstruieren.
Dies kann in vielen Bereichen stattfinden, wie in der Elektronik, sämtlichen
Naturwissenschaften, aber eben auch in der Computertechnik, ich werde hier nur
letzteres behandeln.
Bei Software könnte man z.B. den Quellcode eines ausführbahren Programms rekonstruieren
dazu werden häufig Decompiler oder auch Debugger für ASM Code genutzt.
Man könnte natürlich auch das Auswerten eines Netzwerkverkehrs reversen nennen, doch
ich werde mich in dieser kleinen Description hauptsächlich um die Software kümmern.
Wenn man den ASM Code hat, kann man dann den eigentlichen Schutz entfernen.
So z.B. den Hardwareid-Schutz oder eine Serialeingabe.
Hier wird einfach zu der Adresse von der erfolgreichen Meldung oft mit JMP
gesprungen. Das ist nur ein Beispiel.
########################################################
0x01 Tools:
Was ihr benötigen könntet wären Disassembler/Debugger, das ist das hauptsächliche, natürlich
gibt es noch Packer oder Unpacker, allerdings ist das nichts anderes als automatische
Handlungen. Das eigentliche Unpacking macht man von Hand. Genauso ist es mit Patchern.
OllyDBG http://www.winexec.de/downloads/odbg110.zip
Peid http://www.winexec.de/downloads/PEiD-0.49-20060510.zip
1.1 OllyDbg
OllyDbg ist ein von Oleh Yuschuk entwickelter 32-Bit-Debugger für Windows-Betriebssysteme. Hauptsächlich wird OllyDbg zur binären Codeanalyse verwendet.
OllyDbg bietet folgende Features:
* Debugging von Multithread-Programmen
* Anhängen an laufende Prozesse
* Konfigurierbarer Disassembler mit Unterstützung der Formate MASM und IDEAL
* MMX, 3DNow, SSE, ASCII und UNICODE Unterstützung
* Hardware- und Software-Breakpoints
* Suchen über Speicherbereiche
* Modifikation von Speicherbereichen on-the-fly
1.2 Peid
Peid erkennt die meisten bekannten Packers, Cryptors und Compiler und bietet diese Features:
* Einfach zu handhabende GUI
* Shell-Eingliederung, Kommandozeilenunterstützung
* Task-Viewer und -Controller
* Hex-Viewer
Das als kleine Anmerkung zu den Tools die für den Anfang reichen. Danke nochmal an die
Hersteller.
####################################################
0x02 Analyzing:
Patches verändern wie schon gesagt die Struktur von anderen Programmen mit Hilfe von
hexadezimalen Zahlen.
Es gibt Programme, welche den HEX-Code eines Programms in nicht ganz unleserliche Assembleranweisungen
umsetzen können. Auch dissamblieren genannt. Wobei durch die verschiedenen Optimierungstricks
moderner Compiler kaum verwertbare Struktur zu finden ist. Einen guten Disassembler zu bauen ist wesentlich komplizierter
als einen guten Compiler zu bauen. Und sei es nur wegen des Problems, die Datenstrukturen zu erkennen und
lesbar zu bezeichnen, von sinnentsprechend ganz zu schweigen.
Der Weg Hochsprache -> Binärcode -> (Dis)Assemblerprogramm ist mit extremem
Informationsverlust verbunden
Man verändert mit Patchen den Code oder entfernt/bessert Teil davon aus.
Natürlich ist das je nach Copyright nicht erlaubt.
######################################################
Dies als kleine Anmerkung. Ich werde auch noch einige Tutorials dazu schreiben, da es
einfach so viele Varianten von Cracking gibt. Und jede einzelne kannm an mit mindestens 2
verschiedenen Möglichkeiten lösen.
Zum lernen gibt es sog. Crackmes oder Keygenmes, hier soll man den Algorithmus finden oder
das Tool so verändern, dass man es frei nutzen kann.
Eine nützliche Seite dazu ist:
http://crackmes.de/
#######################################################
Natürlich ist das nur eine kleine Description und sie soll zeigen was die Grundsätze sind
Ihr könnt euch natürlich jeder zeit weiterbilden.
So z.B. ist auch das File Format wichtig.
Hier gibt es natürlich das:
ELF Format
PE-Format
.out Format
Darüber solltet ihr euch Grundlagen aneignen und dann ein bisschen experimentieren
Mit NASM geht das z.B. leicht, da ihr executables mittels
nasm -f elf/bin etc. file file.asm erstellen könnt.
#######################################################