Obfuskation: Code-Dieben das Handwerk legen

Hier eine Liste anderer häufig verwendeter Obfuskationstechniken:

  • Layout-Obfuskationen ändern die Layoutstruktur des Programms über zwei grundsätzliche Verfahren: Identifier werden umbenannt und die Debugging-Informationen werden beseitigt. Dadurch ist der Programmcode für einen Rückentwickler weniger aussagekräftig. Die meisten Layout-Obfuskationen können nicht mehr rückgängig gemacht werden. Sie benutzen Einwegfunktionen, wie etwa die Änderung von Identifiern durch zufällig gewählte Symbole und die Beseitigung von Kommentaren, nicht verwendete Methoden und Debugging-Informationen. Layout-Obfuskationen können Rückentwickler zwar nicht daran hindern, das Programm zu verstehen, indem sie sich einfach den obfuskatierten Code ansehen. Sie verursachen jedoch zumindest hohe Kosten für das Reverse Engineering. Unter den Obfuskationen wird die Layout-Obfuskation am umfassendsten untersucht. Sie kommt bei der Code-Obfuskation sehr häufig zum Einsatz. Fast alle Java-Obfuskatoren nutzen diese Technik.

  • Steuer-Obfuskationen ändern den Steuerungsablauf des Programms. Der Trick ist sehr einfach: Für eine bestimmte Routine A () erzeugt der Obfuskator eine zusätzliche Routine A_bug und einen „if“-Selektor, also wenn(PREDICATE) dann A_bug(); sonst A();. PREDICATE wird auf diese Weise On-the-fly konstruiert, so dass es immer falsch ist. Diese Tatsache lässt sich jedoch nicht sofort erkennen. Die Routine A() wird dabei stets anstelle der fehlerbehafteten Kopie A_bug() gewählt.

  • Daten-Obfuskationen zerstören die Datenstrukturen, die bei den Programm- und Verschlüsselungsliterals eingesetzt werden. Diese Methode beinhaltet die Änderung der Vererbungsbeziehungen, Neustrukturierung von Arrays, und einiges mehr. Daten-Obfuskationen ändern die Datenstrukturen eines Programms sehr gründlich. Dadurch wird der obfuskatierte Code so kompliziert, dass es nicht mehr möglich ist, den ursprünglichen Quellcode wiederherzustellen.

Fazit

Es gilt zu bedenken, dass keiner der aktuell bekannten Obfuskatoren Reverse Engineering unter Garantie verhindern kann. Entsprechend ist die von Obfuskatoren gebotene Sicherheit nicht mit der moderner Verschlüsselungsprogramme vergleichbar. Aus diesem Grund sollten in allen Fällen, in denen die Sicherheit Vorrang hat, zusätzlich noch andere Vorkehrungen getroffen werden.

Die meisten Reverse-Engineering-Angriffe zielen auf Kopierschutzmechanismen. Diese Mechanismen stützen sich normalerweise sehr stark auf vorhandene Betriebssystem-Prozessaufrufe. Dadurch erleichtern sie es, die einfache Code-Obfuskation unter Verwendung derselben Werkzeuge, die auch bei nicht obfuskatiertem Code zum Einsatz kommen, zu umgehen. Daneben hängt der obfuskatierte Code häufig von den besonderen Eigenschaften der Plattform und des Kompilierers ab. Deshalb kann es zu Problemen kommen, wenn sich eins von beiden ändert.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Obfuskation: Code-Dieben das Handwerk legen

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *