This page has been robot translated, sorry for typos if any. Original content here.

Entschlüsseln von PHP- und JavaScript-Skripten

Nach Thema:


Eine der zuverlässigsten Methoden zum Schutz von Skripten vor dem Studium und der Modifikation ist die Verschleierung.

Obfuscation (von lat. Obfuscare, "shade, darken") - Verschränkung des Programmcodes, dh der Quelltext wird in eine Form gebracht, die die Funktionalität des Programms bewahrt, aber die Analyse, das Verständnis der Algorithmen und die Modifikation erschwert.

Im Gegensatz zu eindeutig reversibler Verschlüsselung und Verpackung ist Verschleierung eine irreversible Aktion. Dies bedeutet, dass es nicht möglich ist, den Skriptcode im ursprünglichen Formular wiederherzustellen. Ohne Ausnahme funktionieren PHP- und JavaScript-Obfuscatoren auf zwei Arten: Aus dem Quelltext werden Zeilenumbrüche und kleinere Leerzeichen entfernt, und die Namen von Klassen, Variablen und Funktionen werden durch sinnlose Zeichen ersetzt. Diese Aktionen können beide kombiniert und unabhängig ausgeführt werden.

Wie ich bereits sagte, ist es bei der Entschleierung unmöglich, den Code in seine ursprüngliche Form zu bringen. Aber es ist durchaus möglich, es zu einem solchen Zustand "zu verfeinern", dass Sie den Algorithmus leicht verstehen und die notwendigen Änderungen vornehmen können. Zum Beispiel können Sie nach der Entschleierung den Schutz einiger PHP-Skripte aufheben, die JavaScript-Bindung zu der Domäne entfernen, obligatorische Werbung oder ähnliches aussparen.

Die erste Stufe der Entschleierung ist die Formatierung des Skripttextes, die Silbentrennung, die Ausrichtung des Codes, die mit "Leiter" leicht zu lesen ist. Dafür benutze ich zwei Werkzeuge. Die Firma WaterProof Software hat ein kleines (weniger als 100 Kilobytes) kostenloses Programm zum Formatieren des PHP-Codes phpCodeBeautifier entwickelt . Um es von außerhalb herunterladen zu können, ist eine kostenlose Registrierung erforderlich. Hier finden Sie einen direkten Link zum Download. Das Programm ist eine Konsole, die Befehlszeilenparameter können in den Anweisungen des Archivs angezeigt werden. Für die Fans der Windows gibt es eine GUI-Version, obwohl die ältere, aber es ist durchaus möglich, eine Konsolendatei von der neuesten Version zu stellen.

Деобфускация скриптов PHP и JavaScript

Für die Formatierung von Skripten in JavaScript und HTML-Code gibt es einen wunderbaren Online-Service Beautify Javascript . Fügen Sie einfach den Text des Skripts in das Formular ein, drücken Sie die Schaltfläche "Verschönern" und erhalten Sie ein wunderschön formatiertes Skript. Aus praktischen Gründen habe ich diese Seite leicht modifiziert und in eine stationäre EXE-Datei kompiliert. Vielleicht werde ich eines Tages die Zeit und Energie finden, um das Skript in eine vollwertige Anwendung umzuschreiben.

Wenn Sie große Skripts formatieren, kann der Browser eine Meldung anzeigen, dass das Skript eingefroren ist, und Sie werden aufgefordert, das Skript zu stoppen. Sie müssen dies nicht tun, es dauert länger zu verarbeiten.

Деобфускация скриптов PHP и JavaScript

Wenn die Verschleierung die Namen der Variablen nicht ersetzt hat, kann die Entschleierung nach der Formatierung des Codes als abgeschlossen betrachtet werden. In jedem Fall ist das Skript bereits viel besser lesbar und verständlich

Wenn die Namen von Variablen und Funktionen beschädigt sind, dann gehe zum zweiten Teil der Entschleierung. Hier gibt es leider keine fertigen Tools, zumindest habe ich sie nicht getroffen. Wenn jemand kostenlos mit dem Schreiben eines solchen Tools beginnen möchte, kann ich eine detaillierte technische Zuordnung vornehmen. Es ist zwar notwendig, sich auf theoretische Berechnungen zu beschränken.

Seltsam wie es sich anhört, aber für die Entschleierung werden wir die gleichen Prinzipien wie für die Verschleierung verwenden. Aus allen Skripts werden die Namen aller Variablen extrahiert und durch andere ersetzt. Der einzige Unterschied ist, dass wir die verdorbenen Namen extrahieren und durch bequemere ersetzen werden. Zum Beispiel wird $ kOObgZ4tf2LEaSmFfc555 (Obfusc) oder $ IIIIIIIIIIIl (PHP LockIt!) Durch $ var_3 ersetzt . Für ein einzelnes Skript können Sie dies in einem normalen Editor mit globaler Ersetzung tun. Bei mehreren Skripten müssen Sie zuerst alle Variablennamen aus allen Skripten extrahieren und erst dann einen globalen Austausch durchführen. Vergessen Sie nicht die Utility-Variablen wie die globalen Arrays $ _GET und $ _POST in PHP sowie reservierte Wörter in JavaScript. Sie müssen nicht verarbeitet werden. Damit der Austausch qualitativ besser durchgeführt werden kann, wird empfohlen, dies nach der Formatierung des Codes zu tun.

Dieser Artikel beschreibt nur die allgemeinen Prinzipien der Entschleierung, für jeden Fall wird es notwendig sein, einen individuellen Ansatz zu denken und anzuwenden. In der Regel ist es jedoch nicht notwendig, vollständig zu entbüßen, um einen Algorithmus auszuführen, der eine einzelne Funktion knackt oder analysiert.