none
Comment récupérer le contenu d'un exécutable sous forme de string RRS feed

  • Question

  • Bonjour, j'aimerai savoir comment faire pour lire les données d'un exécutable ligne par ligne.

    Le but est d'avoir le même résultat que lorsque j'ouvre un exécutable avec notepad.exe

    J'ai essayé avec File.Open... et récupéré sous forme de string l'intérieur d'un .exe mais le résultat est bien différent du résultat obtenu par notepad...

    Peut-être un problème d'encodage...

     

    Edit : language vb.net

    dimanche 18 avril 2010 14:59

Réponses

  • C'est normal de ne pas avoir le meme résultat parcequ'il s'agit d'un binaire !!!

    Il faut plutot utiliser BinaryReader et BinaryWriter 

    • Marqué comme réponse Alex Petrescu vendredi 23 avril 2010 07:58
    dimanche 18 avril 2010 21:37
  • Bonjour,

    En complément, normal, le logiciel de traitement de texte interprète et exécute le sens de certains caractères pour son propre compte, qui ont une signification précise ; exemple, admettons que la touche <tab> ascii 8 (je crois de tête) est dans ton code exe, et que tu visionnes ça dans un traitement de texte (TT) qui ignore la tabulation, et bien ton texte ne sera pas tabulé ; a contrario si tu le visualises ensuite dans un TT qui prend en charge la touche <tab> ton texte sera tabulé, ceci est la première explication.
    La seconde explication est que selon la façon dont est géré le code (texte ou binaire par exemple), les caractères en mode "texte" ne seront pas les mêmes, par exemple (fictif), "150" en mode binaire va donner "%$", si tu lis ton texte d'exe en binaire tu auras "150" mais si tu le lis en texte tu auras "%$"...
     
    C'est donc une combinaison de valeurs réservées du logiciels de lecture et la façon dont c'est écrit, ou celle dont il doit lire.
    Il faut lire le texte dans un logiciel spécial, comme sous-dit, qui va lire le code comme il est écrit et transcrire ses valeurs de différentes façons (txt, hexa, binaire, décimal, sexagésimal)... J'en ai écrit un il y a quelques années, voici à quoi ça ressemble :
    http://irolog.free.fr/irolog_vente/fichier_v/fichier.htm
     
    In fine, parfois dans l'exe on ne trouve pas ce que l'on cherche car le code est compilé et donc les caractères ne représentent pas toujours ceux d'origine, sinon ce serait trop facile à craquer si on avait le code en clair... Dans ce cas il faut utiliser un "décompilateur", mais en VB je n'en ai jamais trouvé ? Cependant j'en ai déjà eu, dans certain langages ça existe (ABAL de Bull-Prologue) par exemple.
    Toutefois je crois qu'il est possible d'écrire dans un exe, j'ai déjà vu ça de mémoire en réponse sur vb6 (le forum NewsGroups).
     
    Cordialement.

     


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    • Marqué comme réponse Alex Petrescu vendredi 23 avril 2010 07:59
    jeudi 22 avril 2010 13:28

Toutes les réponses

  • Bonjour,

     

    Ben, si notePade te convient, pourquoi ne pas l'ouvrir avec ce dernier, l'enregistrer et le lire ensuite en programmation ?

     

    Cordialement.

     


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    dimanche 18 avril 2010 15:59
  • Oui je pense que ça va se finir comme ça ^^

    Mais je trouve bizarre quand même de pas avoir le même résultat quand j'ouvre un exe avec notepad et quand j'en lis un dans une textbox comme ça :

     

     Public InsideFile As String
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Dim StreamToDisplay As New StreamReader("setup.exe", Encoding.GetEncoding(1252))
      Dim aLine As String = StreamToDisplay.ReadLine
      Do Until aLine Is Nothing
       TextBox1.AppendText(aLine + Environment.NewLine)
       aLine = StreamToDisplay.ReadLine
      Loop
      StreamToDisplay.Close()
     End Sub

     

    dimanche 18 avril 2010 19:34
  • C'est normal de ne pas avoir le meme résultat parcequ'il s'agit d'un binaire !!!

    Il faut plutot utiliser BinaryReader et BinaryWriter 

    • Marqué comme réponse Alex Petrescu vendredi 23 avril 2010 07:58
    dimanche 18 avril 2010 21:37
  • Bonjour,

     

    Il s’agit évidemment d’une différence entre le set de caractères de notepad et l’encodage de votre StreamReader ou textbox.

     

    Votre fichier est-il un exécutable .NET ou un exécutable win32 ? Il y a des informations spécifiques que vous voulez lire dans cet exécutable ?

     

    Cordialement,

    Alex


    Appel à contribution ! http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/ff4910bf-dca4-4664-b01e-b58bd860a643
    mardi 20 avril 2010 11:00
  • Bonjour,

    En complément, normal, le logiciel de traitement de texte interprète et exécute le sens de certains caractères pour son propre compte, qui ont une signification précise ; exemple, admettons que la touche <tab> ascii 8 (je crois de tête) est dans ton code exe, et que tu visionnes ça dans un traitement de texte (TT) qui ignore la tabulation, et bien ton texte ne sera pas tabulé ; a contrario si tu le visualises ensuite dans un TT qui prend en charge la touche <tab> ton texte sera tabulé, ceci est la première explication.
    La seconde explication est que selon la façon dont est géré le code (texte ou binaire par exemple), les caractères en mode "texte" ne seront pas les mêmes, par exemple (fictif), "150" en mode binaire va donner "%$", si tu lis ton texte d'exe en binaire tu auras "150" mais si tu le lis en texte tu auras "%$"...
     
    C'est donc une combinaison de valeurs réservées du logiciels de lecture et la façon dont c'est écrit, ou celle dont il doit lire.
    Il faut lire le texte dans un logiciel spécial, comme sous-dit, qui va lire le code comme il est écrit et transcrire ses valeurs de différentes façons (txt, hexa, binaire, décimal, sexagésimal)... J'en ai écrit un il y a quelques années, voici à quoi ça ressemble :
    http://irolog.free.fr/irolog_vente/fichier_v/fichier.htm
     
    In fine, parfois dans l'exe on ne trouve pas ce que l'on cherche car le code est compilé et donc les caractères ne représentent pas toujours ceux d'origine, sinon ce serait trop facile à craquer si on avait le code en clair... Dans ce cas il faut utiliser un "décompilateur", mais en VB je n'en ai jamais trouvé ? Cependant j'en ai déjà eu, dans certain langages ça existe (ABAL de Bull-Prologue) par exemple.
    Toutefois je crois qu'il est possible d'écrire dans un exe, j'ai déjà vu ça de mémoire en réponse sur vb6 (le forum NewsGroups).
     
    Cordialement.

     


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    • Marqué comme réponse Alex Petrescu vendredi 23 avril 2010 07:59
    jeudi 22 avril 2010 13:28