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

Langages de programmation Discussion :

Fusionner des programmes compilés


Sujet :

Langages de programmation

  1. #1
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut Fusionner des programmes compilés
    Bonjour à tous,
    Accrochez vous, ca ne va pas etre simple...
    Un message pour les génies uniquement.
    Préambule : Même si j'aborde ici des question de rétro-engineering et de décompilation vous comprendrez vite que le but n'est pas du piratage.

    Voici le problème auquel je suis confronté :

    Je possède des hardwares spécifiques qui disposent chacun d'un petit écran cristaux liquide et de connecteurs de sorties différents. Sur un des hardware cet écran est petit et le connecteurs de sortie sont 2, sur l'autre l'écran est plus grand et les connecteurs sont 4.

    En résumé :
    Grand écran + 4 connecteurs
    Petit écran + 2 connecteurs

    J'ai un troisème hardware qui lui a été reconstruit à partir de pièces détachées et le résultat est un petit écran + connecteur de type B.

    Sur ces Hardwares spécifiques tourne un soft. Ce soft est rigoureusement identique quel que soit la console sauf pour deux choses : la taille de l'écran et le nombre de connecteurs. Le software est fourni gratuitement avec les hardware ce qui est d'ailleurs normal puisqu'il ne peut servir à rien d'autre.

    Le problème auquel je suis confronté est que soit je charge le soft version grand écran sur mon hardware reconstitué : Dans ce cas les 4 connecteurs fonctionne mais l'écran est brouillé (normal puisque c'est le programme pour grand écran et que c'est un petit qui est installé).

    Soit j'installe le soft pour petit écran et la tout va bien au niveau de l'écran mais je n'ai que 2 sorties qui fonctionnent sur les 4.

    Le développeur qui se fou pas mal de mon problème (il dit être sur un autre projet) a été assez gentil de me dire qu'en fait c'est juste quelques ligne quelque part dans le programme qui différent en fonction des versions mais que si non les programmes de ces deux versions (et de toutes les autres) sont rigoureusement identique.

    Je me demandais donc s'il n'existait pas un moyen de comparer les deux versions afin de trouver les différences, ensuite de modifier a taton pour trouver ce qui limite le nombre de connecteur. Le but final étant évidemment de changer cette valeur et de disposer d'une version qui supporte lepetit écran et qui supporte aussi les 4 connecteurs.

    Bon je sais que la question peut sembler un peu "border line" mais étant en possession des deux versions des softwares et des hardwares, le fait que le hardware puisse être distribué gratuitement avec les consoles et la décontraction du dévelopeur dont le message est finalement : débrouille toi et dit moi si ça marche.... Je suis donc assez relax par rapport à cela.
    Surtout que finalement si ça marche je communiquerai avec le développeur pour qu'il puisse aider d'autres personnes qui sont dans mon cas...

    Allez chauffez les méninges et merci d'avance à ceux qui ont le niveau parce que moi j'ai un peu les files qui se touchents...

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    L'idéal serait d'avoir les sources et faire les modifications avant compilation.

    Pour modifier le binaire, il faut d'abord connaitre sa structure, comprendre l'agencement de ton hard et comment il est piloté, arrivé à décompiler le soft pour comprendre comment il fonctionne et ou faire les modifications.

    Bien entendu, tu peux commencer par faire une comparaison binaire, mais si tu as beaucoup d'octets différents, ça en t'avancera pas beaucoup

  3. #3
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut
    Je me trompe peut être mais étant donnée que les deux programmes viennent du même code source exactement et qu'il y a juste deux éléments qui changent :

    1/ Appel à la routine grand écran ou petit écran.
    2/ Une variable qui est a 2 au lieu de 4.

    Si je pouvais comparer le binaire de ces deux programmes je devrais pouvoir identifier ou cela se passe et modifier non ?

    La question c'est comment comparer deux programmes ? Y a t'il un soft qui fait ça ? ET puis aussi comment modifier ensuite le binaire ?

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    si tu as les binaires sous forme de fichiers, tu peux les comparer avec des logiciels adaptés comme par exemple UltraCompare. Mais c'est des octets que tu vas comparer, ce que ça représente dans le programme, c'est à toi de le rechercher.

    Quand à modifier les binaires, tu ne pourras que modifier les valeurs d'octets existant, tu ne pourras pas ajouter ou supprimer des octets. Là encore ça sera à toi de faire le travail de recherche our savoir quelle valeur mettre à la place.

    Tu peux toujours tenter, déjà de comparer pour voir ce que ça donne.

  5. #5
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut
    J'ai tenté le coup avec Ultra compare, il y a en effet tres peu de différence entre les 2 programmes.
    Malheureusement pour le reste difficile de savoir quoi modifier...

    Au fait j'ai un truc en clair tout de même au début des PRG il y a écrit :

    PMODE/W v1.33 DOS extender - Copyright 1994 - 1997 Daredevil and tran

    Ca donnerait une info sur la société qui fait ces programmes ou alors sur leur structure et donc comment les voir eplus clairement ?

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    Ces infos sont plutôt relatives au compilateur ou au mode de compilation, je pense.

    Ca donnerait une info sur la société qui fait ces programmes
    Il me semblait que tu étais en contact avec le développeur, tu dois donc déjà connaitre la société, non ?

  7. #7
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut
    En fait je connais un gars qui participe au développement du produit mais il semblerait que l'équipe qui s'occupe du soft soit sur un autre projet.
    Il semblerait aussi que la boite se foute pas mal de ce sift la et je les soupçonne même de l'abandonner.
    EN attendant mon problème reste entier

    Si ces infos nous renseignent sur le compilateur et sur le mode de compilation ne serais ce pas une piste pour voir plus clair dans ce bazard et faire la modif que je souhaites ?

    Bon j'ai fouiné un peu en partant des indications mentionnées plus haut.
    Le programme aurait été développé à partir d'un language de WATCOM.
    Le site est ici : http://www.openwatcom.org/index.php/Main_Page.
    Mais mon anglais étant limite je ne comprends pas tout.
    Y a t'il quelqu'un a qui sa parle ?

  8. #8
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Watcom c'était l'éditeur du Dos extender, le mécanisme par lequel un programme pouvait passer en mode protégé.

    Mais de savoir ça, ça t'aide sans t'aider...

    En fait dans ta tâche, je pense qu'il n'y a guère d'autre recours que l'usage d'un bon désassembleur qui sache gérer du 16 bits.

  9. #9
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut
    Désasembleur, décompilteurs, on parle toujours aussi du type de processeur. Donc si je comprends bien le décompilateur (ou désassembleur) est lié au processeur sur lequel va tourner le programme ?
    Dans ce cas normal que je n'arrive a rien puisque ce programme est sensé tourner sur des processeurs un peu "exotiques".

    Voici ce que j'ai trouvé concernant la machine sur laquelle devrait tourner ce programme :

    Système multiprocesseur :
    Processeur principal : GEODE SC 2200 (256 Mhz)
    Processeur secondaire : H8/3003

    Une suggestion ?

  10. #10
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    Oui, un décompilateur est spécifique au processeur (ou la famille de processeur) auquel l'exécutable est destiné ainsi qu'au système d'exploitation sous lequel l’exécutable va éventuellement tourner.

    L'exécutable contient des valeurs binaires appelées "code machine" qui sont spécifique au processeur, le code binaire pour un processeur Intel/AMD n'est pas le même que celui pour un processeur Motorola, ARM, STMicro ou Texas Instrument, etc..

    La structure même du fichier est spécifique à l'environement d'exécution (système d'exploitation entre-autre, ou absence de se). Un exécutable pour Windows n'aura pas la même structure qu'un exécutable pour Linux, même si bien souvent les processeurs sont les mêmes.

    Ton décompilateur doit non seulement prendre en charge le processeur de destination de l'exécutable mais aussi la structure de cet exécutable (donc l'environnement d’exécution)

  11. #11
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut
    ET donc sachant qu'ici il n'y a pas d'OS et que le programme est directement exécuté sur le hardware aucune chance ?

  12. #12
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    faut juste trouver le bon décompilateur

  13. #13
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut
    Ok mais s'il n'y a pas d'OS ?!
    Sur quoi je peux baser ma recherche d'un décompilateur ?

  14. #14
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    Si tu connais le logiciel ou l'atelier logiciel qui a servis à compiler le programme, tu peux essayer de voir s'il n'inclue pas un outils de décompilation, ou si un tel outils n'existe pas en outils annexe.

    Sinon, une autre piste à explorer est celle du processeur, voir s'il n'existe pas de décompilateurs pour ce processeur

Discussions similaires

  1. [BP7] Vitesse d'exécution des programmes compilés Pascal
    Par Transgarp dans le forum Turbo Pascal
    Réponses: 27
    Dernier message: 08/04/2008, 22h09
  2. [LINUX] compiler des programmes linux sous Mac
    Par julien.63 dans le forum Apple
    Réponses: 6
    Dernier message: 29/05/2007, 19h59
  3. Réponses: 5
    Dernier message: 03/04/2007, 16h51
  4. Réponses: 13
    Dernier message: 30/11/2006, 22h19
  5. [Info] Compilation/execution des programmes C/C++
    Par JavaAcro dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 23/03/2006, 07h39

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