Le reverse engineering est l'art de dumping individuelles, les commandes de niveau machine qui composent un programme compilé et l'utiliser pour recréer le code source d'origine. Alors que n'importe quel programme compilé peut être conçu inverse , le byte-code qui rend les programmes Java compilés jusqu'à retenir plusieurs caractéristiques identitaires qui font ingénierie inverse beaucoup plus facile que d'autres le code compilé . Byte code
Java ne compile pas directement dans le code lisible à la machine , mais plutôt dans ce qui est appelé " byte code . " Le programmeur distribue ce code octet, et lorsque les utilisateurs finaux lancer le programme , la machine virtuelle Java compile le code d'octets en une plate-forme spécifique du code machine . Bien que cela donne Java l'avantage de permettre un seul code source mis à travailler sur plusieurs machines , le byte-code conserve plusieurs caractéristiques descriptives du code source qui rend plus facile pour les pirates de reconstituer le code source d'origine .
reverse Engineering
pirates peuvent lire le byte code d'une application Java directement , en utilisant la bibliothèque " java.io.InputStream " . Avec cela, ils peuvent voir les éléments de base et les commandes de niveau octet de code qui constituent ce fichier de classe particulière. Les pirates peuvent alors suivre les différentes variables à travers différentes méthodes pour reconstruire progressivement le flux de contrôle du programme. Une fois que les pirates font, ils peuvent reproduire le code source de l'application pour différentes fins malveillantes.
Attaque
Après pirates ingénieurs inverse d'un programme particulier , il ya plusieurs égards, il peut exploiter ceci pour avoir accès aux machines qui exécutent ce programme. Il s'agit notamment d'exploiter les vulnérabilités de rendre le programme exécuter du code malveillant avec la permission de l'utilisateur, ou l'exécution d'un " man in the middle " attaque. Dans ce dernier scénario , le pirate serait ajouter son propre code malveillant le code source de l'application, le recompiler , et le mettre sur Internet , sous le couvert du programme original . Les utilisateurs non avertis peuvent ensuite télécharger l'application et d'exécuter directement le code du pirate .
Prévention Reverse Engineering
En raison de la nature du byte code Java , il est presque impossible d'arrêter quiconque d'afficher le code d'octet de base. Bien que les méthodes telles que le cryptage peuvent fournir un certain degré de protection , plus efficace le cryptage est, le moins indépendant de la plateforme du programme devient . Les programmeurs peuvent , cependant, jeter désossers off avec quelques astuces de codage. Ceux-ci incluent des fonctions d'écriture qui sont sans rapport avec l'exécution effective du programme , ce qui peut se débarrasser de ceux qui essaient de désosser le programme.