Neben dem Austausch von Buchstaben und der Unterdrückung von Zeilennummern gibt es auch noch verschiedene andere Tricks, die die einzelnen Obfuskatoren einsetzen. Eine beliebte Möglichkeit zur Verschleierung von Quellcode besteht in der Weiterentwicklung bedeutungsloser Zeichenketten. Bei diesem Trick wird ein Symbol der Klassendatei durch eine illegale Kette ersetzt. Der Ersatz könnte ein Schlüsselwort, beispielsweise privat, oder noch vertrackter ein vollständig bedeutungsloses Symbol sein, wie etwa ***.
Einige virtuelle Systeme, insbesondere solche in Browsern, verstehen bei diesen Spielchen keinen Spaß. Technisch gesehen ist eine Variable mit einem Symbol als Namen, wie zum Beispiel =, konträr zur Java-Spezifikation. Einige virtuelle Systeme ignorieren das jedoch.
Eine andere Technik, die einige Obfuskatoren einsetzen, zielt normalerweise auf spezielle Dekompilierer ab, wie beispielsweise Mocha und JODE. In diesem Fall wird eine schlechte Anweisung in den Code integriert. Beim Einsatz des Codes ist das kein Problem, aber es lässt den Dekompilierer abstürzen.
Als Beispiel für eine solche schlechte Anweisung dient hier der ursprüngliche Code (dekompiliert):
Method void main(java.lang.String[]) 0 new #4 3 invokespecial #10 6 return
und der Code nach einer Obfuskation (zur einfacheren Darstellung werden die Namen beibehalten):
Method void main(java.lang.String[]) 0 new #4 3 invokespecial #10 6 return 7 pop
Die Programmroutine verfügt jetzt nach dem Rücksprung über eine Abhebungsanweisung. Natürlich kann eine Funktion nach ihrem Rücksprung nichts mehr bewirken – das ist der Trick dabei. Indem man eine Anweisung nach einem Rücksprungbefehl platziert, kann man sicherstellen, dass sie nie ausgeführt wird. Damit ist es weitestgehend unmöglich den Code zu dekompilieren. Er macht keinen Sinn, weil er keinem möglichen Java-Quellcode entspricht.
Neueste Kommentare
Noch keine Kommentare zu Obfuskation: Code-Dieben das Handwerk legen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.