Passer binaire - C
Fermé
kikiwan
Messages postés
6
Date d'inscription
samedi 30 décembre 2017
Statut
Membre
Dernière intervention
7 février 2018
-
30 déc. 2017 à 11:36
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 19 janv. 2018 à 12:56
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 19 janv. 2018 à 12:56
A voir également:
- Passer binaire - C
- Codage binaire - Guide
- Passer de windows 7 à windows 10 - Guide
- Passer de qwerty a azerty - Guide
- Passer de majuscule à minuscule - Guide
- Passer à la ligne excel - Guide
1 réponse
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
Modifié le 15 janv. 2018 à 14:25
Modifié le 15 janv. 2018 à 14:25
Bonjour,
Tu disposes d'un exécutable et tu veux, à partir de cet exécutable, obtenir un code source ?
En France et dans l'UE, la décompilation ou l'ingéniérie inverse n'est permise qu'à des fins d'intéropérabilité et sous certaines conditions. Dans le doute, consulte un juriste pour savoir si tu as le droit de faire ce que tu projettes de faire.
Si tu es dans un cas où tu peux légalement le faire, techniquement, tu peux rechercher des programmes qui vont t'aider dans cette tâche : un décompilateur (qui tente de produire un code dans un langage de haut niveau, comme le C ou Java), ou désassembleur (qui produit du code assembleur).
En réalité, tu vas pouvoir décompiler plus ou moins facilement selon le langage utilisé pour produire l'exécutable. Par exemple, les programmes écrits en Java se décompilent très bien, ceux écrits en C ou C++ très mal. Si tu sais dans quel langage a été écrit le programme pour lequel tu disposes de l'exécutable, cela aide à trouver l'outil le plus approprié.
Enfin, si le programme pour lequel tu as un code exécutable est un logiciel libre ou open source, tu n'as pas à faire cela, car le code source correspondant à ton exécutable est disponible, avec les droits d'utilisation qui y sont attachés selon la licence.
Dal
Tu disposes d'un exécutable et tu veux, à partir de cet exécutable, obtenir un code source ?
En France et dans l'UE, la décompilation ou l'ingéniérie inverse n'est permise qu'à des fins d'intéropérabilité et sous certaines conditions. Dans le doute, consulte un juriste pour savoir si tu as le droit de faire ce que tu projettes de faire.
Si tu es dans un cas où tu peux légalement le faire, techniquement, tu peux rechercher des programmes qui vont t'aider dans cette tâche : un décompilateur (qui tente de produire un code dans un langage de haut niveau, comme le C ou Java), ou désassembleur (qui produit du code assembleur).
En réalité, tu vas pouvoir décompiler plus ou moins facilement selon le langage utilisé pour produire l'exécutable. Par exemple, les programmes écrits en Java se décompilent très bien, ceux écrits en C ou C++ très mal. Si tu sais dans quel langage a été écrit le programme pour lequel tu disposes de l'exécutable, cela aide à trouver l'outil le plus approprié.
Enfin, si le programme pour lequel tu as un code exécutable est un logiciel libre ou open source, tu n'as pas à faire cela, car le code source correspondant à ton exécutable est disponible, avec les droits d'utilisation qui y sont attachés selon la licence.
Dal
18 janv. 2018 à 18:23
Modifié le 19 janv. 2018 à 13:09
"nul" doit correspondre au caractère "null" qui a une valeur de 0
par contre 0 + 0 n'a jamais fait chez moi 1, ni en système décimal, ni en binaire
sur ton exemple, les caractères peuvent correspondre à n'importe quoi
si on prend l'hypothèse qu'ils sont tirés d'un fichier exécutable compilé pour une architecture x86 '{' pourrait être l'opcode 7B c'est à dire l'instruction de saut conditionnel x86 JNP (Jump short if not parity - PF=0) et 'B' correspondre au déplacement du saut court qui serait à une adresse relative de 0x42 (c'est à dire 66 octets plus loin) par rapport à l'adresse courante d'exécution
mais les deux 0 qui suivent n'ont alors pas beaucoup de sens si le test échoue
cela dit, le désassemblage d'un programme objet doit se faire depuis le début , car un octet, selon son contexte, peut être compris comme un opcode, comme une adresse mémoire ou une partie d'une adresse mémoire, comme une valeur,... l'analyse d'octets sortis de leur contexte a peu de sens
quand à espérer obtenir un quelconque code source C en ingénierie inverse (décompilation donc) à partir de 4 octets sortis de nulle part, c'est encore une autre paire de manche :-)
tu vois, que cela ne te renseigne pas beaucoup, et que si tu veux faire cela par toi même tu as besoin de te retrousser les manches sérieusement en analysant un peu plus que 4 octets, sans compter que tu dois te trouver dans des conditions bien précises pour que tout ce travail soit légal :-)
Dal