Heim Backend-Entwicklung PHP-Tutorial Universelle Methode zur Wiederherstellung verschlüsselter PHP-Dateien

Universelle Methode zur Wiederherstellung verschlüsselter PHP-Dateien

Oct 20, 2016 pm 02:15 PM
php

Im vorherigen Artikel „Praktische Wiederherstellung von PHP-verschlüsselten Dateien“ wurde erwähnt, dass ich die Mängel der PHP-Methode zum Verschlüsseln von Dateien entdeckt habe, also habe ich diesen Artikel geschrieben.

Hintergrundanalyse

Wie wir alle wissen, ist PHP eine Skriptsprache, und Skriptsprachen verwenden hauptsächlich Interpretation statt Kompilierung. Im Vergleich zu kompilierten Sprachen (C, C#, C) ist es daher nicht möglich, ExedLL direkt zu generieren. Daher kann die herkömmliche Verschlüsselungsmethode nicht verwendet werden.

Daher gibt es in PHP im Allgemeinen zwei Verschlüsselungsmethoden: Verschleierung und Verschlüsselung.

Verschleierung ist keine Verschlüsselung im engeren Sinne. Diese Art von Code ähnelt dem Code, der Pinyin-Abkürzungen zur Benennung von Variablen verwendet, sieht jedoch etwas aufwändiger aus. Dies würde den Rahmen unserer Diskussion sprengen.

Die Verschlüsselung erfolgt auf zwei Arten: zum einen mit der Erweiterung (Loader). Das andere ist keine Erweiterung.

Lassen Sie uns zunächst über die Verschlüsselungsmethode ohne Erweiterung sprechen. Diese Verschlüsselungsmethode ist sehr hirnlos, da ihr Entschlüsselungsprozess öffentlich ist und die Verwendung bekannter PHP-Funktionen erfordert. Der verschlüsselte Code sieht im Allgemeinen wie folgt aus:

<?phpeval(base64_decode("cGhwaW5mbygpOw=="));
Nach dem Login kopieren

Auch wenn es sehr kompliziert aussieht:

Universelle Methode zur Wiederherstellung verschlüsselter PHP-Dateien

ist nur eine Variation des oben Gesagten. Dieses Entschlüsselungsformular ist sehr leicht zu knacken, wenn es offengelegt wird. Suchen Sie einfach nach eval und ändern Sie es in echo.

Die andere Erweiterungsmethode ist komplizierter. Die Funktion der Erweiterung besteht hier hauptsächlich darin, den Code zu entschlüsseln und auszuführen. Im Vergleich zur Nicht-Erweiterungsform verbirgt sie den Entschlüsselungs- und Ausführungscode in der Erweiterung, sodass das Knacken komplizierter ist.

Die Erweiterungen werden hier im Allgemeinen in zwei Typen unterteilt: 1. Diejenigen, die Entschlüsselungsausführungsfunktionen bereitstellen. 2. Überschreiben Sie zend_compile_file direkt, um die Funktion zum Parsen benutzerdefinierter PHP-Dateien zu implementieren.

Das erste und typischste Beispiel ist der in meinem letzten Artikel erwähnte Zoeeyguard, der hauptsächlich die Funktion zend_eval_string zum Ausführen von PHP-Code verwendet.

Zur zweiten Art von Vertretern gehören: Zend Guard und Song Ge’s PHP-Beast.

Man kann sagen, dass die beiden Crack-Ideen ähnlich sind. Sie können dem Ausprobieren der Ideen in meinem vorherigen Artikel Vorrang einräumen.

Was wäre natürlich, wenn ich das Problem in meinem vorherigen Artikel nicht gelöst hätte?

Zu diesem Zeitpunkt müssen Sie eine große Killerwaffe verwenden.

Sie werden feststellen, dass ich im vorherigen Artikel über die beiden Funktionen zend_compile_file und zend_eval_string gesprochen habe. Einige kluge PHPer haben bereits darüber nachgedacht, ja! Die Idee besteht immer noch darin, eval zu finden und in echo zu ändern.

Praxisbeispiele

Wir können nicht einfach reden, ohne etwas zu tun. Nehmen wir ein Beispiel:

Dieses Mal beginnen wir mit dem PHP-Beast von Brother Song. Der Code von Bruder Song ist sehr schön geschrieben. Da er wusste, dass die AES-DES-Entschlüsselung Zeit braucht, hat er einen Cache geschrieben.

1. Laden Sie das PHP-Quellcodepaket für Linux herunter (am besten wählen Sie eines zwischen 5.6 und 5.5. 7 wird nicht unterstützt. Übrigens: Die Änderungen in 7 sind ziemlich groß. Viele Dinge sind nicht kompatibel. Zend Guard ist auch 7 wird hier nicht unterstützt.)

2. Finden Sie die Funktion in der Datei Zendzend_lingual_scanner.c: zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC). Folgendes: Fügen Sie den Code vor (der Code ist schlecht geschrieben, beschweren Sie sich nicht):

ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC)
{
    zend_lex_state original_lex_state;
    zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
    zend_op_array *original_active_op_array = CG(active_op_array);
    zend_op_array *retval=NULL;
    int compiler_result;
    zend_bool compilation_successful=0;
    znode retval_znode;
    zend_bool original_in_compilation = CG(in_compilation);

    /** BEGIN **/
    //加在这里的含义就是每次php编译php源码的时候都把这份源码打印一份
    char *buf;
    size_t size;
    zend_stream_fixup(file_handle, &buf, &size);
    printf("\n#######\nFILE TYPE: %d  FILE NAME: %s CONTENT: %s\n#######\n", (*file_handle).type, (*file_handle).filename, buf);
    /** END **/
Nach dem Login kopieren

Im PHP-Ordner ausführen:

//节省点时间
./configure --disable-ipv6 --disable-all
make
make install
Nach dem Login kopieren

4 , PHP wurde erfolgreich installiert.

5. Wir schreiben zwei Testdateien: Die Funktion lautet: test.php führt sie aus, um before.php zu verschlüsseln und after.php zu generieren.

//test.php
<?php
$path = __DIR__ . &#39;/before.php&#39;;
$newPath = __DIR__ . &#39;/after.php&#39;;
$result = beast_encode_file($path, $newPath, 0, BEAST_ENCRYPT_TYPE_DES);
var_dump($result);
Nach dem Login kopieren
//before.php
<?php
print &#39;http://wx-app.com.cn/&#39; . PHP_EOL;
Nach dem Login kopieren

7. Führen Sie die folgende PHP-Datei test.php und dann php after.php aus.

Sehen Sie sich die Screenshots unten an:

Universelle Methode zur Wiederherstellung verschlüsselter PHP-Dateien

Universelle Methode zur Wiederherstellung verschlüsselter PHP-Dateien

Universelle Methode zur Wiederherstellung verschlüsselter PHP-Dateien

Zusammenfassung

1. Es gibt kein Passwort, das nicht gebrochen werden kann. Wir können lediglich die Crackzeit verlängern. Wenn die Knackzeit größer ist als die Lebensspanne eines Menschen, dann ist diese Verschlüsselungsmethode durchaus erfolgreich.
2. So wie der Cracker bei verschlüsselten Programmen das Denken des Autors verstehen und erraten muss, muss der Autor auch die Methoden und Mittel des Crackers verstehen. Nur so können wir Programme schreiben, die schwieriger zu knacken sind.
3. Im Vergleich zur Verschlüsselung ist die Verschleierung meiner Meinung nach besser für die „Verschlüsselung“ des PHP-Quellcodes geeignet.
4. Wenn Sie Ihren PHP-Code verschlüsseln und veröffentlichen möchten, ist es am besten, die Gebühr zu erhöhen und den Quellcode direkt bereitzustellen.


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles