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

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Par défaut Pourquoi je ne vois pas un fichier binaire avec des 0 et des 1 après compilation d'un helloWord en C ?
    Bonjour,

    J'ai fait le premier programme que tout le monde fait en premier lieu, un helloWord.c.
    Code source ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
    	printf("Hello Word\n");
     
    	return EXIT_SUCCESS;
    }
    Je le compile avec Gcc :
    gcc helloWord.c -o helloWord.exe

    MAIS,

    Lorsque j'ouvre mon helloWord.exe avec mon éditeur de texte j'ai des "hiéroglyphe".
    Pourquoi je ne vois pas un fichier binaire avec des 0 et des 1 ou un fichier en caractère hexadécimal ?

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 525
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 525
    Par défaut
    Citation Envoyé par zephyre Voir le message
    Lorsque j'ouvre mon helloWord.exe avec mon éditeur de texte j'ai des "hiéroglyphe".
    parce que l'éditeur de texte ouvre le fichier comme un fichier texte et non un fichier binaire donc il affiche des codes ASCII ou Unicode donc il faut utiliser un éditeur de fichier binaire.
    Sinon avec Visual Studio on peut examiner la mémoire à une adresse donnée et avoir du code hexadécimal

  3. #3
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Pour voir le contenu de ton fichier binaire en hexadécimal, tu doit utiliser un éditeur hexadécimal (et non un éditeur de texte).

    https://www.google.com/search?q=éditeur+hexadécimal

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 769
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par zephyre Voir le message
    Pourquoi je ne vois pas un fichier binaire avec des 0 et des 1 ou un fichier en caractère hexadécimal ?
    Tu confonds "ce qui est" et "comment on te le montre". Si j'affiche 01100111 d'une certaine manière j'aurai 0x67, d'une autre manière j'aurai 0141 et encore d'une autre j'aurai 'a'.
    Un éditeur de texte est fait pour afficher un fichier texte (human readable). Si tu affiches autre chose avec, ton éditeur fait ce qu'il peut mais il n'est pas adapté. C'est comme si tu essayais d'ouvrir un film avec paint.
    T'es vraiment ingénieur pour pas savoir ça ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 540
    Par défaut 07734
    Bonjour SVE,

    La question est très légitime, me semble-t-il. Puisque tout est binaire sur un ordinateur, pourquoi cette saloperie me montre autre chose que des 0 et de 1 ? Tiens, ce message par exemple, ne serait il pas plus intéressant à la Matrix ?

    Citation Envoyé par Sve@r Voir le message
    ...T'es vraiment ingénieur pour pas savoir ça ???
    Ingénieur conseil n'oblige pas à savoir faire...

    Salut

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 769
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Puisque tout est binaire sur un ordinateur pourquoi cette saloperie me montre autre chose que des 0 et de 1 ?
    Tout est binaire certes, mais juste au plus bas niveau, celui des courants électriques qui passent ou ne passent pas ; et sur un disque au niveau du pixel magnétique qui est orienté à gauche ou à droite.
    Ensuite les éléments binaires sont assemblés en groupes de 8 appelés "octets" (c'est purement arbitraire, ça aurait pu être des groupes de 7 ou des groupes de 12 toutefois le nombre "8" étant une puissance parfaite de deux, c'est peut-être pour ça qu'il a été choisi comme facteur de regroupement) et ces groupes de 8 sont associés à un alphabet, là aussi purement arbitraire, nommé "table ascii" (officiellement "iso-latin-9"). Ainsi le groupe 01100111 signifie 'a', et le groupe 01101000 (le "+1" du précédent) signifie 'b' (et c'est pour cela qu'en C, 'a' + 1 = 'b').
    Partant de là, si un outil a pour but de lire un flux binaire et de l'afficher à l'écran, il est alors normal qu'il le lise par groupe de 8 et fasse ensuite correspondre le groupe lu au caractère correspondant dans l'alphabet de référence car c'est généralement l'usage qu'on attend de lui (enfin si on part du postulat que la majorité préfère voir un texte écrit dans notre alphabet auquel elle est habituée).
    De là deux possibilités
    • ce groupe correspond à ce qu'on nomme un "caractère affichable" (un caractère qui peut s'afficher à l'écran, tel "a", "b", "é", "*", "%" bref tous les caractères de ton clavier) et l'outil l'affiche naturellement
    • ce groupe ne correspond pas à un caractère affichable (parce que certains caractères servent à des actions spéciales tel le '\n' (0x0a) qui sert à aller à la ligne suivante ; ou le ctrl-g (0x07) qui produisait un "beep" sonore sur les apple) et dans ce cas, cette "saloperie" (que moi j"appelerais plus honnêtement "outil non adapté à l'usage qu'on veut en faire") fait ce qu'il peut. Mais ça reste qu'un outil auquel tu lui demandes une action qui n'est pas prévue. Et pire, imaginons que tu aies un fichier qui contienne "abc" (donc en binaire 011001110110100001101001 et je fais exprès de ne pas mettre d'espace facilitant la lecture) et que l'outil t'affiche le texte "011001110110100001101001", comment feras-tu le jour où tu veux avoir les lettres "abc" à l'écran?


    Donc tout n'est que conventions et format et traduction de ces conventions si elles sont connues. Par exemple il ne te viendrait pas à l'idée de tenter d'ouvrir un mp3 sous Excel parce que tu sais déjà que Excel ne sait pas lire le mp3 (et probablement inconsciemment tu en devines la raison: le format "mp3", la façon dont les 0/1 ont été regroupés à l'intérieur, n'est pas connue de Excel qui n'est pas prévu pour ça). Cela d'ailleurs devrait te faire réfléchir sur la crédibilité du film "Indépendance Day" ou les héros arrivent à dialoguer avec un ordinateur E.T. via réseau (!!!) pour lui balancer un virus (ouais bon ben le protocole, l'encoding et l'endianness tout ça on s'en balance hein...)

    Mais il existe aussi des outils spécialement dédiés. Par exemple il existe sur Linux un outil nommé "od" (Octal Dump). Contrairement à ce que laisse supposer son nom, il peut t'afficher un fichier au format de ton choix : en hexa, en octal et même en ascii. Et dans ce dernier cas, si le caractère qu'il doit afficher n'est pas affichable, il affiche un point à la place.

    Citation Envoyé par Guesset Voir le message
    Tiens, ce message par exemple, ne serait il pas plus intéressant à la Matrix ?
    Ca peut se programmer. Surtout en C qui est capable de descendre au niveau du bit. C'est à dire que sa base de lecture IO c'est l'octet mais il possède des opérateurs mathématiques permettant ensuite d'isoler chaque bit de cet octet. Mais c'est pareil, affiché en ligne ou à la Matrix, tout est question de conventions.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    T'es vraiment ingénieur pour pas savoir ça ???
    Je ne pense pas qu'il l'est, vu son historique ,il semble débutant en programmation.
    En tout cas si il est employé comme ingénieur en informatique, c'est en effet inquiétant ,vu qu'il ne semble pas maîtriser de nombreuse bases...

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 061
    Par défaut
    Il est peut-être tout simplement ingénieur en autre chose que l'informatique.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 540
    Par défaut
    Bonjour Sve,
    Citation Envoyé par Sve@r Voir le message
    Tout est binaire certes, mais juste au plus bas niveau...
    Je te remercie de tes explications très détaillées que je ne croyais pas déclencher par ma boutade.

    Ceci étant, il y a du binaire qui ne l'est pas tant que ça. Je pense aux codages multilevels des SSD qui stockent de 4 à 16 états par cellule qu'il faut ensuite recoder en 2 à 4 bits (il y a aussi les nuages d'états des modulations en quadrature). Bientôt l'analogique, le retour ?

    Salut

  10. #10
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 540
    Par défaut Capillotracté ?
    Bonjour,

    Dans beaucoup de boites, Ingénieur conseil signifie commercial. Je présume qu'ils pensent que cela sonne mieux.

    Salutations

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Par défaut
    Y a un truc que je ne comprends pas alors dans ce cas :
    Si j'écris un code source dans un fichier et que je le nomme F1 je l'encode en UTF8. Je le compile => ça me donne un binaire nommé B1
    Si je reprends le même code source et que je change l'encodage en ASCII par exemple. Je le compile => ça me donne un binaire nommé B2
    Es ce que le binaire B1 = B2 ?
    Normalement non ? (car ça dépends comment on regroupe les bits). Sachant que si on regroupe les bits de la même et que B1 C B2 ou B2 C B1 pour les valeurs => B1 = B2
    Je pourrai tester mais je suis feignant.

    En faite encodage et format c'est la même idée derrière ?

    Sve@r
    Et pire, imaginons que tu aies un fichier qui contienne "abc" (donc en binaire 011001110110100001101001 et je fais exprès de ne pas mettre d'espace facilitant la lecture) et que l'outil t'affiche le texte "011001110110100001101001", comment feras-tu le jour où tu veux avoir les lettres "abc" à l'écran?
    Je pense que la fonction d'encodage ou de format pour fonctionner ne peut être que bijective, ça me semble logique, sinon y a conflit pour une série de bit donné, et comme l'ordi ne pense pas => Error.
    Comme le format est bijectif => on peux faire l'opération inverse.
    Si j'ai le binaire et le format (encodage) alors théoriquement je dois pouvoir revenir soit au pixel pour une image soit au caractère pour un fichier texte.
    J'en veux pour preuve :
    Avec Vim il existe une commande pour afficher le binaire plus exactement de l'hexa mais c'est la même chose sachant que 2 hexa nous donne un octet lui même faisant 8 bits.
    Personnellement je préfère lire de l'hexa que du binaire.
    Le format est précisé dans Vim par un paramètre set encoding ...
    Il est alors capable de passer aussi bien au binaire avec une commande = ':%xxd' ou un truc comme ça et de faire exactement l'opération inverse.
    Si jamais c'était pas bijectif vim serai incapable de le faire.

    eks
    Pour voir le contenu de ton fichier binaire en hexadécimal, tu doit utiliser un éditeur hexadécimal (et non un éditeur de texte).
    Faux Vim le fait et jusqu'à preuve du contraire Vim est un éditeur de texte.

    Mat.M
    Sinon avec Visual Studio on peut examiner la mémoire à une adresse donnée et avoir du code hexadécimal
    Intéressant vraiment merci pour le tuyau


    Sve@r
    C'est comme si tu essayais d'ouvrir un film avec paint.
    Cette idée m'a traversé l'esprit. Je me suis dit si j'ouvre un film avec mon éditeur de texte et que je le lance qu'es ce qui se passe ?
    Si je connaissais le format, je verrai probablement "la même chose" qu'avec mon simple petit programme, une série de caractère en hexa.

    Donc si je reprends, la seule chose qu'il me faut si j'ai un binaire quelconque, en particulier un binaire propriétaire, sachant que maintenant la norme dans l'encodage est l'UTF8, et qu'on part du principe que c'est une architecture 64 bits et que c'est un jeu d'instruction CISC, théoriquement je devrai pouvoir arriver à revenir au code source, non ? Je vois pas ce qui pourrai bloquer ?
    On pourrai par exemple faire un machine learning avec tous les programmes open sources qui existent lui donner ça à manger, on a 100 000 programmes pour l'entrainement et roule ma poule t'as les yeux bleus.
    C'est beaucoup de taffe mais faisable.
    Il faudrait connaître également en quel langage a été écrit le programme.
    Ce sera dégueulasse à lire mais c'est mieux que rien.
    Ou comment niquer toute l'industrie du numérique

    Pour conclure, sur vos remarques ici et la :
    Vous aussi vous confondez ce qui est affiché et ma véritable profession.

    J'ai fait très très peu d'informatique dans ma vie.
    Et de toute façon je préfère apprendre en autodidacte.
    L'école d'ingénieur car oui j'en ai fait une ne m'a rien appris en informatique.

    Une dernière question l'encodage quand on le paramètre dans son éditeur de texte :
    Ce sont les caractères qui sont représentés dans le binaire, ou bien, les caractères de l'éditeur de texte, ou les deux à la fois ?

    En plus on a le code source de la JVM une autre pelote de laine à démêler.
    https://stackoverflow.com/questions/...en-source-code

    Einstein à dit :
    Si l'idée n'est pas à priori absurde, elle est sans espoir.

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 769
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zephyre Voir le message
    Si j'écris un code source dans une fichier et que je le nomme F1 je l'encode en UTF8. Je le compile => ça me donne un binaire nommé B1
    Si je reprends le même code source et que je change l'encodage en ASCII par exemple. Je le compile => ça me donne un binaire nommé B2
    Es ce que le binaire B1 = B2 ?
    Oui pour deux raisons
    • l'ascii est un sous-ensemble d'utf-8. Si 'a' vaut 0x61 en ascii, alors "a" vaut 0x0061 en utf-8. L'utf-8 c'est (grosso-modo) "ascii + d'autres caractères en plus" et donc les codes d'origine ascii ont été repris en utf-8 (pour justement assurer la compatibilité)
    • de toute façon la compilation c'est une traduction d'un langage "humain" en langage "machine". Et donc que l'ordre "goto" soit écrit en ascii ou écrit en utf-8, de toute façon la traduction sera au final la même.


    Citation Envoyé par zephyre Voir le message
    Personnellement je préfère lire de l'hexa que du binaire.
    Alors pourquoi tu demandais des 0 et des 1 ? Pourquoi tu n'as pas demandé des 0x... ???
    De toute façon même lire de l'hexa tu t'en lasseras vite. En revanche il existe sous Linux un programme nommé "strings" qui a charge de montrer toutes les strings (les chaines de caractère) d'un programme. Si par exemple le programme contient printf("Hello") ben le "Hello" c'est une chaine qui restera telle quelle dans le compilé. Et le programme "strings" te la montrera. Même si l'usage est limité ça sera un peu plus amusant que voir défiler 0x04 0x77 0xda 0xe1 ...

    Citation Envoyé par zephyre Voir le message
    En faite encodage et format c'est la même idée derrière ?
    Suis pas certain (ça dépend surtout de comment tu comprends "format") mais pour moi, le format c'est la façon d'afficher une valeur (avec des 0 devant, sans 0 devant, avec des espaces devant, aec des espaces derrière, etc etc) tandis que l'encodage c'est la façon dont les caractères sont traduits.

    Citation Envoyé par zephyre Voir le message
    Comme le format est bijectif => on peux faire l'opération inverse.
    Tu n'as pas bien compris la question: quelle différence feras-tu entre un fichier qui contient "abc" et que tu vois à l'écran "01101001..." et un fichier qui contient vraiment "01101001..."???

    Citation Envoyé par zephyre Voir le message
    Faux Vim le fait et jusqu'à preuve du contraire Vim est un éditeur de texte
    Commence pas à pinailler. Vim est un éditeur de texte et aussi d'hexadécimal. Notepad++ aussi le fait. Hé oui, certains outils peuvent faire plusieurs choses. Tout comme "tar", commande à l'origine prévue pour faire de l'archivage pur qui a ensuite été enrichie d'une fonction de compression.
    Ca n'en reste pas moins vrai que pour ouvrir un fichier qui contient autre chose que des caractères affichables (définition de base d'un fichier texte), il te faut un outil capable de te montrer ces caractères sous une forme visible => l'hexadécimal est encore ce qu'il y a de plus simple donc il faut un éditeur hexadécimal.

    Citation Envoyé par zephyre Voir le message
    Cette idée m'a traversé l'esprit. Je me suis dit si j'ouvre un film avec mon éditeur de texte et que je le lance qu'es ce qui se passe ?
    Comment envisages-tu l'opération de "lancer" un film ouvert avec un éditeur de texte? Un éditeur de texte n'est pas prévu pour "lancer" le fichier qu'il a ouvert mais pour l'afficher à l'écran.
    Ce que tu appelles "lancer un film" c'est en réalité appeler un programme particulier dont le travail sera de lire le film et l'afficher à l'écran. Et bien souvent, l'association entre "clic sur film" et "lancement du programme dédié" est enregistrée dans l'OS qui se charge alors d'appeler le programme quand tu double-cliques sur le film.

    Citation Envoyé par zephyre Voir le message
    Donc si je reprends, la seule chose qu'il me faut si j'ai un binaire quelconque, en particulier un binaire propriétaire, sachant que maintenant la norme dans l'encodage est l'UTF8, et qu'on part du principe que c'est une architecture 64 bits et que c'est un jeu d'instruction CISC, théoriquement je devrai pouvoir arriver à revenir au code source, non ? Je vois pas ce qui pourrai bloquer ?
    Rien. C'est ce qu'on appelle de la "rétro-ingéniérie". Et c'est comme ça que font les hackers pour créer des cracks. Ils remontent le code source pour voir à quel moment le jeu demande la clef, puis créent un pont entre la demande et la vérification et ainsi plus besoin de clef. Et en réalité il n'y a même pas besoin de remonter le source, il existe des outils qui montrent juste la mécanique interne d'un exécutable et qui permettent de le modifier en direct.
    Je me souviens quand le jeu Assassins Creed est sorti en 2004, il a été annoncé publiquement par Ubisoft comme "le jeu impiratable" avec force arguments (connexion internet obligatoire, etc etc). Il a été piraté en 7 jours. J'ai jamais vu un crack sortir aussi vite !!!

    Citation Envoyé par zephyre Voir le message
    Vous aussi vous confondez ce qui est affiché et ma véritable profession.
    On ne peut pas confondre une info affichée et une info qu'on ne connait pas. Si tu es ingénieur aéronautique ou ingénieur agronome ou ingénieur mécanique des fluides ou quoi que ce soit ben tu le mets comme ça on ne confondra plus.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Par défaut
    Sve@r
    l'ascii est un sous-ensemble d'utf-8. Si 'a' vaut 0x61 en ascii, alors "a" vaut 0x0061 en utf-8. L'utf-8 c'est (grosso-modo) "ascii + d'autres caractères en plus" et donc les codes d'origine ascii ont été repris en utf-8 (pour justement assurer la compatibilité) de toute façon la compilation c'est une traduction d'un langage "humain" en langage "machine". Et donc que l'ordre "goto" soit écrit en ascii ou écrit en utf-8, de toute façon la traduction sera au final la même.
    Dans l'absolu non, c'est pas le même binaire.
    0x61 et 0x0061 => pas le même binaire car c'est pas la même taille de mot.
    Concernant l'instruction goto :
    Difficile à dire ça dépends comment ça a été fait.
    Supposons que l'encodage qu'on met dans l'éditeur de texte code à la fois ce qu'il y a dans le binaire et à la fois ce qu'il y a dans l'éditeur de texte.
    Alors l'instruction Goto n'ai pas codé dans l'absolu de la même façon.
    Exemple :
    0x000A = goto (encodage UTF8 => 2 octets)
    0xA = goto (encodage ASCII => 1 octet)
    Supposons qu'au lieu de se faire chier avec l'encodage ils est fait une table de correspondance pour les instructions CISC et tout fait pointer vers la même chose.
    0x000A ---> 0xA ---> goto
    La je suis d'accords avec toi.
    Il faudrait voir si le compilateur à changer avec l'encodage UTF8 pour trancher mais je suis feignant.
    J'ai jamais coder un compilateur ni sait exactement comment il fonctionne donc j'en sais rien.
    Mais je parie sur l'intermédiaire sinon c'est trop la mouise à gérer, et de plus comme les informaticiens moins ils en font mieux ils se portent, je parie sur l’intermédiaire.

    Sve@r
    Alors pourquoi tu demandais des 0 et des 1 ? Pourquoi tu n'as pas demandé des 0x... ???
    De toute façon même lire de l'hexa tu t'en lasseras vite. En revanche il existe sous Linux un programme nommé "strings" qui a charge de montrer toutes les strings (les chaines de caractère) d'un programme. Si par exemple le programme contient printf("Hello") ben le "Hello" c'est une chaine qui restera telle quelle dans le compilé. Et le programme "strings" te la montrera. Même si l'usage est limité ça sera un peu plus amusant que voir défiler 0x04 0x77 0xda 0xe1 ...
    Désolé, je me suis mal exprimé méa-culpa, j'aurai dû dire hexa mais pour moi binaire ou hexa c'est blanc bonnet et bonnet blanc mais dans l'absolu tu as raison.
    Merci pour l'info, je prends mais je me doute qu'elle me soit d'une grande utilité.

    Sve@r
    Suis pas certain (ça dépend surtout de comment tu comprends "format") mais pour moi, le format c'est la façon d'afficher une valeur (avec des 0 devant, sans 0 devant, avec des espaces devant, aec des espaces derrière, etc etc) tandis que l'encodage c'est la façon dont les caractères sont traduits.
    Quel est le plus grand entre traduire et afficher ?
    Si j'affiche => je traduis car je ne peux pas afficher sans traduire.
    MAIS,
    Si je traduis => PAS FORCEMENT j'affiche.
    Ainsi afficher est plus grand que traduire.
    C'est donc bien la même idée.

    Sve@r
    Commence pas à pinailler. Vim est un éditeur de texte et aussi d'hexadécimal. Notepad++ aussi le fait. Hé oui, certains outils peuvent faire plusieurs choses. Tout comme "tar", commande à l'origine prévue pour faire de l'archivage pur qui a ensuite été enrichie d'une fonction de compression.
    Ca n'en reste pas moins vrai que pour ouvrir un fichier qui contient autre chose que des caractères affichables (définition de base d'un fichier texte), il te faut un outil capable de te montrer ces caractères sous une forme visible => l'hexadécimal est encore ce qu'il y a de plus simple donc il faut un éditeur hexadécimal.
    Ok mais je ne connais pas la définition exacte d'un éditeur de texte donc ceci explique cela.
    Si la plus part des éditeurs de texte ont cette fonction, j'ai tords.
    Sinon, j'ai raison.
    Moi j'en sais rien.

    Sve@r
    Comment envisages-tu l'opération de "lancer" un film ouvert avec un éditeur de texte? Un éditeur de texte n'est pas prévu pour "lancer" le fichier qu'il a ouvert mais pour l'afficher à l'écran.
    Ce que tu appelles "lancer un film" c'est en réalité appeler un programme particulier dont le travail sera de lire le film et l'afficher à l'écran. Et bien souvent, l'association entre "clic sur film" et "lancement du programme dédié" est enregistrée dans l'OS qui se charge alors d'appeler le programme quand tu double-cliques sur le film.
    Tu as raison, "lancer" n'est pas le bon mot ici, j'aurai du dire lire.

    Sve@r
    Rien. C'est ce qu'on appelle de la "rétro-ingéniérie". Et c'est comme ça que font les hackers pour créer des cracks. Ils remontent le code source pour voir à quel moment le jeu demande la clef, puis créent un pont entre la demande et la vérification et ainsi plus besoin de clef. Et en réalité il n'y a même pas besoin de remonter le source, il existe des outils qui montrent juste la mécanique interne d'un exécutable et qui permettent de le modifier en direct.
    Je me souviens quand le jeu Assassins Creed est sorti en 2004, il a été annoncé publiquement par Ubisoft comme "le jeu impiratable" avec force arguments (connexion internet obligatoire, etc etc). Il a été piraté en 7 jours. J'ai jamais vu un crack sortir aussi vite !!!
    Là tu me parles chinois, je ne sais pas ce qu'est une clef dans un jeu, ni un pont (sens jeu vidéo en réseau).
    Les jeux vidéos ne m'intéresse pas de toute façon.
    Mais le plus important c'est le code source pour savoir comment ça a été fait pour la connaissance et non pas ça simple application.
    A moins que ce soit juste pour faire joujou.

    On ne peut pas confondre une info affichée et une info qu'on ne connait pas. Si tu es ingénieur aéronautique ou ingénieur agronome ou ingénieur mécanique des fluides ou quoi que ce soit ben tu le mets comme ça on ne confondra plus.
    Une information peut être que vous ne connaissez pas mais qui ne vous empêche pas de faire des pronostiques ? Je me trompe ?
    On va à la pêche aux infos donc.
    Ou comme on dit on tâte le terrain.
    En résumé de mon parcours c'est très simple :
    Je viens d'un milieu modeste qui ne connait rien du tout.
    J'ai du me débrouiller seul.
    J'étais très bon en mathématiques.
    Mais comme je suis né avant les année 90 et que je n'ai jamais eu d'ordinateur.
    Le premier j'ai du me le payer moi même quand j'ai fait mes études dans le supérieurs j'avais un retard colossal par rapport aux autres élèves dans l'informatique.
    Pour te dire je ne savais même pas me servir de word ne connaissais pas outlook, n'avais pas d'adresse mail ... Un éditeur de texte au secoure c'est quoi ?
    Bref je suis pas la pour pleurer sur mon sort.
    J'ai réussi en mathématique grâce à un excellent professeur qui appliquait toujours la même méthode :
    1) Définition
    2) Théorème
    3) Démonstration
    4) Exercice
    Mais en informatique j'étais complétement perdu, donc j'ai choisi une autre branche, me disant que j'aurais plus de chance de réussir.
    Il est bien plus facile de se faire aider en informatique que dans d'autres matières, et ça c'est vraiment cool

  14. #14
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par zephyre Voir le message
    Y a un truc que je ne comprends pas alors dans ce cas :
    Donc si je reprends, la seule chose qu'il me faut si j'ai un binaire quelconque, en particulier un binaire propriétaire, sachant que maintenant la norme dans l'encodage est l'UTF8, et qu'on part du principe que c'est une architecture 64 bits et que c'est un jeu d'instruction CISC, théoriquement je devrai pouvoir arriver à revenir au code source, non ? Je vois pas ce qui pourrai bloquer ?
    On pourrai par exemple faire un machine learning avec tous les programmes open sources qui existent lui donner ça à manger, on a 100 000 programmes pour l'entrainement et roule ma poule t'as les yeux bleus.
    C'est beaucoup de taffe mais faisable.
    Il faudrait connaître également en quel langage a été écrit le programme.
    Ce sera dégueulasse à lire mais c'est mieux que rien.
    Ou comment niquer toute l'industrie du numérique

    Mais le plus important c'est le code source pour savoir comment ça a été fait pour la connaissance et non pas ça simple application.
    A moins que ce soit juste pour faire joujou.
    Alors quand on débute, il faut avoir un peu d'humilité et se dire que d'autre y en penser , et oui ça existe, tu as des décompilateur qui peuvent te donner du code C à partir d'un éxécutable.
    si c'est ce qui t'intéresse alors tu as IDA Pro , Ghidra , Radare2 etc etc comme logiciel.

    Sinon ,non le code source d'origine est perdu à tout jamais quand tu compile, parce que la compilation est une suite d'instruction , donc tu perd le nom des fonction , des variables ,et plein d'autre info et de la structure du code d'origine.
    Parce que il n'ya pas de bijection "unique" entre un code haut niveau (oui je vais mettre le C dedans) et le langage machine.
    D'un coté , tu peux reconstruire de plusieurs manière le code que tu as en assembleur dans un langage haut niveau.

    Un autre point, c'est illégal de désassembler un programme propriétaire.


    Citation Envoyé par zephyre Voir le message
    Y a un truc que je ne comprends pas alors dans ce cas :

    Il faudrait connaître également en quel langage a été écrit le programme.
    Ce sera dégueulasse à lire mais c'est mieux que rien.
    Ou comment niquer toute l'industrie du numérique
    Donc non ça existe (je t'ai donné pas mal de logiciel qui le font ) , et ça nique pas toute l'industrie, parce que le code générer est relativement complexe à étudié ,et ça demande des compétences assez poussé pour pouvoir l'exploiter.
    Et en général , c'est utilisé dans la sécurité.

    On n'est plus dans les années 80-90 ou étudier un programme propriétaire pouvait être intéressant d'un point de vue "algorithmique" ,de nos jours ce sont les programmes open source qui ont la "cote" , google , Microsoft , facebook , Apple, pompe tout leur algo chez les programmes open source.
    Et celà peut poser une autre question plus "philosophique" , beaucoup de dev bénévole sans le savoir permet à rendre ces société multimilliardaire on leur fournissant un travail de titan gratuitement et à disposition.
    Si tu recherche des algos , du code tout fait , tu as un site formidable qui est github ,tu trouvera à boire et à manger.


    Citation Envoyé par zephyre Voir le message
    et qu'on part du principe que c'est une architecture 64 bits et que c'est un jeu d'instruction CISC
    Cette info te servira à rien , c'est un peu comme si pour étudier une voiture tu disais " alors on sait que ça à 4 roues et que ça à un moteur à explosion et avec ça s'est suffisant pour tout savoir non ?"
    Parce que on soit, tu peux avoir plein d'architecture 64 bits /CISC (même si j'en connais qu’un ) , mais c'est pas une info qui informe comment exploiter ces données.
    Alors il y'a un mot qu'il faut connaître c'est l'ISA (Instruction set architecture) , et apparemment toi celui qui t'intéresse ,c'est celui qui marche sur PC ,donc le x86 et particulièrement le x86-64 (ou appeler aussi x64 ).
    Et là oui , tu aura plein de site , notamment les principaux concerné Intel et AMD , qui te donnera la liste des instructions ce qu'il font et les opcodes.

    Ah par contre , comme tu semble débutant , je trouve que tenter de comprendre le x86 d'entrée de jeu me semble "quasi-impossible" ,tellement que cet ISA est compliqué, surtout qu'il doit avoisiner les 1000 instructions...
    Et que son décodage est relativement complexe (les opcodes varie entre 1 et 15 octets ).

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 769
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zephyre Voir le message
    Dans l'absolu non, c'est pas le même binaire.
    0x61 et 0x0061 => pas le même binaire car c'est pas la même taille de mot.
    Je parlais de "a=0x61" ou "a=0x0061" dans le code source. C'est le source qui est écrit en ascii ou en utf-8 car ce sont là des normes pour encoder des caractères visuels (le "a", le "e", le "é', le "n" avec un tilde de l'alphabet espagnol, plus les caractères chinois, russes, etc). En binaire on ne parle plus d'encodage, c'est juste des octets qui se suivent.
    Donc que "goto" soit codé 0x67, 0x6f, 0x67, 0x6f ou 0x0067, 0x006f, 0x0067, 0x006f) ça donnera le même binaire. Faut juste que le compilateur sache si le source est en utf-8 ou en ascii.
    C'est aussi pour cela qu'en Python (langage qui est compilé à la volée, quand on l'exécute) on écrit #coding: utf-8 en seconde ligne, pour que Python sache que le source est écrit en utf-8.
    PS: je dis "0x0061" pour illustrer le fait qu'en utf-8 les données sont codées sur plus d'un octet mais en réalité ce n'est pas tout à fait exact: si la donnée tient sur un octet alors elle est encodée sur un octet. Ainsi "a" sera codé 0x61 aussi bien en ascii qu'en utf-8. C'est seulement si elle nécessite plus d'un octet qu'un second lui sera attribué (et ainsi de suite pouvant aller au final jusqu'à 4 octets)

    Citation Envoyé par zephyre Voir le message
    Ok mais je ne connais pas la définition exacte d'un éditeur de texte donc ceci explique cela.
    Il faut d'abord connaitre la définition d'un fichier texte: c'est un fichier qui ne contient que des caractères affichables. Un éditeur de texte c'est un logiciel permettant d'afficher ces caractères à l'écran (et généralement de les modifier).

    Citation Envoyé par zephyre Voir le message
    Si la plus part des éditeurs de texte ont cette fonction, j'ai tords.
    Sinon, j'ai raison.
    Moi j'en sais rien.
    notepad ne sait pas afficher du binaire.

    Citation Envoyé par zephyre Voir le message
    Tu as raison, "lancer" n'est pas le bon mot ici, j'aurai du dire lire.
    Et en employant le bon verbe tu comprends alors mieux ce qui se passe: si tu ouvres ton film avec un lecteur vidéo (un programme prévu pour lire les n octets représentant une images puis traduire ces octets en vraie image puis envoyer cette image à l'écran puis recommencer avec les n octets suivants de l'image suivante) ça te projette ton film ; mais si tu ouvres ton film avec un éditeur texte ou hexa (un programme prévu pour lire les octets un à un dans une boucle et les afficher à l'écran sans se poser de question) tu auras soit des hiéroglyphes (parce que l'éditeur de texte ne sait pas quoi faire si ce qu'il doit afficher n'est pas du texte) soit de l'hexa (la valeur numérique des octets lus).

    Citation Envoyé par zephyre Voir le message
    Là tu me parles chinois, je ne sais pas ce qu'est une clef dans un jeu, ni un pont (sens jeu vidéo en réseau).
    Les jeux vidéos ne m'intéresse pas de toute façon.
    C'est pareil avec les logiciels qui demandent une clef d'activation. Quelque part, il y a un code qui dit grosso-modo "si la clef existe et est correcte alors aller à tel endroit sinon aller à tel autre". Ben juste avant tu rajoutes l'instruction "aller à tel endroit" et ça va directement à tel endroit sans faire le test. C'est ce qu'on appelle "un pont". Mais c'était surtout pour dire que ce qu'un compilateur traduit dans un sens peut toujours être traduit dans l'autre sens. C'est en effet bijectif comme tu l'as dit.

    Citation Envoyé par zephyre Voir le message
    Mais le plus important c'est le code source pour savoir comment ça a été fait pour la connaissance et non pas ça simple application.
    Déjà tous les sources de Linux sont disponibles, inutile alors de tenter la décompilation qui te donnera un source illisible (les variables style "num_lig" ou "taille_mot" seront devenues "a00001", "a00002", "a00003" etc). C'est bijectif mais les infos perdues (le nom des variables) sont alors artificiellement recrées.
    Mais le mieux est encore que tu crées toi-même tes propres programmes. Tu apprendras à programmer et tu pourras aussi t'amuser à les décompiler.

    Citation Envoyé par zephyre Voir le message
    En résumé de mon parcours c'est très simple :
    Je viens d'un milieu modeste qui ne connait rien du tout.
    J'ai du me débrouiller seul.
    J'étais très bon en mathématiques.
    Mais comme je suis né avant les année 90 et que je n'ai jamais eu d'ordinateur.
    Le premier j'ai du me le payer moi même quand j'ai fait mes études dans le supérieurs j'avais un retard colossal par rapport aux autres élèves dans l'informatique.
    Pour te dire je ne savais même pas me servir de word ne connaissais pas outlook, n'avais pas d'adresse mail ... Un éditeur de texte au secoure c'est quoi ?
    Bref je suis pas la pour pleurer sur mon sort.
    Moui. Tu penses être le seul? Moi à 18 ans je suis entré dans la Marine. Comme j'étais bon en logique j'ai eu de bons résultats aux tests de logique ce qui m'a permis d'intégrer la spécialité des informaticiens. Je suis sorti de l'école dans la moyenne (à l'école de la Marine on faisait de la programmation sur papier car il n'y avait pas d'ordi pour les élèves) et j'ai intégré une unité où on m'a dit "ici on travaille avec un système qui se nomme Unix". J'ai fait "ok" et je m'y suis mis. Et j'ai aimé ce système simple à comprendre. Et ensuite je suis devenu ingénieur, en étudiant (j'ai eu aussi de la chance car à un moment j'ai été instructeur dans l'école d'informatique (celle où j'avais été élève) mais qui avait alors changé de lieu et avait été regroupée avec celle de l'Armée de Terre et dans laquelle il y avait des tas d'autres instructeurs dans tous les domaines et avec qui je discutais beaucoup) et puis un jour j'ai passé un concours et j'ai été reçu (chance aussi car d'habitude ils en prenaient 25, cette année là ils en ont pris 40 et j'ai été 38°).
    Mais tout ceci n'empêche pas cela. Ici c'est un forum dans lequel les débutants sont les bienvenus mais qui reste quand-même un forum de professionnels. On vient pour aider mais aussi (et surtout) pour apprendre. On n'est pas là pour jouer à un loto ou à faire des pronostics de PMU. Si on a quelqu'un en face de nous qui se marque "ingénieur", vu qu'on est dans un fofo informatique on présume qu'il est ingénieur en informatique donc s'il ne l'est pas, on préfère qu'il dise alors dans quelle domaine il est ingénieur.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  16. #16
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 061
    Par défaut
    Dans l'absolu non, c'est pas le même binaire.
    0x61 et 0x0061 => pas le même binaire car c'est pas la même taille de mot.
    Sauf qu'en UTF-8 on utilisera que la notation 0x61. La intervient la notion d'encodage :

    Dans toute chaîne de caractères codée en UTF-8, on remarque que :
    tout octet de bit de poids fort nul désigne un unique « point de code » assigné à un caractère du répertoire de l'US-ASCII et codé sur ce seul octet, d'une valeur scalaire identique à celle du codet utilisé dans le codage US-ASCII
    bit de poids fort : le 1er bit d'un octet (le plus à gauche). 0x61=a=00111101, le 1er bit est 0 donc désigne un caractère d'un seul octet. l'UTF-8 peut encoder un caractère de 1 à 4 octets, les 127 premiers caractères ayant les mêmes significations en ASCII et UTF-8.

    un caractère hexadécimal n'aura donc un sens précis que dans un contexte précis. Si il s'agit d'un fichier texte ASCII : 1 octet=1 caractère du texte. Idem pour les bits bien sûr. Un masque de sous réseau c'est un bit positionné à 1 ou 0 qui a une signification.

    Mais si tu prends un programme compressé par exemple, c'est le flux de bits qui aura un sens, pas un ou plusieurs octets. Exemple : dans le flux, tu dois lire 5 bits, puis 2 puis 7 pour pouvoir décompresser. L'information du nombre de bits à lire va dans ce cas être contenu soit dans les spécifications de format de fichier, soit dans le fait que certains bits soient à 0 ou 1.

    Il en est de même en code machine. Et surtout sur processeur x86 ou la taille d'une instruction va varier, notamment si tu travailles en 8,16,32 ou 64 bits (car les x86 étant rétrocompatibles peuvent travailler encore en 8,16 bits). Tu vas avoir aussi des instructions encodés sur 1 ou 2 octets qui vont contenir la commande et son paramètre.

    Dans un programme, tu vas trouver une section code, une section data (je n'évoquerais pas les autres pour ne pas compliquer les choses).

    La section data va contenir les chaines de caractères, tu y trouvera ta chaine "Hello word". (avec ta faute de frappe) . Sans connaitre le format de l'executable, tu trouveras ta chaine en ouvrant ton fichier avec hexedit et en recherchant celle-ci.
    Un exécutable est une suite d'instructions qui vont essentiellement charger des adresses ou des valeurs de la mémoire vers les registres du processeur et vice-versa, les commandes proprement dites (calculs, comparaisons) se faisant sur les registres (c'est juste une vulgarisation). Lire une exécutable octet par octet sans connaitre ni le format de l'executable, ni l'assembleur n'a aucun sens. Et même pour ceux qui savent c'est pénible. C'est pas pour rien qu'on a inventé l'assembleur, puis les langages de plus haut niveau. Alors de là à le lire bit à bit ....
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  17. #17
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 385
    Par défaut
    chrtophe a raison: Un programme exécutable, ça n'est pas que du texte, et loin de là.

    L'encodage du texte? Il ne va affecter que le texte. Ton programme qui affiche "Hello World"? Changer l'encodage vers EBCDIC fera que la chaîne "Hello World" sera encodée en EBCDIC dans le programme... et que ton terminal ne saura pas l'afficher correctement s'il est toujours configuré pour s'attendre à de l'ASCII ou de l'UTF-8. C'est à peu près tout ce que ça changera.

    Dans un éditeur hexa, au lieu de voir 48 65 6c 6c 6f 20 57 6f 72 6c 64, tu verras c8 85 93 93 96 40 e6 96 99 93 84. Mais tout autour de ça, tu verras que le reste n'a pas changé... À part la timestamp (et les checkums s'il y en a).

    PS: Attention, tout n'est pas bijectif. L'encodage du texte l'est, mais la compilation ne l'est pas! Beaucoup d'informations nécessaires au programmeur humain ne le sont pas au processeur ou à l'OS (comme le nom des variables) et la phase d'optimisation du compilateur peut modifier le code, réordonner les instructions etc.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Citation Envoyé par zephyre Voir le message
    (...)
    Avec Vim il existe une commande pour afficher le binaire plus exactement de l'hexa
    (...)
    Le format est précisé dans Vim par un paramètre set encoding ...
    Il est alors capable de passer aussi bien au binaire avec une commande = ':%xxd' ou un truc comme ça
    (...)
    eks
    Pour voir le contenu de ton fichier binaire en hexadécimal, tu doit utiliser un éditeur hexadécimal (et non un éditeur de texte).
    Faux Vim le fait et jusqu'à preuve du contraire Vim est un éditeur de texte.
    vim sait faire beaucoup de choses, mais il n'a pas, lui-même des fonctionnalités d'affichage d'un contenu binaire en représentation hexadécimale à ma connaissance.

    La commande évoquée par zephyre semble être :

    Ceci passe vim en mode commande ( : ), prend la totalité du texte ( % ) et envoie ce texte à un programme externe exécuté par vim (le programme externe xxd à droite du ! lequel doit donc être installé sur le système), susceptible de traiter (filtrer) le texte, vim affichant alors le résultat du traitement, à savoir, ici, un hex dump produit par la commande Linux : xxd

    https://linux.die.net/man/1/xxd

    xxd est, aussi, effectivement capable, à partir d'un hex dump passé dans un format qu'il puisse reconnaître, de produire en sortie le binaire représenté par le hex dump (avec l'option -revert).

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

Discussions similaires

  1. [XL-2007] pourquoi vba ne lire pas deux fichier txt ses sont même format
    Par SBAY3I dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 12/08/2018, 17h05
  2. Réponses: 12
    Dernier message: 03/01/2009, 00h45
  3. Réponses: 11
    Dernier message: 15/09/2008, 11h25
  4. Partage de fichier windows avec des sous réseaux différents
    Par Annaced dans le forum Administration
    Réponses: 4
    Dernier message: 07/06/2006, 22h40
  5. probleme d'import de fichier txt avec des tab
    Par lecureuil dans le forum Access
    Réponses: 4
    Dernier message: 23/08/2005, 20h22

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