Suche Obfuscator/Code-Verschlüsselung

  • Thread starter Thread starter counteam
  • Start date Start date
C

counteam

Guest
Huhu :)

Ich suche für eigene Projekte eine gute verschlüsselungstechnik. Ich habe bei cms2day eine Gesehen, die mirgefällt:
PHP:
<?php 

/*

 cms2day <http://www.cms2day.de>
 Author: Matthias Müller <http://www.breakmedia.de>
 Copyright (c) 2007-2012, Ernst Metzger & Matthias Müller

 CMS [Last Update] 20.01.2012

 Der Autor übernimmt keinerlei Garantie für die Funktionsfähigkeit
 dieses Scripts. Jedoch gehen wir jedem Hinweis auf eine mögliche
 Sicherheitslücke umgehend nach und schließen diese falls vorhanden.

 Der Sourcecode darf beliebig geändert und modifiziert werden,
 jedoch dürfen Teile ohne schriftliche Einverständnis NICHT weiter-
 gegeben oder anderweilig verwendet werden! Alle Rechte vorbehalten.

 Weitere Infos in der beiliegenden README nachlesen.

*/

$_F=__FILE__;$_X='P2lCP1ouWlZWVlZAek12UXN6TV9PSDJNPiJBUUgyPXNPSG5oV094c0gyLk0yeVhzSDJYWi5aIjtWVnhXTzxlVz4kbk09PXNIeG47VnhXTzxlVz4kT1o9c09ITUg7VnhXTzxlVz4kV3M1TUg1O1Z4V088ZVc+JFlxM0huPWVXVy9POU07VnhXTzxlVz4kTXp6T3pZTVc5UUh4O1ZWc0E+KCFNWVo9cSgkTXp6T3pZTVc5UUh4KSk+XVYJVglaenNIPT4kTXp6T3pZTVc5UUh4O1YJVmxWVlp6c0g9PidCOXNjPnM5UyI9ZTxuImknO1ZaenNIPT4nQi4waUlzNU1INT42TXp9ZVc9UUh4QmguMGknO1ZaenNIPT4nQlFXaSc7Vlp6c0g9PiJCV3NpQmU+czlTXCI9ZTwwX1dzSHlcIj5PSDJXczJ5U1wiMm59cz0yLignIlgkX0NLVGonbk1zPU0nZFgiJywnPWU8MCcpO1wiPjJXZW5uU1wiZXk9c2NcImlJczVNSDVCaGVpQmhXc2kiO1ZWc0E+KDIuTTJ5SXM1TUg1RldXeE1ZTXNIKCk+U1M+PXpRTSk+XVYJVglaenNIPT4iQldzaUJlPnM5U1wiPWU8a19Xc0h5XCI+T0gyV3MyeVNcIjJufXM9Mi4oJyJYJF9DS1RqJ25Ncz1NJ2RYIicsJz1lPGsnKTtcIj4yV2VublNcIlwiaUlzNU1INT5leT1RZVdzbnNNek1IQmhlaUJoV3NpIjtWCVZsPk1Xbk0+XVZWCVp6c0g9PiJCV3NpQmU+czlTXCI9ZTxrX1dzSHlcIj5PSDJXczJ5U1wiMm59cz0yLignIlgkX0NLVGonbk1zPU0nZFgiJywnPWU8aycpO1wiPjJXZW5uU1wiXCJpM1laT3o9QmhlaUJoV3NpIjtWVmxWVlp6c0g9PidCaFFXaSc7Vlp6c0g9PidCaDlzY2knO1ZWWnpzSD0+J0I5c2M+czlTIj1lPDAiaSc7Vlp6c0g9PidCOXNjPjJXZW5uUyI8T1IiaSc7VlZzQT4oMi5NMnlJczVNSDVGV1d4TVlNc0goKT5TUz49elFNKT5dVglWCVp6c0g9PiJCLkppRlFBPjMuek1ZPnBxbj1NWT5zbj0+TXNITT5JczVNSDU+c0huPWVXV3NNej06QmguSmkiO1YJVglaenNIPT4iQj1lPFdNPjJXZW5uU1wieE09VGU8TVdXTVwiPjJNV1duWmUyc0h4U1wiYVwiPjJNV1daZTk5c0h4U1wiYVwiPm5RWVllenFTXCI9TVI9XCJpIjtWCVYJWnpzSD0+IkI9ej4yV2VublNcInhNPVRnX1llc0hcImlcSCI7VglaenNIPT4iQj05Pn1zOT0uU1wiMEphXCI+bj1xV01TXCI8T3o5TXotenN4Lj06PkhPSE07XCJpdU1zSE0+SXM1TUg1Qmg9OWlcSCI7VglaenNIPT4iQj05aUJoPTlpXEgiO1YJWnpzSD0+IkJoPXppXEgiO1YJVglaenNIPT4iQj16PjJXZW5uU1wieE09VGdfa1wiaVxIIjtWCVp6c0g9PiJCPTlpSXM1TUg1PnAyLlcmUVFZVztubk1XOkJoPTlpXEgiO1YJWnpzSD0+IkI9OWlCZT4uek1BU1wiWFhoWFhoc0gyV1E5TW5oPU1ZWmhXczVNSDVYMms5XCI+PXM9V01TXCJXczVNSDVYMms5XCJpQnNZeD5uejJTXCJYWGg5ZT1laHNZZXhNbmhZTTlzZT0uTXloMms5WFpIeFwiPmVXPVNcIldzNU1INVgyazlcIj5oaUJoZWlCaD05aVxIIjtWCVp6c0g9PiJCaD16aVxIIjtWCVYJWnpzSD0+IkI9ej4yV2VublNcInhNPVRnXzBcImlcSCI7VglaenNIPT4iQj05aTNIbj1lV1dzTXo9TT5JczVNSDU6Qmg9OWlcSCI7VglaenNIPT4iQj05aSJYeE09X1dzNU1INSgkV3M1TUg1aidXczVNSDUnZClYIkJoPTlpXEgiO1YJWnpzSD0+IkJoPXppXEgiO1YJVglaenNIPT4iQj16PjJXZW5uU1wieE09VGdfa1wiaVxIIjtWCVp6c0g9PiJCPTlpdU1zSD5JczVNSDUyTzlNOkJoPTlpXEgiO1YJWnpzSD0+IkI9OWkiWCRZcTNIbj1lV1cvTzlNWCJCaD05aVxIIjtWCVp6c0g9PiJCaD16aVxIIjtWCVYJWnpzSD0+IkI9ej4yV2VublNcInhNPVRnXzBcImlcSCI7VglaenNIPT4iQj05aUMmUVFZVztXPXN4PlFIPU16OkJoPTlpXEgiO1YJWnpzSD0+IkI9OWkiWCRuTT09c0h4bmonWmV4TV85c3onZFgiQmg9OWlcSCI7VglaenNIPT4iQmg9emlcSCI7VglWCVp6c0g9PiJCPXo+Mldlbm5TXCJ4TT1UZ19rXCJpXEgiO1YJWnpzSD0+IkI9OWkzSG49ZVdXc016PT5lWTpCaD05aVxIIjtWCVp6c0g9PiJCPTlpIlhZZXlNOWU9UVkoJFdzNU1INWonOWU9TSdkKVgiQmg9OWlcSCI7VglaenNIPT4iQmg9emlcSCI7VglWCVp6c0g9PiJCaD1lPFdNaSI7VglWbD5NV25NPl1WVglaenNIPT4nQlppQm49ek9IeGk0TXo1TXM9Pi5lPE1IPnBzTT5HSzNFSz5JczVNSDU+ZVFBPjMuek1ZPnBxbj1NWT5zSG49ZVdXc016PVhCaG49ek9IeGlCaFppJztWCVp6c0g9PidCWj5lV3N4SFMiClFuPXNBcSJpNE1IPjNIbj1lV1dlPXNPSG4+LT5HTXE+fU1zPU16PlFIPU1IPjxNSCZPUVlXOz1zeE1IPnBzTT5IUXo+PE1zPjlNej5JczVNSDU8TW49TVdXUUh4WD5Lej48c1c5TT0+TXNITUg+ZVFBPjMuek0+M0huPWVXV2U9c09IPnhNSE16c016PU1IPkdNcSw+ZVFuPjlNWT59c3o+PE1zPjMuek16Pm9Nbj1NV1dRSHg+TXNITUg+c0g5c2NzOVFNV1dNSD5JczVNSDU+cDIuVyZRUVlXO25uTVc+QSZRUVlXO3o+cHNNPnhNSE16c016TUhYPjRzTW5Nej5JczVNSDU+cDIuVyZRUVlXO25uTVc+fXN6OT4uc016PmVIbjIuV3NNJm41V3N4O01IOT5zWVpPej1zTXo9PlFIOT45c00+SXM1TUg1Pm5PWXM9PkF6TXN4TW4yLmVXPU09WEJoWmknO1YJWnpzSD0+J0Iuej5uPXFXTVMiWWV6eHNIOj5rYVpSPmFaUjsiPmhpJztWCVp6c0g9PidCWmlCbj16T0h4aTNIbj1lV1dlPXNPSG4+LT5HTXE6QmhuPXpPSHhpQmhaaSc7VglaenNIPT4nQlppQnNIWlE9Pj1xWk1TIj1NUj0iPkhlWU1TIllxM0huPWVXVy9POU0iPmNlV1FNUyInWCRZcTNIbj1lV1cvTzlNWCciPnM5UyJZcTNIbj1lV1cvTzlNIj5PSDJXczJ5UyI9LnNuWG5NV00yPSgpIj56TWU5T0hXcVMiek1lOU9IV3EiPmhpQmhaaSc7VlZsVlZaenNIPT4nQmg5c2NpJztWWnpzSD0+J0JoOXNjaSc7VlZaenNIPT4nQjlzYz5zOVMiPWU8ayJpJztWWnpzSD0+J0I5c2M+Mldlbm5TIjxPUiJpJztWVnNBPigyLk0yeUlzNU1INUZXV3hNWU1zSCgpPlNTPj16UU0pPl1WCVYJWnpzSD0+IkIuSmlyZVdXbj5wc00+WXM9PjMuek1ZPnBxbj1NWT5RWXhNNU94TUg+bnNIOT48TUgmT1FZVzs9c3hNSD5wc00+TXNITUg+SE1RTUg+SXM1TUg1PnAyLlcmUVFZVztubk1XWD4zWT5yZVdXTT5Nc0hNbj4gWTVReG4+TzlNej5Nc0hNej5FTVFzSG49ZVdXZT1zT0g+fU1IOU1IPnBzTT5uczIuPjxzPT1NPmVIPjlNSD5wUVpaT3o9WD40TUg+SE1RTUg+SXM1TUg1PnAyLlcmUVFZVztubk1XPlkmUVFZVztubk1IPnBzTT5lSG4yLldzTSZuNVdzeDtNSDk+JlFRWVc7PE16PjlzTW5Nbj5yT3pZUVdlej5leT1RZVdzbnNNek1ILD45ZVlzPT45c00+JkZRWVc7SDlNelFIeE1IPn1zenluZVk+fU16OU1IWEJoLkppIjtWCVp6c0g9PidCLno+bj1xV01TIlllenhzSDo+a2FaUj5hWlI7Ij5oaSc7VglaenNIPT4nQi5raUlzNU1INT5wMi5XJlFRWVc7bm5NVz5leT1RZVdzbnNNek1IQmgua2knO1YJWnpzSD0+J0IuSmlvcz09TT59JmVRWVc7LldNSD5wc00+My56TT5ITVFNPlwnV3M1TUg1WDJrOVwnLTRlPU1zPmVRbjpCaC5KaSc7VglWbD5NV25NPl1WVglaenNIPT4nQi5raUlzNU1INT5wMi5XJlFRWVc7bm5NVz5zWVpPej1zTXpNSEJoLmtpJztWCVp6c0g9PidCLkppb3M9PU0+fSZlUVlXOy5XTUg+cHNNPjMuek0+XCdXczVNSDVYMms5XCctNGU9TXM+ZVFuOkJoLkppJztWVmxWVlp6c0g9PidCQU96WT5IZVlNUyJRWldPZTkiPmUyPXNPSFMic0g5TVJYWi5aP25Ncz1NU1dzNU1INSZlWVo7ZTI9c09IU3NZWk96PSI+WU09Lk85UyJaT249Ij5PSG5RPFlzPVMiMi5NMnkoXCdzWVpPej1cJyw9LnNuKTsiPk1IMj1xWk1TIllRVz1zWmV6PWhBT3pZLTllPWUiaSc7Vlp6c0g9PidCWmlCc0haUT0+SGVZTVMiV3M1TUg1Ij49cVpNUyJBc1dNIj5uczVNUyJKayI+aGk+QnNIWlE9PkhlWU1TInNZWk96PSI+PXFaTVMiblE8WXM9Ij5jZVdRTVMiRnk9UWVXc25zTXpNSCI+aGlCaFppJztWWnpzSD0+J0JoQU96WWknO1ZaenNIPT4nQmg5c2NpJztWWnpzSD0+J0JoOXNjaSc7VlY/aQ=';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdTZ1BPOVlaV0ZLbXF5ZnhjakxKUnp1TTV2TnRzMWIue0I0bkNdaS8yRGwwRWhlQQpbZDg9UXA+VlhvIEh9NkdJdzdrYTNUclU8JywnPVI5b2RtcGxBRVB5azhndls1M3hyTWV6cVpIaTdZaFc8RHNHez5DY1h9MU4vYWZqNl1KdHVTIAouQlVud1ZLTFFPMjBJVEY0YicpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw='));?>

Ich habe mal versucht des ganze zu rekonstruieren, was aber nicht gerade leicht ist. Kann mir jemand sagen womit des verschlüsselt wurde? Diese Technik gefällt mir!

Mit Zend opder ioncube bitte NICHT ankommen, es sollte vorrausgesetzt werden, dass KEINE Extensions installiert werden müssen!

Ich wäre euch für Infos dankbar.
 
Meist ist es relativ einfach, die mit einem Obfuscator behandelten Dateien wieder zu entschlüsseln. Letztendlich hast du ja alles da. Den verschleierten Code und die Anweisungen, um diesen wieder zu "entschlüsseln". Denn letztendlich braucht PHP den entschlüsselten Code.
In deinem Beispiel wird übrigens mit einer base64-Codierung gearbeitet.
 
Meist ist es relativ einfach, die mit einem Obfuscator behandelten Dateien wieder zu entschlüsseln. Letztendlich hast du ja alles da. Den verschleierten Code und die Anweisungen, um diesen wieder zu "entschlüsseln". Denn letztendlich braucht PHP den entschlüsselten Code.
In deinem Beispiel wird übrigens mit einer base64-Codierung gearbeitet.

Schon klar. Bloß ich wurde gerne wissen ob und mit welchem Programm/Software dies gemacht wurde.
 
Schon klar. Bloß ich wurde gerne wissen ob und mit welchem Programm/Software dies gemacht wurde.

Nein, es ist dir noch nicht klar. Das ganze ist wie mein Vorposter schon sage nicht verschlüsselt, sondern bestenfalls nur etwas "umständlich gespeichert".

Das hier ist der vermeintlich "geheime" Code:

PHP:
<?php
@require_once "functions/logincheck.inc.php";

global $settings;
global $optionen;
global $lizenz;
global $myInstallCode;
global $errormeldung;

if (!empty($errormeldung)) {
	
	print $errormeldung;
	
}

print '<div id="tabs">';
print '<h1>Lizenz Verwaltung</h1>';
print '<ul>';
print "<li><a id=\"tab1_link\" onclick=\"cswitch('".$_GET['seite']."','tab1');\" class=\"aktiv\">Lizenz</a></li>";

if (checkLizenzAllgemein() == true) {
	
	print "<li><a id=\"tab2_link\" onclick=\"cswitch('".$_GET['seite']."','tab2');\" class=\"\">Lizenz aktualisieren</a></li>";
	
} else {

	print "<li><a id=\"tab2_link\" onclick=\"cswitch('".$_GET['seite']."','tab2');\" class=\"\">Import</a></li>";

}

print '</ul>';
print '</div>';

print '<div id="tab1">';
print '<div class="box">';

if (checkLizenzAllgemein() == true) {
	
	print "<h3>Auf Ihrem System ist eine Lizenz installiert:</h3>";
	
	print "<table class=\"getTabelle\" cellspacing=\"0\" cellpadding=\"0\" summary=\"text\">";
	
	print "<tr class=\"getTR_main\">\n";
	print "<td width=\"130\" style=\"border-right: none;\">Meine Lizenz</td>\n";
	print "<td></td>\n";
	print "</tr>\n";
	
	print "<tr class=\"getTR_2\">\n";
	print "<td>Lizenz Schl&uuml;ssel:</td>\n";
	print "<td><a href=\"../../includes/temp/lizenz.c2d\" title=\"lizenz.c2d\"><img src=\"../data/images/mediathek/c2d.png\" alt=\"lizenz.c2d\" /></a></td>\n";
	print "</tr>\n";
	
	print "<tr class=\"getTR_1\">\n";
	print "<td>Installierte Lizenz:</td>\n";
	print "<td>".get_lizenz($lizenz['lizenz'])."</td>\n";
	print "</tr>\n";
	
	print "<tr class=\"getTR_2\">\n";
	print "<td>Mein Lizenzcode:</td>\n";
	print "<td>".$myInstallCode."</td>\n";
	print "</tr>\n";
	
	print "<tr class=\"getTR_1\">\n";
	print "<td>G&uuml;ltig unter:</td>\n";
	print "<td>".$settings['page_dir']."</td>\n";
	print "</tr>\n";
	
	print "<tr class=\"getTR_2\">\n";
	print "<td>Installiert am:</td>\n";
	print "<td>".makedatum($lizenz['date'])."</td>\n";
	print "</tr>\n";
	
	print "</table>";
	
} else {

	print '<p><strong>Derzeit haben Sie KEINE Lizenz auf Ihrem System installiert.</strong></p>';
	print '<p align="justify">Den Installations - Key weiter unten ben&ouml;tigen Sie nur bei der Lizenzbestellung. Er bildet einen auf Ihre Installation generierten Key, aus dem wir bei Ihrer Bestellung einen individuellen Lizenz Schl&uuml;ssel f&uuml;r Sie generieren. Dieser Lizenz Schl&uuml;ssel wird hier anschlie&szlig;end importiert und die Lizenz somit freigeschaltet.</p>';
	print '<hr style="margin: 20px 0px;" />';
	print '<p><strong>Installations - Key:</strong></p>';
	print '<p><input type="text" name="myInstallCode" value="'.$myInstallCode.'" id="myInstallCode" onclick="this.select()" readonly="readonly" /></p>';

}

print '</div>';
print '</div>';

print '<div id="tab2">';
print '<div class="box">';

if (checkLizenzAllgemein() == true) {
	
	print "<h3>Falls Sie mit Ihrem System umgezogen sind ben&ouml;tigen Sie einen neuen Lizenz Schl&uuml;ssel. Im Falle eines Umzugs oder einer Neuinstallation wenden Sie sich bitte an den Support. Den neuen Lizenz Schl&uuml;ssel m&uuml;ssen Sie anschlie&szlig;end &uuml;ber dieses Formular aktualisieren, damit die &Auml;nderungen wirksam werden.</h3>";
	print '<hr style="margin: 20px 0px;" />';
	print '<h2>Lizenz Schl&uuml;ssel aktualisieren</h2>';
	print '<h3>Bitte w&auml;hlen Sie Ihre neue \'lizenz.c2d\'-Datei aus:</h3>';
	
} else {

	print '<h2>Lizenz Schl&uuml;ssel importieren</h2>';
	print '<h3>Bitte w&auml;hlen Sie Ihre \'lizenz.c2d\'-Datei aus:</h3>';

}

print '<form name="upload" action="index.php?seite=lizenz&amp;action=import" method="post" onsubmit="check(\'import\',this);" enctype="multipart/form-data">';
print '<p><input name="lizenz" type="file" size="32" /> <input name="import" type="submit" value="Aktualisieren" /></p>';
print '</form>';
print '</div>';
print '</div>'; ?>

für sowas wirst du auch kein Programm finden weil
1. es nichts hilft, und jeder der dir sowas als Obfuscator oder Verschlüsselung verkauft sich wohl des Betrugs strafbar macht
2. du es selbst ganz einfach mit ein paar str_replace und base64_encode/_decode() hinbekommst.

Das hier war der Entschlsselungsablauf in der von dir geposteten Datei (beim Speichern darauf achten dass die Zeilenumbrüche im Unix-Format sein müssen, da sie Teil des "Schlüssels" sind):

PHP:
<?php 
$_X=base64_decode($_X);
$_X=strtr($_X,'SgPO9YZWFKmqyfxcjLJRzuM5vNts1b.{B4nC]i/2Dl0EheA
[d8=Qp>VXo H}6GIw7ka3TrU<','=R9odmplAEPyk8gv[53xrMezqZHi7YhW<DsG{>CcX}1N/afj6]JtuS 
.BUnwVKLQO20ITF4b');
$_R=str_replace('__FILE__',"'".$_F."'",$_X);
?>

Ein richtiger Obfuscator für PHP, als Compiler-Erweiterung, ist hier dann nicht mehr so einfach zu entschlüsseln, aber du kannst deinen Code damit auch nicht mehr so einfach zum download anbieten da jeder der die PHP Datei laufen lassen möchte diese (idR. Kostenpflichtige) Compilererweiterung bei sich auf dem Server braucht.

Und letztendlich kann man auch bei einen "richtigen" Obfuscator, wenn man genug Zeit hat, den Code soweit analysieren dass man zumindest die interessanten Stellen ausfindig macht und "ausbessert".

Wenn du deinen code wirklich sicher wissen willst, schreib deine Anwendung in C++ (oder einer anderen OO-Sprache die direkt in Maschinenbefehle übersetzt wird und ausreichend komplexe Sprachkonstrukte bietet) - daran beißen diverse Decompiler heute noch die Zähne aus. ^^
 
Last edited by a moderator:
ber du kannst deinen Code damit auch nicht mehr so einfach zum download anbieten da jeder der die PHP Datei laufen lassen möchte diese (idR. Kostenpflichtige) Compilererweiterung bei sich auf dem Server braucht.
Das ist so nicht richtig, alle mir bekannten Opcode/Bytecode-Compiler bieten kostenfreie "Loader"-Extensions an. Allerdings muss der Webhoster diese dann auch geladen haben oder den Kunden laden lassen, was meist nur fuer Zend Encoder und Ioncube der Fall ist.

Es gilt dass Engines die keinen eigenen Loader brauchen (wie PHPCipher) nur eine rechenaufwendige PHP-basierte Verschluesslungsschicht verwenden waehrend deren eigene 'Engine' dann mit dem jeweiligen Loader (wie Zend Encoder) verschluesselt ist.

Verschluesslung macht Reverse-Engineering bei weitem aber noch immer nicht unmoeglich, da PHP die Kommandos noch immer durch den Interpreter laufen lassen muss und Opensource ist kann man diesen leicht modifizieren und die Befehlsfolge ausgeben lassen. Es gibt natuerlich "Compiler" die Reverse-Engineering durch die Wahl der Variablen und Umbau der internen Logik moeglichst verkomplizieren, aber den (oder zumindest einen) Sourcecode kriegt man so oder so.
Fuer Zend gibts sogar Seiten wie ShowMyCode die es kostenfrei und schnell ermoeglichen den Sourcecode zu rekonstruieren, Ioncube ist nur ein Tick komplizierter.

Allerdings: wenn du deinen Kunden wirklich dies antun willst, dann viel Spass.
Kunden ziehen aber in aller Regel vor selbst mal am Sourcecode Hand anlegen zu koennen und etwas zu aendern was ein Pluspunkt fuer dein Produkt ist oder sein kann, vor Piraterie schuetzt es dich eh nur minimal.
 
AFAIK braucht auch PHPCipher den Zend Optimizer, dass "No-Loader-required"-Argument wird dort damit zusammengezimmert, dass Zend Optimizer in der Mehrzahl der Fälle bei den Webhostern vorinstalliert ist. Ergo, damit auch keine Lösung im Sinne des TE.

Alle Lösungen ohne Loader sind IMHO Snakeoil und sorgen letztlich nur für Verärgerung evtl. ehrlicher Käufer bei individuellen Anpassungsbedarf. Obwohl es dafür einen Markt zu geben scheint, verzichten interessanter Weise nahezu alle namhaften kommerziellen Scripte auf diese Methode.
 
Ergo, damit auch keine Lösung im Sinne des TE.
Hatte ich doch geschrieben =(
[...] waehrend deren eigene 'Engine' dann mit dem jeweiligen Loader (wie Zend Encoder) verschluesselt ist.

Alle Lösungen ohne Loader sind IMHO Snakeoil
FTFY:
Alle Lösungen sind IMHO Snakeoil

sorgen letztlich nur für Verärgerung evtl. ehrlicher Käufer
Das tut Zend Encoder schon seit PHP 5.3 sehr gut. (Naja auch schon vorher...)

verzichten interessanter Weise nahezu alle namhaften kommerziellen Scripte auf diese Methode.
Gut so, bei Bedarf ist es einfacher ein Ioncube/Zend-Skript zu reverse-engineeren (dank ReflectionClass und Decompiler) als eine Eigenbauloesung des Herstellers. Du glaubst nicht wieviele Skripte ich bereits fixen musste wo der Hersteller bereits seit Jahren nicht mehr existiert und das Skript nicht zu neuen PHP-Versionen tauglich ist....
 
Es gibt von den Happy Ninjas ein kleines Tool um IonCube auszuhebeln, war echt erstaunt wie gut das funktioniert hat. Am Ende hatte man einen sehr gut lesbaren Code, und man wusste was da abgeht.

Das was du gepostet hast, ist nichts anderes als Obsufacting, für jeden PHP Entwickler, oder könner ist das kein Problem zu "reversen". ;)
 
OT: Wenn man allerdings diesen Kackhaufen von "Code" in Posting 4 sieht, ist es wohl besser, wenn der verschleiert ist. Keine Ahnung, aus welchen Gründen man es schafft, 90% der Datei als HTML durch den PHP Interpreter zu schicken und dabei noch wie bekloppt escapen muss.

EDIT: Habe mir den Quellcode von der Software angesehen - diese "Technik" ist flächendeckend eingesetzt. Dazu kommen Leckerlis wie pro Datei eine (!!!) Funktion oder der Wechsel zwischen Latin-1 und UTF-8 als Kodierung. Und dafür soll man noch Geld bezahlen :o
 
Last edited by a moderator:
Back
Top