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++Builder Discussion :

Récuperer code à partir de l'executable


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 50
    Points
    50
    Par défaut Récuperer code à partir de l'executable
    Bonjour à tous!
    J'aimerais savoir s'il était possible de récuperer l'environnement exact dans lequel un executable fait en C++Builder a été developpé. En gros, le code de l'executable.
    Merci à vous!

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut peut-être que se site peut t'aider, il parle des désassembleurs: http://fr.wikipedia.org/wiki/D%C3%A9sassembleur
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Bonjour,

    Apprends d'abord ce qu'est un désassembleur (lien indiqué par Crayon). Le soucis c'est que le code généré est de l'assembleur qui reste incompréhensible vu que C++ est un langage haut niveau. Si tu connais l'asm, le code permet de comprendre le comportement en général du programme mais pas de connaître le code exact.

    Ce que tu cherches est donc un décompilateur qui traduit un .exe en son code d'origine, si le prog a été écrit en C++, on doit le traduire en C++ pour avoir la traduction la plus appropriée mais que je pense qu'à 50 % identique:
    Delphi to C++ Builder 1.5: http://www.cleansofts.com/softdownlo...C_Builder.html
    Ce lien peut être mort mais je te conseille dans ce cas de chercher un décompilateur gratuit sur google.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  4. #4
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Bonjour
    le décompilateur décrit dans le post précédent <Delphi and C++Builder Decompiler 2.56 n'a guerre d'utilité
    en effet il n'est capable que de sortir uniquement les appels de fonctions de visibilité __published: // IDE-managed Component exemple
    toutes les membres Privé sont ignorés de même que les classes et fonctions non VCL

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    //extrait du .H
    #ifndef Unit3H
    #define Unit3H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <CheckLst.hpp>
    #include <Buttons.hpp>
    #include <ComCtrls.hpp>
    #include <Menus.hpp>
    #include <ThemeMgr.hpp>
    //---------------------------------------------------------------------------
    class TForm3 : public TForm
    {
    __published:	// IDE-managed Components
            TCheckListBox *Clb;
            TGroupBox *GroupBox1;
            TBitBtn *BitBtn1;
            TBitBtn *BitBtn2;
            TBitBtn *BitBtn3;
            TStatusBar *StatusBar1;
            TGroupBox *GroupBox2;
            TEdit *Edit1;
            TSpeedButton *SpeedButton1;
            TLabel *Label1;
            TLabel *Label2;
            TLabel *Label3;
            TMainMenu *MainMenu1;
            TMenuItem *Aide1;
            TMenuItem *AProposde1;
            TMenuItem *Configuration1;
            TMenuItem *Ouvrir1;
            TMenuItem *Sauvegarder1;
            TMenuItem *N1;
            TMenuItem *Quitter1;
            TThemeManager *ThemeManager1;
            TMenuItem *ChoixRepertoire1;
            void __fastcall Button1Click(TObject *Sender);
            void __fastcall FormDestroy(TObject *Sender);
            void __fastcall Button2Click(TObject *Sender);
            void __fastcall SpeedButton1Click(TObject *Sender);
            void __fastcall AProposde1Click(TObject *Sender);
            void __fastcall Quitter1Click(TObject *Sender);
    private:	// User declarations
    public:		// User declarations
            __fastcall TForm3(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
     
    // le .cpp
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit3.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm3 *Form3;
    //---------------------------------------------------------------------------
    __fastcall TForm3::TForm3(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
    // Address $401BD0
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::FormDestroy(TObject *Sender)
    {
    // Address $4020F8
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::Button2Click(TObject *Sender)
    {
    // Address $402230
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::SpeedButton1Click(TObject *Sender)
    {
    // Address $402238
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::AProposde1Click(TObject *Sender)
    {
    // Address $40259C
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::Quitter1Click(TObject *Sender)
    {
    // Address $4025AC
    }
    //---------------------------------------------------------------------------
    Cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Bonjour,

    En fait, il n'y a pas de décompilateur parfait ! C'est presque impossible à faire surtout avec de la programmation orientée objet.
    En fait, ne cherche pas à obtenir le code original d'un .exe , même les crackeurs (travail malhonnête) ne vont pas jusqu'à étudier tout le code mais seulement une partie et à comprendre le fonctionnement général !
    En réponse à
    J'aimerais savoir s'il était possible de récuperer l'environnement exact dans lequel un executable fait en C++Builder a été developpé. En gros, le code de l'executable.
    Je dirais que c'est possible à 60 % sauf s'il y a des outils capables de le faire à 100 % que je ne connais pas.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 50
    Points
    50
    Par défaut merci
    Merci pour toutes vos réponses. C'est gentil de vouloir m'aider.
    En tout cas ce que j'ai appris avec vous c'est que ce n'est pas vraiment possible, je ne le savais pas .
    Merci à tous

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/09/2006, 18h28
  2. Réponses: 3
    Dernier message: 22/05/2006, 10h42
  3. [WD9] Générer du code à partir de l'AGL
    Par Romanops dans le forum WinDev
    Réponses: 2
    Dernier message: 11/04/2006, 17h28
  4. Réponses: 3
    Dernier message: 06/03/2006, 14h58
  5. probleme code vba ne s'execute pas apres instruction sql
    Par arnogef dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/12/2005, 13h34

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