Désobfuscation PHP et JavaScript scripts

Par thème:


L'un des plus fiables à ce jour scripting méthodes d'étude et de modification de protection est obscurcissement.

Obfuscation (de la obfuscare latine, «obscure, obfusquer.») - Le code Obfuscated du programme, à savoir la réduction du texte original à la forme, préserve la fonctionnalité du programme, mais complique l'analyse, la compréhension et la modification des algorithmes.

Par contraste avec le chiffrement et le conditionnement unique réversible, obscurcissement est une action irréversible. Cela signifie que le code de script pour restaurer la forme d'origine est impossible. Sans exception Obfuscators PHP et JavaScript travail de deux manières: à partir du texte original, les sauts de ligne sont supprimés et les lacunes insignifiantes et les noms de classes, variables et fonctions sont remplacées par un jeu de sens de caractères. Ces actions peuvent aussi être combinées et exécutées indépendamment.

Comme je l'ai déjà dit, pour amener le code sous la forme originale est pas possible avec désobfuscation. Mais il est tout à fait possible de «améliorer» au point où vous pouvez facilement comprendre l'algorithme et apporter les changements nécessaires. Par exemple, après désobfuscation peut briser la protection de certains des script PHP, supprimer le domaine de liaison JavaScript, contraints de réduire la publicité ou autre chose comme ça.

La première étape de désobfuscation - Script de formatage de texte, césures, aligner le code facile à lire "échelle." Pour cela, j'utilise deux outils. Company Software WaterProof a développé une petite (moins de 100 kilo - octets) des logiciels libres pour le formatage du code PHP-scripts phpCodeBeautifier . Pour le télécharger depuis ofsayta nécessitent une inscription gratuite, donc ici pour la commodité d'un lien direct vers le téléchargement. La console de programme, les paramètres de ligne de commande peut être trouvée dans les instructions de l'archive. Pour les fans des fenêtres a une version GUI, bien plus ancienne, mais il est tout à fait possible de mettre un fichier de console de la dernière version.

Деобфускация скриптов PHP и JavaScript

Pour formater les scripts JavaScript et HTML code dispose d' un service en ligne merveilleuse Beautify Javascript est . Il suffit d'insérer dans la forme de texte du script, appuyez sur le bouton "Beautify" et obtenir un script bien formaté. Pour plus de commodité, je suis un peu modifié et compilé cette page à stationnaire fichier exe. Peut-être un jour je trouve le temps et l'effort de réécrire le script dans la pleine application.

Lorsque vous formatez une grande quantité de scripts pour le navigateur peut afficher un message indiquant que le script se fige, et offrira pour arrêter son exécution. Il ne doit pas, juste pour le traitement prend plus de temps.

Деобфускация скриптов PHP и JavaScript

Si l'obscurcissement est pas remplacé par les noms des variables, on peut supposer que, après le formatage, la complétion de code désobfuscation. Dans tous les cas, le script devient beaucoup plus lisible et compréhensible

Si les noms de variables et de fonctions corrompues, puis passez à la deuxième partie désobfuscation. Ici, malheureusement, il n'y a pas d'outils prêts à l'emploi, et bien, ou du moins je ne les ai pas vu. Si quelqu'un veut prendre un outil gratuit pour écrire, je peux donner une description détaillée. Aussi longtemps que nécessaire pour être limité par la théorie.

Aussi étrange que cela puisse paraître, mais pour désobfuscation utiliser les mêmes principes que pour les faux-fuyants. De tous les scripts récupérés les noms de toutes les variables, et sont remplacés par d'autres. La seule différence est que nous supprimerons les noms des corrompus et remplacés par plus commode pour la perception. Par exemple $ kOObgZ4tf2LEaSmFfc555 (Obfusc) ou $ IIIIIIIIIIIl (de LockIt PHP!) Pour remplacer Var_3 $. Pour un seul script cela peut être fait dans un ordinateur portable classique avec un remplacement global pour plusieurs scripts doivent d'abord supprimer tous les noms de toutes les variables de scripts, et seulement alors effectuer un remplacement global. Ne pas oublier les variables de services tels que les tableaux mondiaux $ _GET et $ _POST en PHP, et les mots réservés en JavaScript. Leur processus est pas nécessaire. Pour le remplacement a été effectué de manière plus efficace, il est recommandé de faire après le formatage du code.

Cet article ne décrit que les principes désobfuscation général, chaque cas devra réfléchir et appliquer une approche individuelle. Mais généralement, pour mener à bien le piratage ou l'analyse d'un algorithme de fonction complète désobfuscation séparée non nécessaire.