Tutoriels

Comment démasquer un code offusqué

Salut,
Non on n’est pas à la recherche d’un fugitif aujourd’hui ! Mais je suis tombé sur un code php « masqué » ou « offusqué » ce qui signifie que celui-ci n’est pas directement visible depuis la source. En général les auteurs de scripts offusqués désire que les utilisateurs ne modifie pas les sources. Cependant, c’est une perte de temps et non pas une protection, car de toutes façons si le code masqué est interprété par le serveur il y a de fortes chances qu’il soit possible de récupérer le code non masqué.

Pour aujourd’hui je vais faire un exemple avec le script cleans.php de l’article précédent (une version offusquée) pour vous expliquer comment le rendre visible. Bien entendu il n’est pas utile de suivre cet article pour télécharger le fichier cleans.php non offusqué.

[box_download]Vous pouvez télécharger la version offusqué ici .[/box_download]

Celle-ci fonctionne très bien, cependant il n’est pas possible de changer le nom du répertoire de destination qui est « ../projet-clean » une fois renommé en cleans.php il effectue aussi bien le boulot que la « version propre ».

Bon maintenant passons à l’analyse du code.
Nous avons tous d’abord une variable très longue :

    $X='dVRLbtswEF2bp5gERiQZit1FgSw .... .... HNIE8U7xqSXLaS0QFVRHC9kPG/18w1EEymZcb7TAhPgH';

Je n’ai pas tout affiché c’est dans le fichier. Cette variable contiens le code complet de la version originale de cleans.php. Pour que ce code soit exécuté il y a donc une ligne supplémentaire :

    eval(gzinflate(base64_decode($X)));

Je ne vous cache pas que cela consomme plus de ressource de dé-offusquer le code bien que la il n’utilise qu’un base64_decode() et un gzinflate().

Le eval() lui sert à autoriser l’exécution de code PHP arbitraire (selon php.net) soit il permet d’exécuter en tant que php le résultat du contenu entre ses parenthèses.
Donc le code entre les parenthèses du eval() est donc en claire une fois passé par les deux autres fonctions bien évidemment.

Maintenant que nous avons vu comment le code va être « dé-codé » si l’on considère que celui-ci a été encodé…

Passons à l’étape de récupération du script propre. Pour cela nous allons enregistrer le code en claire dans un fichier texte.

Nous allons remplacer la ligne suivante :

    eval(gzinflate(base64_decode($X)));

Par :

$sav=gzinflate(base64_decode($X)); // on passe le code en claire dans une variable
$maj = fopen("cleans.txt","a+"); // On ouvre le fichier en lecture/écriture
fseek($maj,0);                     // On se place en début de fichier
fputs($maj, $sav);            // On écrit dans le fichier le code
fclose($maj);

Voilà qui est claire j’espère que vous aurez compris pourquoi j’ai fait comme cela …

Maintenant exécuter la page php, celle-ci ne vas pas nettoyer les fichiers mais simplement créer un fichier cleans.txt contenant le code php non offusqué.

Voilà c’est tous pour cet article.

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page