CodeCave? was genau ist das? Erklärung zum Begriff..

codecave in ollydbg begriff erklärung

CodeCave? Was ist denn das? Hier sieht man ein Programm in einem sogenannten Debugger „OllyDbg“ zu ASM Code (Assemblersprache, eine hardwarenahe Programmiersprache) zerlegt. Rot markiert ist eine sogenannte Code Cave im Quellcode der „zerlegten“ Datei.

 

Kurze Einleitung in die Programmierkenntnisse

Wie viele bereits wissen, gibt es mehrere Programmiersprachen für den PC, die alle unterschiedliche Vor- sowie Nachteile bieten. Sie alle dienen dem Zweck, das Programmieren, also die Erstellung von Computerprogrammen, für Menschen einfacher zu machen.

All diese Programmiersprachen werden am Ende des Programmierprozesses nämlich zu Assemblersprache (ASM Code) verarbeitet.

Dies übernimmt der sogenannte Compiler, er kompiliert das Programm von Menschen-Programmiersprache zu Computer-Programmiersprache, nämlich ASM. Die Ursprungsform des Quelltextes (also der vom Menschen einfach schreibbare Code) eines Programms lässt sich dann nur in kleinen Teilen bzw. auch gar nicht mehr wiederherstellen.

Man könnte sagen, ASM ist eine Art Ur-Programmiersprache und Compiler übersetzen quasi alle Programmiersprachen zu ASM, damit sie vom Prozessor verarbeitet werden können.

Tatsächlich wurden die aller ersten Computerprogramme sogar direkt in Assemblersprache (ASM) geschrieben.

 

Was ist nun eine CodeCave?

Bei einer CodeCave handelt es sich um nichts anderes, als eher „kleine“ Lücken im kompilierten Programm.

Dies lässt sich idR. nicht verhindern und schadet einem Programm auch nicht, da diese Lücken vom Prozessor einfach ignoriert werden bei der Ausführung des Programmes.

Ihr solltet wissen, dass jedes kompilierte Programm von einem fest definierten Anfang und einem fest definiertem Ende begrenzt ist, man kann also nicht einfach so neue Lücken schaffen oder hinzufügen.

Im OllyDbg Screenshot oben ist eine CodeCave rot markiert. So sieht sie im ASM Code aus.

 

Was macht man nun mit der CodeCave?

Kurz gesagt: Hacker / Programmierer können sie verwenden um eigenen (ASM) Code in ein bereits kompiliertes Programm einzuschleusen (Fachbegriff zu injizieren, zu injecten).
Mit dem ASM-Befehl JMP / CALL innerhalb der CodeCave können sie dann ihr eigenes Programm, welches in den Programmiersprachen (C++ / C) geschrieben werden kann, ausführen. Es besteht dann eine „direkte Verbindung“ zwischen der Applikation und dem vom Hacker geschriebenen Programm und kann das „Opferprogramm“ quasi vom Hacker manipuliert werden.

So lassen sich Anwendungen (dazu gehören auch Spiele) mit eigenen Tools / Programmen erweitern oder in jeglicher Form wie gewünscht verändern.

Zum Beispiel werden alle „gecrackten“ Spiele und Anwendungen mit einem solchen Verfahren erstellt.







Aber die Nutzung muss nicht zwingend negativ sein, um Software zu „cracken“ und damit den Herstellern zu schaden. Nur mit Hilfe der CodeCaves wird es zum Beispiel möglich, ein Programm mit PLUGINS zu erweitern, obwohl dieses Programm vom Hersteller her gar keine Möglichkeit vorgesehen hatte, mit Plugins überhaupt zu arbeiten. Dies kann vor allem bei älteren Programmen der Fall sein, bei dem sich der Hersteller nicht mehr darum kümmert.

Weiterhin werden so zum Beispiel auch Paket-Hacks (also Manipulation der Kommunikation zwischen Anwendung, dem Spiel zum Beispiel und dem Server) für Online Spiele geschrieben, mit ein paar Zeilen Code lassen sich die Pakete an das Hackerprogramm weitergeben und dort manipulieren oder weiter verarbeiten um sie dann an die CodeCave zurück zu geben und in der Anwendung einzuschleusen.

Hierbei gibt es mehrere Möglichkeiten eine CodeCave auszunutzen, ich beschreibe hier nur eine Variante von vielen.

 







Die Vorteile einer CodeCave

Ein Sourcecode wird nicht benötigt. Meistens werden nur die kompilierten Applikationen selbst veröffentlicht, der Quellcode wird geheim gehalten, bleibt unveröffentlicht und geht in machen Fällen sogar verloren. So zum Beispiel bei vielen alten Anwendungen, die eventuell noch heute nützlich sind oder sich im Gebrauch befinden.

Schnell und einfach. Eine erneute Kompilierung ist nicht notwendig, auch muss eigentlich nichts beachtet werden. Mit der Hilfe eines Debuggers und einem erfahrenen Hacker / Programmierer lassen sich alle Änderungen wie gewünscht sofort vornehmen. Selbst während die Anwendung läuft, lassen sich Änderungen im ASM Code vornehmen.

 

Die Nachteile einer CodeCave

Ein Programm kann schnell beschädigt werden. Jeder noch so kleinste Fehler im Code kann die Anwendung ruinieren, es muss unbedingt mit Sicherheitskopien vor jeder Änderung gearbeitet werden.

Starke Beschränkungen. Die einzigen Möglichkeiten eine CodeCave zu nutzen sind ASM in Verbindung mit einem Debugger. Viel Spielraum bleibt in der CodeCave selbst nicht offen, es muss eine weitere Anwendung geschrieben werden die dann mit Hilfe der CodeCave arbeitet (diesen Vorgang habe ich weiter oben beschrieben).

 

Programme mit denen gearbeitet wird

OllyDBG
CheatEngine (vor allem bei Spielen)
PE: Explorer
Diverse C++ Entwicklungsumgebungen

 

Weiterführende Informationen

Falls ihr euch für das Thema interessiert ist folgendes Buch zum Thema IT Sicherheit wirklich toll, die Nutzerrezensionen sprechen mit 4 1/2 Sternen für sich und das was ich hier zum Thema CodeCave beschrieb wird darin exakt noch mal unter die Lupe genommen und Schritt für Schritt erklärt.

asm buch weiterführende codecave informationen

Kommentar schreiben

2 Kommentare.

  1. Es heißt injizieren.

Kommentar schreiben