php est actuellement le langage de programmation Web le plus populaire, sans exception. Cependant, puisque PHP est interprété et exécuté, le code source est le programme et le cryptage est essentiel à la commercialisation (ou à d'autres fins). Cette série présentera et analysera certaines méthodes de cryptage PHP courantes/couramment utilisées en Chine.
Comment crypter le code source php ?
Comment crypter le code source php :
1. Cryptage sans aucune extension PHP
Les représentants de ce type de cryptage incluent l'expert en cryptage PHP Weidun, la plateforme de cryptage en ligne PHP, PHP Aegis, etc.
Ce type de cryptage utilise la fonction eval comme noyau, complétée par diverses obscurcissements de chaînes et diverses astuces pour atteindre l'objectif de cryptage (plus précisément, cela doit être considéré comme une confusion). Ce qui suit utilise un simple hello world comme exemple pour illustrer le processus général de ce type de cryptage.
<?php echo "hello world";
D'abord , nous transformons ce code en
<?php eval('echo "hello world";');
puis , nous effectuons quelques conversions, comme le codage base64
<?php eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));
Ça y est, notre premier code php crypté est fraîchement sorti. . .
L'exemple ci-dessus est très, très simple. Fondamentalement, toute personne ayant une petite connaissance de base de PHP ou d'autres langages peut facilement le comprendre et le décrypter. Par conséquent, nous avons besoin d’un moyen pour que ce cryptage ne paraisse pas au moins simple.
2. Utilisez plusieurs fonctions d'encodage en même temps
En plus de la base64 que nous venons de mentionner, PHP possède également de nombreuses fonctions d'encodage intégrées, telles que l'urlencode, gzcompresser, etc. Mélanger ces fonctions peut augmenter la complexité (et non la difficulté) du décryptage. De plus, vous pouvez utiliser strtr pour formuler vos propres règles de codage. Utilisez des variables au lieu de noms de fonctions. Utilisez des caractères spécifiques pour nommer les variables
Les caractères spécifiques mentionnés ici sont des caractères très similaires, tels que I et 1, 0 et O. Imaginez que tout l'écran soit rempli de variables composées de O et 0, et que le nom de chacune comporte plus de 10 caractères. . . Déterminer si le fichier lui-même a été modifié
Cette fonction semble simple Faire un résumé du fichier puis le comparer pour savoir s'il a été modifié. Mais comment intégrer le résumé dans le fichier ? Je n'ai pas trouvé de solution parfaite, mais une solution de contournement est assez simple. . .
<?php $code = substr(file_get_contents(__FILE__), 0, -32); $hash = substr(file_get_contents(__FILE__), -32); if(md5($code) !== $hash) { exit('file edited'); } ACBC41F727E00F85BEB3440D751BB4E3
Bien sûr, vous pouvez placer cette chaîne de vérification à d'autres endroits pour augmenter la difficulté du craquage. Avec cela, il faudra un peu plus d'efforts aux autres pour pirater votre programme. . .
Maintenant que vous connaissez le principe, le décryptage est naturellement très simple. De manière générale, il y a trois étapes :
Remplacer eval par une sortie, comme echo et restaurer la chaîne selon les règles d'encodage. si le fichier Le décryptage n'est pas terminé, continuez à partir de la première étape
Bien sûr, le processus de décryptage lui-même n'est pas si simple. Par exemple, si gzcompress est utilisé lors du cryptage, les données obtenues contiendront des données binaires. , et Lorsqu'elles sont ouvertes avec un éditeur de texte général, ces données seront affichées sous forme de caractères tronqués et certaines données seront perdues lors de l'enregistrement. La solution est très simple et gênante, c'est-à-dire utiliser le mode binaire (hexadécimal) pour ouvrir, modifier et enregistrer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!