Wie funktioniert ionCube intern arbeiten?

ionCube speichert php-Dateien verschlüsselt und es wird installiert als php-Erweiterung, aber was ich wissen will ist, wenn ich bitte das verschlüsselte php-Datei, die aus nicht-verschlüsselte php-Datei, wie macht php-compiler ausgeführt wird.

Funktioniert es senden Sie die verschlüsselte Datei, die den ionCube-server und Holen Sie sich die original-Datei und kompilieren Sie das, oder ist es etwas anderes.

Bedeutet, wie die Kommunikation zwischen unserem server und ionCube. Ich denke, es ist durch curl, aber ich will wissen, wie es funktioniert.

  • Sie meinen, Sie wollen eine high-level-Sicht auf Ihren Betrieb, richtig? Eine low-level-Erklärung wäre zu breit. für jeden Stapel Exchange-Standort. Nicht die offizielle Dokumentation beantworten Sie diese bereits?
  • Nach der Lektüre des Allgemeine Beschreibung von ionCube, ich kann sagen, es kann beides sein. Die „einfache“ Ausführung kompiliert die php-Dateien in bytecode (obfuskation und Verschlüsselung), aber es gibt auch dies: „die Version 9.0 beinhaltet die neuen features von dynamischen und externen Schlüsseln, weiter zu gehen, in den Schutz der kompilierte bytecode.“, was es scheint, ist das, was Sie gefragt haben.
InformationsquelleAutor Amit Singh | 2016-10-03



One Reply
  1. 10

    Wie Sie vielleicht abgeholt haben, jetzt in original-code niemals erhalten, und die Verarbeitung basiert auf bytecode.

    Hier einige high-level-Informationen, die helfen können.

    PHP-Erweiterungen

    PHP hat zwei Arten von Erweiterungen, Modul Erweiterungen wie CURL, die in der Regel wickeln externe APIs und setzen Ihre Funktionalität über neue PHP-Funktionen und PHP Motor Erweiterungen. Obwohl die Unterscheidung ist nicht in Stein gemeißelt, Motor-Erweiterungen neigen dazu, interagieren mit der PHP-compiler und Ausführung Motor, wenn Sie eventuell neue PHP-Funktionen zu. ionCube ist eine engine-Erweiterung, die fügt auch PHP-Funktionen für die API und auch zu unterstützen ionCube24, obwohl auch installierbar, als Modul-Erweiterung mit dl(). Beide Arten von Modulen sind gemeinsam genutzte Bibliotheken, und einer einzigen Zeile in der php.ini-Datei wird verwendet, um eine Erweiterung zu PHP, mit PHP die Nutzung von OS-Funktionen, um eine dynamische Verknüpfung der Bibliothek in den Laufenden Prozess.

    Haken

    PHP internen Haken, die es ermöglichen, eine Erweiterung intercept kompilieren und ausführen Phasen der Quell-Datei Verarbeitung. Eine Erweiterung verwenden können diesen einfach um zusätzliche Schritte ausführen, bevor oder nach der regulären Verarbeitung, oder ersetzen Sie die üblichen Verarbeitung völlig. Der ionCube Loader verwendet die compile-Haken zum untersuchen einer Datei, bevor der PHP-engine kompiliert, und übernimmt die Aufgabe der Verarbeitung der Datei, wenn es eine ionCube-Datei. Das Ergebnis der Lektüre eine ionCube-Datei oder normale Zusammenstellung ist letztlich bytecode, jedoch ionCube-bytecode ist nicht-standard, und mit version 9 kann es immer noch verschlüsselt oder nicht verfügbar sind aus anderen Gründen nach der anfänglichen Verarbeitung der Datei. Wie die standard-Ausführung der Motor nicht verarbeiten kann, ionCube-bytecode, der Loader nutzt auch die Ausführung Haken zu nehmen, über die Ausführung des kompilierten code, wenn es gelesen wurde von einem ionCube-verschlüsselte Datei.
    Eine weitere Aufgabe der Loader ist es, Dateien für bestimmte ältere version von PHP laufen auf neueren Versionen, und, wo nötig, führt das Ladeprogramm on-the-fly Transformationen der kompilierte code nutzbar zu machen, auf welche version von PHP läuft. PHP Interna wesentlich ändern von Zeit zu Zeit, zuletzt und besonders signifikant zwischen PHP 5 und 7, so dass dies eine anspruchsvolle, aber wichtige Aufgabe für end-user experience.

    Verarbeitung von ionCube-Dateien erfordert nicht die Kommunikation mit externen Servern, aber seit der version 9, code geschützt werden können mit Verschlüsselungen, die nur existieren, wenn zur Laufzeit durch die PHP-Anwendung selbst, und eine Anwendung Entwickler können PHP-code, der macht externe Anrufe oder zum erlangen von Daten, die für den Bau der Entschlüsselungs-Schlüssel, wenn nötig.

    Codierte Dateien

    In Bezug auf die Dateien selbst, frühen PHP-encoding-tools dieser Art im wesentlichen kompiliert zu bytecode und serialisierte dieser form direkt auf die Dateien. Es gab nur wenig wissen und Interesse in den PHP internals unter den Entwicklern im Allgemeinen, und dieser Ansatz gab guten Schutz und ausgezeichnete Leistung. Wenn Interesse tauchte erstmals in der Herstellung von bytecode decompilers von einer hacker-Gruppe, die in China als die „Blaue Wind“ um 2006 ish, einfach kompilieren zu bytecode war eindeutig nicht mehr akzeptabel. In unterschiedlichem Grad, tools wie ionCube dann mehr Schutz rund um den bytecode zu behindern, die Aufgabe erfolgreich reverse engineering. Obwohl Schritte unternommen werden können, zu beschränken und die Wirksamkeit der Dekompilierung auch wenn der bytecode ist erholt, der Erfolg bei der code-Schutz hängt immer noch grundlegend auf der Fähigkeit, sich zu verstecken, die notwendigen dekodierschlüssel(s) obwohl, und alle encoding-tools dieser Art speichern wie ein Schlüssel in die kodierte Datei selbst.

    In sich entwickelnden code-Schutz für die ionCube version 9, eine Herausforderung war die Adresse die Begrenzung der gespeicherten Schlüssel und die Fähigkeit zum verschlüsseln von code ohne Speicherung der notwendigen Schlüssel für die Entschlüsselung statisch überall war die naheliegende und notwendige nächste Schritt. Dies wurde Hinzugefügt, wie ein feature namens „Dynamische Schlüssel“.

    Hoffentlich, das gibt etwas Einblick in, wie ionCube und in mancher Hinsicht ähnlichen tools arbeiten. Für mehr detaillierte Kenntnisse der engine-Erweiterung, Umsetzung, würde ich empfehlen, sich den Quellcode für die PHP OpCache und auch Derick Rethans Xdebug.

    Offenlegung: ich bin verbunden mit ionCube.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.