Thread Perl Skript unlesbar machen?
(18 answers)
Opened by Gast at 2007-07-04 23:44
Ich hätte aber noch eine etwas besser umsetzbare Variante meiner Lösungsidee für das Ausliefern nicht lesbarer Perlquellen anzubieten:
Man kann ja sehr leicht mit der Perl-Embedding-API seinen eigenen "Perlinterpreter-Launcher" basteln. Es sollte mit moderatem Aufwand möglich sein, diesen so auszugestalten, dass er verschlüsselten Quellcode einlesen kann und einfache Versuche auf den internen Parsetree zuzugreifen blockiert. Wenn man sich da etwas spielt, auf den PerlIO-Layer aufsetzt um den Code zu lesen, den entschlüsselten Quelltext nicht komplett im Speicher herumliegen lässt und vielleicht noch ein paar hässliche kleine Tricks wie unsortierte Datenströme, alternative, zufällig auswählbare Blöcke und größere Mengen Zufallsdaten als Padding einbaut sowie einen durch rohe Gewalt kaum zu knackenden Verschlüsselungsalgorithmus verwendet, dann ist es zwar immer noch möglich, mit einem guten C-Debugger und ein paar Kunstgriffen an den Quellcode zu kommen, denn der Schlüssel und der Algorithmus dazu müssen ja direkt im Ladeprogramm stecken, aber es sollte für die meisten Anwender wirklich abschreckend kompliziert sein. Man hat halt den Vorteil, dass man nur das Ladeprogramm richtig schön nach den oben genannten Regeln vermurksen und gegen Debugger absichern muss, der Perlinterpreter und der eigentliche Code davon aber nicht betroffen sind. Wieviel Mühe man sich geben muss, um Sicherheit zu erreichen, hängt aber natürlich auch davon ab, wen man als Gegner sieht. Der Durchschnittsanwender macht sich vielleicht nicht einmal die Mühe, ein PAR-Archiv zu entpacken, der durchschnittliche Perlprogrammierer schreckt vielleicht vor einem hässlich zu debuggenden C-Programm zurück, das den Code filtert. Aber wenn es jemand wirklich darauf abgesehen hat, deinen Code zu bekommen, dann hilft es eigentlich nur noch so zu programmieren, dass man beim ersten Blick auf den Code sofort einen Knoten ins Hirn bekommt. Die Obfuscation ist nur dann richtig gut, wenn man zum Verstehen der Funktionsweise des Programmes signifikant länger braucht als zur Neuentwicklung des gesamten Codes ;-) When C++ is your hammer, every problem looks like your thumb.
|