web-dev-qa-db-fra.com

Existe-t-il un obfuscateur de code pour PHP?

Quelqu'un a-t-il utilisé un bon obfuscateur pour PHP? J'en ai essayé mais ils ne fonctionnent pas pour de très gros projets. Ils ne peuvent pas gérer les variables incluses dans un fichier et utilisées dans un autre, par exemple.

Ou avez-vous d'autres astuces pour arrêter la propagation de votre code?

207
user29593

Vous pouvez essayer PHP protect qui est un obfuscateur gratuit PHP pour masquer votre code PHP.
Il est très agréable, facile à utiliser et également gratuit.
  EDIT: Ce service n'est plus en ligne.

En ce qui concerne ce que d’autres ont écrit sur le fait de ne pas utiliser l’obscurcissement, car il peut être cassé, etc.:
Je n’ai qu’une chose pour y répondre: ne fermez pas à clé la porte de votre maison, car tout le monde peut choisir votre serrure.
C’est exactement le cas, l’obfuscation n’est pas destinée à empêcher le vol de code à 100%. Il faut seulement que cela prenne beaucoup de temps, il sera donc moins coûteux de payer le codeur d'origine. J'espère que cela t'aides.

233
yossi

Les gens vont vous proposer des obscurcissements, mais aucune quantité d’obscurcissement ne peut empêcher quelqu'un d’obtenir votre code. Aucun. Si votre ordinateur peut l'exécuter, ou dans le cas de films et de musique s'il peut le lire, l'utilisateur peut y accéder. Même la compilation en code machine rend le travail un peu plus difficile. Si vous utilisez un obfuscateur, vous vous leurrez. Pire encore, vous interdisez également à vos utilisateurs de corriger des bogues ou d’apporter des modifications.

Les sociétés de musique et de cinéma ne sont pas encore au bout de leurs peines. Elles dépensent encore des millions en DRM.

Dans des langages interprétés comme PHP et Perl, c'est trivial. Perl avait l'habitude d'avoir beaucoup de code obscurcissant, alors nous avons réalisé que vous pouvez les décompiler de manière triviale.

Perl -MO=Deparse some_program

PHP a des choses comme DeZender et Show My Code .

Mon conseil? Rédigez une licence et obtenez un avocat. La seule autre option consiste à ne pas donner le code, mais à exécuter un service hébergé.

Voir aussi le entrée perlfaq sur le sujet .

110
Schwern

Rien ne sera parfait. Si vous voulez juste quelque chose pour arrêter les non-programmeurs, voici un petit script que j'ai écrit et que vous pouvez utiliser:

<?php
$infile=$_SERVER['argv'][1];
$outfile=$_SERVER['argv'][2];
if (!$infile || !$outfile) {
    die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>\n");
}
echo "Processing $infile to $outfile\n";
$data="ob_end_clean();?>";
$data.=php_strip_whitespace($infile);
// compress data
$data=gzcompress($data,9);
// encode in base64
$data=base64_encode($data);
// generate output text
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
// write output text
file_put_contents($outfile,$out);
29
John

Je ne suis pas sûr que vous puissiez qualifier d'obfuscation d'un langage interprété comme inutile (je ne peux pas ajouter de commentaire au message de Schwern, une nouvelle entrée est donc ici).

Je pense qu’il est un peu myope de supposer que vous connaissez tous les scénarios possibles dans lesquels une personne souhaite masquer un code, et vous supposez que tout le monde sera prêt à tout mettre en œuvre pour afficher ce code une fois qu’il sera masqué. Considérez mon scénario actuel:

Je travaille pour une société de conseil qui développe un site basé sur PHP volumineux et assez sophistiqué. Le projet sera hébergé sur un serveur client hébergeant d'autres sites développés par d'autres sociétés de conseil. Techniquement, tout code que nous écrivons est la propriété du client, nous ne pouvons donc pas le concéder sous licence. Cependant, tout autre consultant (concurrent) ayant accès au serveur peut copier notre code sans obtenir l'autorisation préalable du client. Nous avons donc un véritable motif d’obscurcissement: faire l’effort requis par un concurrent pour comprendre notre code davantage que l’effort de créer une copie de notre travail à partir de zéro.

20
tomfumb

Voir notre SD Thicket PHP Obfuscator pour un obfuscateur qui fonctionne parfaitement avec des ensembles de pages arbitrairement volumineux. Il fonctionne principalement en brouillant les noms d'identifiants. Avec des applications modestes à volumineuses, cela peut rendre le code extrêmement difficile à comprendre, ce qui est tout.

Il ne gaspille aucune énergie sur les schémas "eval (decode () encodedprogramcode ))", qui contient beaucoup de PHP "obfuscators "do [ce sont des" encodeurs ", pas des" obfuscateurs "], car toute motte peut trouver cet appel et exécuter lui-même le décodage eval et obtenir le code décodé.

Il utilise un analyseur de langage précis pour traiter PHP; il vous dira si votre programme est syntaxiquement invalide. Plus important encore, il connaît la langue entière avec précision; elle ne sera ni perdue ni confuse, et votre code ne sera pas cassé (autre que ce qui se passera si vous obscurcissez "de manière incorrecte", par exemple, n'arrivez pas à identifier correctement l'API publique du code).

Oui, cela obscurcit les identifiants à l'identique d'une page à l'autre. sinon, le résultat ne fonctionnerait pas.

16
Ira Baxter

Le meilleur que j'ai vu est Zend Guard .

14
CMS

Essayez celui-ci: http://www.pipsomania.com/best_php_obfuscator.do

Récemment, je l'ai écrit dans Java pour masquer mes projets PHP, parce que je ne trouvais aucun produit compatible écrit compatible sur le net, j'ai décidé de le mettre en ligne en tant que saas, afin que tout le monde l'utilise gratuitement. Il ne modifie pas les noms de variable entre différents scripts pour une compatibilité maximale, mais les obscurcit très bien, avec une logique aléatoire, chaque instruction également. Cordes ... tout. Je crois que c'est beaucoup mieux que ce buggy codeeclipse, qui est d'ailleurs écrit en PHP et très lent :)

10
PatlaDJ

Thicket ™ Obfuscator pour PHP

L'outil PHP Obfuscator brouille le code source de PHP pour le rendre très difficile à comprendre ou à effectuer un reverse engineering (exemple). Cela fournit une protection importante à la propriété intellectuelle du code source qui doit être hébergée sur un site Web ou expédiée à un client. C'est un membre de la famille des obscurcisseurs de code source de SD.

Utiliser SourceGuardian est bon car il est livré avec une interface graphique cool et facile à utiliser.

mais attention:

Faites attention à ses termes de licence - plutôt drôles -.

  • Vous n'êtes autorisé à utiliser que 1 machine par machine. Dans la mesure du possible, cela est acceptable.
  • Si vous souhaitez exécuter l'interface de ligne de commande sur une autre machine, dites votre serveur Web, VOUS AUREZ BESOIN D'UNE LICENCE additionnelle (Oui, c'est drôle et je vous entends rire aussi).
2
Herr