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

C++ Discussion :

Reverse code c++


Sujet :

C++

  1. #1
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par d�faut Reverse code c++
    Bonjour a tous

    Voila, je viens de d�barquer dans une entreprise ou on me demande de bosser sur une grosse application c++. Mais cette appli a �t� cod�e et est utilis�e sous linux, et a �t� affuble d'extension telles que .hh et .cc.
    De plus les fichiers ont �t� quelque peu classe �trangement... avec d'autre fichiers, tel des "makefile" ou encore des bouts de script en python. Et bien sur il n'y a ni doc ni commentaire a propos de ce code...Je suis en plus compl�tement n�ophyte en mati�re de c++.

    Ma question est donc celle ci : existe-t-il un moyen de faire du reverse code afin de g�n�rer au moins un UML ? Genre lui donner un r�pertoire et hop il rame et me donne un joli diagramme pour que je puisse comprendre ce meli-melo ?

    J'ai essaye visual pradigm, mais il semble planter des que je lui donne les fichiers sources, peut etre a cause des extensions bizarres.
    Merci de votre aide en tous cas.

  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    StarUML permet �a en lui fournissant des header � analyser.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  3. #3
    Membre �m�rite
    Avatar de Da�manu
    Homme Profil pro
    D�veloppeur touche � tout
    Inscrit en
    Janvier 2011
    Messages
    736
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur touche � tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par d�faut
    Salut,

    Le logiciel Umbrello permet de faire du reverse engineering il me semble (il est disponible sous Linux).

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    salut,
    d'aabord, il faut savoir que les extensions *.hh et *.cc ne sont rien d'autres que des extensions tout � fait classiques du C++, m�me si elles se sont en partie d�pr�ci�es au fil du temps au profit de *.hpp et *.cpp (tu as encore de la chance que, travaillant sous linux, il n'ont pas profit� que le syst�me est sensible � la casse pour utiliser les extensions *.H et *.C en majuscule )

    Les fichiers Makefile sont quant � eux, des fichiers d'automatisation de la compilation.

    Ce sont eux qui vont indiquer les options de compilation � passer, et d'une certaine mani�res les diff�rentes d�pendances entre les fichiers

    Il y a un tuto sur les Makefile "quelque part" sur ce forum, il serait peut etre pas mal d'aller y faire un tour, de cette mani�re, tu pourrais d�j� commencer � comprendre ce qui est fait dans ces fichiers

    Pour le reste, tu peux aussi t'orienter vers Doxygen, qui permet d'avoir une vue d'ensemble du projet.

    Il permet, par exemple, d'avoir les relations qui existent entre les diff�rentes classes, les d�pendances entre les fichiers et m�me des diagrammes d'appel, de mani�re � pouvoir te faire une id�e des appels faits par les diff�rentes fonctions (ainsi que de ce par quoi elles sont appel�es).

    Mais le meilleur moyen de "rentrer dans le code" est peut etre, tout simplement, de partir de la fonction main et des variables qu'elle utilise pour aller voir � quoi ressemblent les diff�rentes classes et essayer (si elles ont �t� nomm�es un peu corectement) de d�terminer leur responsabilit�s.

    Bon courage, je crois que tu en auras besoin
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    J'aime beaucoup BoUML pour faire du reverse engineering de code. Mais il faut savoir que :
    - A mon avis, UML ne repr�sente pas correctement du code en C++ (en particulier les diff�rentes relations entre classes, qui sont plus complexes en C++ que par exemple en Java ou C#)
    - Les outils UML que j'ai pu voir ne sont de toute mani�re pas tr�s fins pour faire du retro engineering de C++ (par exemple, si A contient un std::vector<std::shared_ptr<B>>, dans l'id�al, on doit en d�duire simplement une relation entre A et B, avec certaines d�corations sur cette relation, mais rien qui concerne les classes vector ou shared_ptr. Ce n'est pas ce que j'ai vu jusqu'� pr�sent.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  6. #6
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par d�faut
    Et bien merci de ces r�ponses. Je vais m'empresser de regarder une peu tout �a et voir ce qui ressort bien.
    J'avais commence effectivement a lire le tuto sur les makefile, afin de mieux comprendre.
    En tous cas j'ai au moins r�ussi a g�n�rer des classe avec VisualParadigm, je vais peut �tre les imprimer et reconstruire mon uml sur papier au fur et a mesure, je ne sais pas je vais voir. Je vais aussi (re)tester Doxygene, l'ayant d�j� survole quand je faisais du Java.

    Merci a vous en tous cas !

  7. #7
    Membre actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2011
    Messages
    54
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 54
    Par d�faut
    A chaque fois que j'ai eu � me poser sur un gros projet d�j� bien avanc�, j'ai fait comme le pr�conise koala: plonger dans le code. Un gros bloc-note, et c'est parti pour lire les .h et .c! N'h�site pas � ajouter des commentaires pour comprendre petit bout par petit bout ce qu'il se passe, pourquoi s'est �crit, etc. Le bloc-note me servait surtout pour garder le fil conducteur dans la lecture du code, comme par exemple les liens fonctionnels entre les diff�rentes classes genre celle-ci stocke des donn�es, celle-ci affiche un truc � l'�cran et est appel�e par telle autre... Histoire d'avoir une vision globale du projet.
    Un autre point qui pourra grandement t'aider: te munir d'un IDE avec des fonctionnalit�s de navigation dans le code tr�s simple. Travaillant sous Visual C++, l'add-on Visual Assist est d'une aide inestimable, et je sais que cette tache de d�couverte et d�chiffrage du code serait beaucoup plus longue sans �a.



    My 2 cents.

  8. #8
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Une autre technique qui marche avec moi pour entrer dans du code que je ne connais pas est d'y aller avec un d�bogueur.

    Tout d�abord, j'utilise normalement le produit, afin d'apprendre ce qu'il fait avant de tenter de comprendre comment il le fait. Puis j'y vais en pas � pas, � plus ou moins gros grains selon l'endroit o� je me trouve. J'arrive ainsi souvent � commencer � ma former une image mentale de l'architecture du code.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  9. #9
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    En g�n�ral, je pars du main, parcours le code, et sur papier, fais en g�n�ral deux choses :

    - construction d'un diagramme de classe simplifi�, sans me soucier de l'exhaustivit� quant � leurs membres

    - construction du diagramme de s�quence simplifi�

  10. #10
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par d�faut
    Re-bonjour

    Alors j'ai passe une partie de ma journ�e sur ce fichu diagramme et sur VisualParadigm.
    Et en fait il marche plut�t pas mal. Il gal�re un peu parfois a g�n�rer certain *.h, mais on peut les re-g�n�rer. M�me si ce n'est pas au top top niveau formalisme UML, �a permet d'avoir toutes les boites, m�thodes et attributs. Reste plus qu'a se munir d'un crayon et d'une feuille et a recoller les morceaux

  11. #11
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Sinon, il existe un programme nomm� autodia qui traduit du code en fichier .dia, utilisable dans le programme dia, �diteur de diagramme de classe.

    Tous deux sont des logiciels libres, disponibles (au moins) pour linux.

Discussions similaires

  1. Comment prot�ger son code du reverse engineering ?
    Par progfou dans le forum D�bats sur le d�veloppement - Le Best Of
    R�ponses: 120
    Dernier message: 12/01/2011, 18h12
  2. R�ponses: 0
    Dernier message: 04/04/2008, 17h14
  3. Reverse engineering (code Java) avec Bouml
    Par enirac dans le forum BOUML
    R�ponses: 1
    Dernier message: 13/03/2008, 15h17
  4. G�n�ration de code & reverse pour PHP
    Par bruno_pages dans le forum BOUML
    R�ponses: 10
    Dernier message: 09/10/2007, 09h30
  5. Cherche brouilleur de code anti reversing-engening
    Par yo�man dans le forum VB.NET
    R�ponses: 5
    Dernier message: 24/04/2007, 13h40

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