IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Gros problème : comment rendre une appli Java indécompilable ?


Sujet :

Java

  1. #21
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par toto828 Voir le message
    un programme informatique où les méthodes ont des noms aléatoires, ainsi que les classes est incompréhensible.
    A premiere vue oui, mais si tu veux vraiment trouver, ce n'est pas si compliqué dès le moment ou il y a le code. C'est juste long, mais si tu sais ce que tu cherches, c'est tout à fait possible de trouver.

  2. #22
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Points : 172
    Points
    172
    Par défaut
    oui tout est possible même trouver ce que fait ce programme :

    ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
    un code non commenté, où tu ne sais pas quelle est la responsabilité d'une classe ni celles des méthodes est bon à jeter à la poubelle.

  3. #23
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    La seule raison pour laquelle il est impossible de trouver ce que fait le code que tu donnes en exemple est qu'il n'est pas compilable...

  4. #24
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Baptiste Wicht Voir le message
    La seule raison pour laquelle il est impossible de trouver ce que fait le code que tu donnes en exemple est qu'il n'est pas compilable...
    C'est du brainfuck, donc compilable je crois...

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Points : 172
    Points
    172
    Par défaut
    si c'est compilable en Brainfuck , c'est un hello world

  6. #26
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Oki pour du BrainFuck (je l'avais oublié celui-là )

    Mais un code Java obfusqué devrait plus ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a[b.xyzzy(zui)].asdf(q,w,e,r,t,y).
    Mais par contre, tout ce qui est des appels à la librairie standard ne peuvent pas être obfusqués et améliorent la lisibilité du code compilé.

  7. #27
    Invité
    Invité(e)
    Par défaut
    De toute manière, c'est *********** d'obfusquer du code Java.
    Les fichier .class étant plus ou moins lisibles...

    De plus, ça s'éloigne complètement de la philosophie d'origine de Java : réutilisabilité, maintenabilité, blabla etc ...

    Au fait, si on veut obfusquer du code natif, je connais un autre moyen détourné : les compresseurs d'exe.
    ça sert souvent dans les productions de demoscene, pour rendre les exe les plus petits possibles.
    ça sert aussi dans la création de virus soit dit en passant...
    Et donc, ça rend le code fourni à l'utilisateur encore plus difficile à décompiler.

    Il n'y a pas un décompilateur Java fourni avec le JDK au fait ?

  8. #28
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par PierreD87 Voir le message
    Il n'y a pas un décompilateur Java fourni avec le JDK au fait ?
    Tout à fait, il s'agit de javap.

    Par contre, il ne ressort le code des méthodes qu'en bytecode Java.

  9. #29
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par Baptiste Wicht Voir le message
    A premiere vue oui, mais si tu veux vraiment trouver, ce n'est pas si compliqué dès le moment ou il y a le code. C'est juste long, mais si tu sais ce que tu cherches, c'est tout à fait possible de trouver.
    Comme tu le dis, c'est juste une question de temps.
    Mais justement, ça fait toute la différence entre:

    - un code que le 'pirate' prendra le temps de décompiler pour en récupérer ce qu'il veut

    - un code sufisamment ardu à décompiler pour que le temps mis pour décompiler le bazar soit supérieur au temps pour redévelopper la même chose par soi-même, et donc que le 'piratage' ne présente plus aucun intérêt.

    Et à ce jeu, les différences sont énormes entre:

    1- un code Java non obfusqué (donc les sources récupérables en trois clics),

    2- un code Java obfusqué (donc sources récupérables en trois clics + un gros boulot de refactoring pour comprendre puis renommer chaque variable/méthode/classe/..., mais pas titanesque puisque tous les appels vers l'API de base reste en 'clair')

    3- un code Java compilé en natif (donc récupérage du code assembleur en trois clics, mais boulot titanesque ensuite pour comprendre le fonctionnement de chaque partie).


    Et autant la solution 1 n'a quasiment aucune chance de rebuter qui que ce soit, autant la solution 2 ou 3 a toutes les chances de rebuter l'immense majorité des prétendants 'pirates'.

    Finalement, l'ensemble des notions de chiffrement reposent exactement sur le même principe: connaissant l'algorithme de chiffrement, il est tout à fait possible de déchiffrer l'information ; la seule 'subtilité' réside dans le fait que ça demandera tellement de ressources, notamment en temps (on parle de siècles ici) que le jeu n'en vaut pas la chandelle.

    Pourtant, jusqu'à preuve du contraire, on considère les algorithmes de chiffrement couramment utilisés comme comme 'sûrs', non ?
    Simplement, parce qu'on considère implicitement qu'une information déchifrée x siècles après sa transmission n'a plus aucune valeur et donc que n'importe qui de raisonnable ne se lancera pas dans une telle aberration.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  10. #30
    Invité
    Invité(e)
    Par défaut
    ha et aussi,
    si tu veux obfusquer ton code pour cacher un mot de passe/clé privée :
    non !

  11. #31
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par nouknouk Voir le message
    - un code sufisamment ardu à décompiler pour que le temps mis pour décompiler le bazar soit supérieur au temps pour redévelopper la même chose par soi-même, et donc que le 'piratage' ne présente plus aucun intérêt.
    Si effectivement ce sont des méthodes qui sont plus rapides à réécrire que de comprendre le code obfusqué, alors, de fait, ca n'a aucun intérêt de les obfusquer car, dans ce cas, ce sont des méthodes et algos simples

    Pour moi si tu cherche à obfusquer un algo pour protéger les intérêts de ton entreprise, c'est que l'algo et mis des mois à être développer. Et je pense pas, même avec un très bon obfusqueur, que l'algo sera si difficile que ça à décompiler. Au plus au lieu de passer 1 semaine à comprendre ton code, la méchante société concurrente y passera 1 mois. Sans compter que, pour du "vol", elle peut toujours re-obfusquer ton code (pour que toi tu ne le reconnaisse pas) et se contenter d'appeler tes méthodes en fournissant gentillement ta librairie avec leur programme (ils n'ont pas besoin de comprendre tout le code pour repérer le point d'entrée d'un calcul et son résultat )

  12. #32
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 45
    Points
    45
    Par défaut
    Re-bonjour à tous,

    La solution qui a été choisie finalement est de compiler mon application en natif grâce au logiciel JET.

    Merci à tous pour vos réponses

  13. #33
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 570
    Points : 15 535
    Points
    15 535
    Par défaut
    La solution qui a été choisie finalement est de compiler mon application en natif grâce au logiciel JET.
    A mon avis, c'est la pire des solutions, à moins que le code natif soit lui aussi obfusqué.

  14. #34
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Uther Voir le message
    A mon avis, c'est la pire des solutions, à moins que le code natif soit lui aussi obfusqué.
    La pire des solutions ??? Faut pas exagérer quand même, au mieux le code qu'un "pirate" pourra avoir c'est de l'assembleur, alors bon courage à lui s'il veut retrouver les sources avec ça...

  15. #35
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Ce n'est pas pire, Il faut savoir cacher le savoir faire au moins pour un temps..
    de toute façon si on connais la plate forme du client alors ça serai pas plus mal de lui donner un exe qu'un jar qui lui a besoin d'une jvm.

  16. #36
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 570
    Points : 15 535
    Points
    15 535
    Par défaut
    La pire des solutions ??? Faut pas exagérer quand même, au mieux le code qu'un "pirate" pourra avoir c'est de l'assembleur, alors bon courage à lui s'il veut retrouver les sources avec ça...
    Si l'obfuscateur est bon, on ne peut pas retrouver un source, ou alors dans un état illisible.
    Par contre les crackeurs parlent l'assembleur couramment.

    L'idéal serait d'obfusquer le code binaire car il est vrai qu'il offre généralement plus de possibilités d'obfuscation que le bytecode.

  17. #37
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par _LittleFlea_ Voir le message
    Faut pas exagérer quand même, au mieux le code qu'un "pirate" pourra avoir c'est de l'assembleur, alors bon courage à lui s'il veut retrouver les sources avec ça...
    Ceux qui n'ont jamais eu de problème à interpréter de l'assembleur normal levez la main !

    *Lève la main.*

    Et je ne parle pas du fait que je n'ai pas besoin de comprendre le code pour simplement le copier et l'utiliser.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/12/2013, 10h31
  2. Réponses: 1
    Dernier message: 01/05/2010, 17h21
  3. Problème mémoire d'execution d'une appli java en commande shell
    Par Djinner² dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/07/2008, 17h34
  4. Comment utiliser une classe Java dans une appli PB ?
    Par bobychezA56 dans le forum Powerbuilder
    Réponses: 0
    Dernier message: 09/04/2008, 18h07
  5. Réponses: 4
    Dernier message: 30/07/2007, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo