PHP ist derzeit die beliebteste Web-Programmiersprache, ohne Ausnahme. Da PHP jedoch interpretiert und ausgeführt wird, ist der Quellcode das Programm und die Verschlüsselung ist für die Kommerzialisierung (oder andere Zwecke) unerlässlich. In dieser Serie werden einige gängige/häufig verwendete PHP-Verschlüsselungsmethoden in China vorgestellt und analysiert.
Wie verschlüssele ich PHP-Quellcode?
Wie verschlüssele ich PHP-Quellcode:
1. Verschlüsselung ohne PHP-Erweiterung
Zu den Vertretern dieser Art der Verschlüsselung gehören der PHP-Verschlüsselungsexperte Weidun, die PHP-Online-Verschlüsselungsplattform, PHP Aegis usw.
Diese Art der Verschlüsselung basiert auf der Bewertungsfunktion als Kern und wird durch verschiedene String-Verschleierungen und verschiedene Tricks ergänzt, um den Zweck der Verschlüsselung zu erreichen (genauer gesagt sollte sie als Verwirrung betrachtet werden). Im Folgenden wird als Beispiel eine einfache Hallo-Welt verwendet, um den allgemeinen Prozess dieser Art der Verschlüsselung zu veranschaulichen.
<?php echo "hello world";
Zuerst wandeln wir diesen Code in
<?php eval('echo "hello world";');
um und dann führen wir einige Konvertierungen durch, wie z. B. Base64-Codierung
<?php eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));
Das war's, unser erster verschlüsselter PHP-Code ist frisch gebacken. . .
Das obige Beispiel ist sehr, sehr einfach. Im Grunde kann es jeder mit ein wenig Grundkenntnissen in PHP oder anderen Sprachen leicht verstehen und entschlüsseln. Deshalb brauchen wir eine Möglichkeit, diese Verschlüsselung nicht zumindest einfach aussehen zu lassen.
2. Verwenden Sie mehrere Codierungsfunktionen gleichzeitig
Zusätzlich zu Base64 verfügt PHP auch über viele integrierte Codierungsfunktionen, wie z. B. URL-Code, gzcompress usw. Das Mischen dieser Funktionen kann die Komplexität (nicht die Schwierigkeit) der Entschlüsselung erhöhen. Darüber hinaus können Sie strtr verwenden, um Ihre eigenen Kodierungsregeln zu formulieren. Verwenden Sie Variablen anstelle von Funktionsnamen. Verwenden Sie bestimmte Zeichen, um Variablen zu benennen.
Die hier genannten spezifischen Zeichen sind sehr ähnliche Zeichen, wie z. B. I und 1, 0 und O. Stellen Sie sich vor, dass der gesamte Bildschirm mit Variablen gefüllt ist, die aus O und 0 bestehen und deren Name jeweils mehr als 10 Zeichen lang ist. . . Feststellen, ob die Datei selbst geändert wurde
Diese Funktion scheint einfach zu sein. Erstellen Sie eine Zusammenfassung der Datei und vergleichen Sie sie dann, um festzustellen, ob sie geändert wurde. Aber wie können wir die Zusammenfassung in die Datei einbetten? Ich habe keine perfekte Lösung gefunden, aber eine Problemumgehung ist einfach genug. . .
<?php $code = substr(file_get_contents(__FILE__), 0, -32); $hash = substr(file_get_contents(__FILE__), -32); if(md5($code) !== $hash) { exit('file edited'); } ACBC41F727E00F85BEB3440D751BB4E3
Natürlich können Sie diese Bestätigungszeichenfolge an anderen Stellen platzieren, um die Schwierigkeit des Knackens zu erhöhen. Damit ist es für andere etwas aufwändiger, Ihr Programm zu knacken. . .
Da Sie nun das Prinzip kennen, ist die Entschlüsselung natürlich sehr einfach. Im Allgemeinen gibt es drei Schritte:
Ersetzen Sie eval durch eine Ausgabe, z. B. echo, und stellen Sie die Zeichenfolge gemäß den Codierungsregeln wieder her Wenn die Datei nicht vollständig entschlüsselt ist, fahren Sie mit dem ersten Schritt fort
Natürlich ist der eigentliche Entschlüsselungsprozess nicht so einfach. Wenn beispielsweise gzcompress während der Verschlüsselung verwendet wird, enthalten die erhaltenen Daten einige Binärdaten , und Beim Öffnen mit einem allgemeinen Texteditor werden diese Daten als verstümmelte Zeichen angezeigt und einige Daten gehen beim Speichern verloren. Die Lösung ist sehr einfach und mühsam: Verwenden Sie zum Öffnen, Ändern und Speichern den binären (hexadezimalen) Modus.
Das obige ist der detaillierte Inhalt vonWie verschlüssele ich PHP-Quellcode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!