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

BOUML Discussion :

Reverse des .class et des .jar Java


Sujet :

BOUML

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut Reverse des .class et des .jar Java
    Bonjour Bruno,

    Actuellement, pour faire un reverse d'un .jar Java, il faut le dézipper (avec 7zip par ex.), puis passer un petit script qui plonge dans la hiérarchie et passe le décompilateur jad (http://www.kpdus.com/jad.html) sur chacun des .class.
    On obtient ainsi un reverse de tous les sources, que l'on peut ensuite importer dans un Java Catalog.

    Que penses-tu d'inclure tout ça directement dans l'outil de Catalogue ?

    Nicolas

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    1)Tu postes au mauvais endroit
    2)merci de ne parler ni hacking,ni cracks ni décompilation ici

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut
    C'est une blague ?

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Par défaut
    Citation Envoyé par supersnail Voir le message
    1)Tu postes au mauvais endroit
    2)merci de ne parler ni hacking,ni cracks ni décompilation ici


    Faudrait lire un peu plus les message, el muchacho propose une feature à l'outil.
    Jamais il n'essaye de répondre à une question ou encore de cracker quoi que ce soit
    Faut ptet arrêter de tirer à vu, dès qu'on parle de décompilation

  5. #5
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 552
    Par défaut
    Bonjour tous,

    supersnail, tu as effectivement réagit trop vite, et mal interprété la demande de Nicolas

    Que penses-tu d'inclure tout ça directement dans l'outil de Catalogue ?
    pas trop sure de la faire, déjà je ne peux pas savoir si jad est ou non installé et où, et tu connais mes faibles connaissances en Java

    par contre n'importe qui peut faire un nouveau plug-out réalisant la chose puis appelant Java catalog ou Java reverse ... toi par exemple, quand est-ce que tu me le donnes pour que je le distribue via la page contrib ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    Bonjour tous,

    supersnail, tu as effectivement réagit trop vite, et mal interprété la demande de Nicolas


    pas trop sure de la faire, déjà je ne peux pas savoir si jad est ou non installé et où, et tu connais mes faibles connaissances en Java

    par contre n'importe qui peut faire un nouveau plug-out réalisant la chose puis appelant Java catalog ou Java reverse ... toi par exemple, quand est-ce que tu me le donnes pour que je le distribue via la page contrib ?
    Ouais, je pourrais le faire, en effet, c'est pas vraiment compliqué.
    P-ê que je vais le faire, on verra ce w-e si je flemmardise pas trop. Le plus gros du boulot, pour moi, sera d'installer un compilo, et de recréer tout l'environnement de dev.
    Bon après, le seul soucis est de dézipper. Est-ce qu'on embarque la zlib ou une lib similaire, ou pas ? Au pire, je dois pouvoir trouver qq part un bout de code qui fait ça.

    (Sinon, jad est un simple exécutable en ligne de commande jad.exe que tu peux livrer avec la distrib de BoUML)

    edit: je vois que la dernière version a même le bon goût de décompiler elle-même les .class d'un répertoire.

    Option -d allows you to specify another directory for output files,
    which are created, by default, in the current directory. For example:

    jad -o -dtest -sjava *.class

    (or jad -o -d test -s java *.class, which has the same effect)

    This command decompiles all .class files in the current directory
    and places all output files with extension .java into directory 'test'.


    If you want to decompile the whole tree of JAVA classes,
    use the following command:

    jad -o -r -sjava -dsrc tree/**/*.class

    This command decompiles all .class files located in all
    subdirectories of 'tree' and creates output files in subdirectories
    of 'src' according to package names of classes. For example, if file
    'tree/a/b/c.class' contains class 'c' from package 'a.b', then
    output file will have a name 'src/a/b/c.java'.

    Note the use of the "two stars" wildcard ('**') in the previous
    command. It is handled by Jad rather than the command shell, so on
    UNIX the last argument should be single-quoted:

    jad -o -r -sjava -dsrc 'tree/**/*.class'

  7. #7
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 552
    Par défaut
    Citation Envoyé par el muchacho Voir le message
    Le seul soucis est de dézipper. Est-ce qu'on embarque la zlib ou une lib similaire, ou pas ?
    je ne comprends pas, si tu pars d'un .jar il suffit de faire quelque chose comme jar xf pour recuperer le contenu, non ?

    (Sinon, jad est un simple exécutable en ligne de commande jad.exe que tu peux livrer avec la distrib de BoUML)
    jad n'est pas écrit en Java ?
    ce serait un comble ...

    edit :
    Le plus gros du boulot, pour moi, sera d'installer un compilo, et de recréer tout l'environnement de dev
    pour ton plug-out, utilises la generation Java, pas besoin d'utiliser la version C++ pour cela
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut
    Ah, t'es là, ça tombe bien

    Citation Envoyé par bruno_pages Voir le message
    je ne comprends pas, si tu pars d'un .jar il suffit de faire quelque chose comme jar xf pour recuperer le contenu, non ?
    Yep, mais un simple unzip fait la même chose, donc pas besoin d'avoir Java installé.
    Un .jar n'est rien de plus qu'un répertoire zippé (avec un fichier texte METAINF dedans).
    jad n'est pas écrit en Java installé.
    ce serait un comble ...
    Nope, C++.

  9. #9
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 552
    Par défaut
    Citation Envoyé par el muchacho Voir le message
    Ah, t'es là, ça tombe bien
    et oui, cela m'arrive lol

    Yep, mais un simple unzip fait la même chose, donc pas besoin d'avoir Java installé.
    Un .jar n'est rien de plus qu'un répertoire zippé (avec un fichier texte METAINF dedans).
    mais si le but est de reverser du java on peux quand même supposer que l'utilisateur a java ...

    Nope, C++.


    cela pose alors le problème de la machine utilisée, enfin de son OS ...

    je pense que tu devrais supposer que cela est deja installe

    au fait, pourquoi ne pas supposer que le jar contient les sources ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    et oui, cela m'arrive lol

    Mais si le but est de reverser du java on peux quand même supposer que l'utilisateur a java ...
    Oui mais en fait, j'aurais aimé que cette possibilité fasse partie intégrante de BoUML, parce que la possibilité de pouvoir faire un reverse d'une lib compilée en Java est quand même assez sympa à exploiter (surtout que le reverse fait par jad est de très bonne qualité et je pense totalement exploitable par un outil UML. En tout cas, les tests que j'ai effectués n'ont pas posé de soucis au reverse Java de BoUML.). Du coup, on peut ajouter aux catalogues toutes les libs compilées qu'on veut, même sans les sources.


    cela pose alors le problème de la machine utilisée, enfin de son OS ...

    je pense que tu devrais supposer que cela est deja installe
    Effectivement, niveau packaging, il faut une version de jad par machine cible. Ceci étant, la plupart des OS sont supportés, apparemment.

    au fait, pourquoi ne pas supposer que le jar contient les sources ?
    Euh, je ne comprends pas ta question. Un jar est une lib, en général, il ne contient que les classes compilées et éventuellement quelques fichiers de ressources utilisées par ces classes.

  11. #11
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 552
    Par défaut
    Citation Envoyé par el muchacho Voir le message
    Effectivement, niveau packaging, il faut une version de jad par machine cible. Ceci étant, la plupart des OS sont supportés, apparemment.
    c'est donc bien à l'utilisateur de s'en charger, même si tu fais une version spéciale pour les utilisateurs Windows dans laquelle tu le livrerais (mais vérifies quand même si la licence le permet )

    Citation Envoyé par el muchacho Voir le message
    Euh, je ne comprends pas ta question. Un jar est une lib, en général, il ne contient que les classes compilées et éventuellement quelques fichiers de config utilisées par ces classes.
    mais tout comme un tar cela permet de mettre ce que l'on veux sauf erreur, mais bon, je ne suis pas un utilisateur java, ce qu'est un jar d'habitude m'échappe donc

    bon, tu n'a donc plus qu'a t'y mettre ...
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    c'est donc bien à l'utilisateur de s'en charger, même si tu fais une version spéciale pour les utilisateurs Windows dans laquelle tu le livrerais (mais vérifies quand même si la licence le permet )
    Actuellement, c'est bien le cas. La seule valeur ajoutée de cette petite modif serait simplement de ne pas avoir à passer par une ligne de commande pour dézipper puis décompiler un jar au préalable.
    Là, l'idée serait que si on choisit un reverse Java, alors le Java Catalog et/ou BoUML propose la possibilité de faire un reverse d'un répertoire quelconque, comme c'est le cas actuellement, ou bien alors d'un fichier .jar. Auquel cas il dézippe le jar, le décompile et importe le produit de la décompilation tout seul.

    edit: pour la licence, voici ce qu'il dit:
    "Jad is free for non-commercial use, but since the version 1.5.6 it's no longer free for commercial use. This means that Jad cannot be included into software products (especially decompilers) without my prior permission. If you want to use Jad (as a command-line utility or as a library) in your product(s) please contact me for conditions. At the same time, Jad can be used freely for personal needs in a commercial or non-commercial environments."
    Le truc, c'est que son décompilateur a été utilisé dans pas mal de produits commerciaux qui ne sont que des GUI autour de jad (et parfois sans le citer). On comprend que l'auteur soit agacé par ça.

    mais tout comme un tar cela permet de mettre ce que l'on veux sauf erreur, mais bon, je ne suis pas un utilisateur java, ce qu'est un jar d'habitude m'échappe donc
    Tout-à-fait, un jar peut contenir à peu près n'importe quoi (sauf p-ê un autre jar ? à vérifier). Mais comme je l'ai dit, en général, ce sont des fichiers .class, autrement dit des classes java compilées, et parfois des fichiers de ressources.
    bon, tu n'a donc plus qu'a t'y mettre ...
    Ok

  13. #13
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 552
    Par défaut
    Citation Envoyé par el muchacho Voir le message
    La seule valeur ajoutée de cette petite modif serait simplement de ne pas avoir à passer par une ligne de commande pour dézipper puis décompiler un jar au préalable.
    c'est vrai que comme cela se réduit a un simple lancement de jad cela perd pas mal de son intérêt

    Ok
    finalement qu'est ce que tu va faire ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut
    c'est vrai que comme cela se réduit a un simple lancement de jad cela perd pas mal de son intérêt
    Oui et non. J'avais posé la question parce que c'est a priori pas une évo compliquée. Je pense que pas mal de dev Java aimeraient avoir ça en standard dans l'outil, mais en fait assez peu connaissent l'existence de jad. (Je ne l'aurais bien sûr pas suggérée s'il avait fallu se palucher la décompilation.)
    finalement qu'est ce que tu va faire ?
    Je sais pas. Je vais voir ça ce w-e, je pense.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 13h43
  2. Obtenir la liste des classes d'un jar [Résolu]
    Par polow dans le forum Général Java
    Réponses: 8
    Dernier message: 03/05/2013, 17h08
  3. Réponses: 3
    Dernier message: 19/04/2009, 00h55
  4. Réponses: 11
    Dernier message: 09/12/2005, 15h59
  5. Réponses: 9
    Dernier message: 25/09/2005, 17h33

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