dimanche 13 décembre 2009

Le code source Java en libre service!

Si vous pensez que votre code Java est toujours obfusqué (et bien obfusqué) et que de toutes les façons on y trouve jamais d'informations confidentielles, alors cette article n'est pas pour vous.
Sinon, vous trouverez peut être dans cet article quelques informations intéressantes.

Tout d'abord un bref rappel!


Le reverse engineering est une technique permettant de reconstituer le code source d'une application à partir de sa forme compilée telle que livrée à ses clients par un éditeur. La possession du code source permet de connaître le fonctionnement précis d'une application.


Une personne malveillante peut grâce à cette technique connaître les algorithmes utilisés par son concurrent et lui voler ses secrets. Outre les algorithmes, les identifiants de connexion à des ressources (bases de données, annuaires...) sont là aussi accessibles, d'où le risque de vol de mot de passe et d'accès frauduleux à des ressources protégées.


Face aux risques liés au reverse engineering quelles techniques permettent de cacher le code source d'une application ? L'une d'elles est l'obfuscation qui transforme le code source avant compilation de manière à le rendre illisible pour l'être humain.

L'aspect général du code source d'une application peut être obfusqué de la manière suivante:


  • renommage de tous les identifiants

  • suppression des commentaires

  • élagage des déclarations d'API non utilisées

  • suppression des règles de style (comme l'indentation)

  • cryptage des chaînes de caractères pour cacher leur valeur.


Démonstration par l'image au travers d'un exemple... à suivre (plus ou moins)!





Voici quelques obfuscateurs (c'est une liste non exhaustive):




Le décompilateur Mocha peut être téléchargé ICI.


Le décompilateur Java Sothink peut être téléchargé ICI.




A bientôt...

2 commentaires:

  1. Bonne idée, j’aurais juste dit que « tout ce qui peut etre fait… peut etre defait » donc enlever le nom des vars/fct, oui, mais re-indenter, decoder les chaines de car etc ca s’automatise lorsqu’on a identifié l’obfuscateur utilisé …

    RépondreSupprimer
  2. Avec Visual Studio il est possible d'obfusquer une application avec Dotfuscator.

    .NET Reflector (http://www.red-gate.com/products/reflector/index.htm) permet de décompiler et d'analyser les .NET assemblies.

    A regarder de plus prêt...

    RépondreSupprimer

Partager avec...