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

Copie d'un exe dans une chaine de caractère


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2016
    Messages : 24
    Par défaut Copie d'un exe dans une chaine de caractère
    Bonjour,

    Comme indiqué dans le titre j’aimerais copier le contenu du programme lorsqu’il est lancé dans une chaîne de caractère (pour ensuite pouvoir agir dessus, la comparer etc…). J’ai déjà fait ceci mais sa ne marche pas: la console affiche un symbole bizarre (cela est peu-être du au fait que mon programme est composé en binaire et qu’il tente de le convertir en ASCII ?)(le system("pause") est temporaire c’est pour le debug). Voici mon code :

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <libgen.h>
    #include <string.h>
    #include <dirent.h>
    #include <stdbool.h>
     
    int main(int argc, char *argv[]) {
     
        DIR *repertory = NULL ;
        repertory = opendir(".") ; //Répertoire courant
     
        struct dirent* actualFile = NULL ;
     
        while ((actualFile = readdir(repertory)) != NULL) { //Parcours le dossier tant qu'il y a des fichiers
     
            char *nameActualFile = malloc (sizeof (char) * strlen (actualFile -> d_name)) ; //Variable pour le nom du fichier actuel
     
            nameActualFile = actualFile -> d_name ; //Nom fichier actuel
     
            if (strstr (nameActualFile, ".exe") || strstr(nameActualFile, ".EXE")) { //Si c'est un .exe
     
                char *name = basename(argv[0]) ; //Récupère le nom du fichier
     
                FILE *fd ;
     
                fd = fopen(name, "rb");
     
                char caractere ;
     
                int longueur ;
     
                while (fread(&caractere, sizeof (char), 1, fd)) longueur++ ;
     
                char *copyActualFile = malloc (sizeof(char) * longueur) ;
     
                while (fread(&caractere, sizeof (char), 1, fd)) sprintf (copyActualFile, "%s%c", copyActualFile, caractere) ;
     
                printf ("%s", copyActualFile) ;
     
                system ("pause") ;
     
                //Fermeture
     
                fclose(fd) ;
     
            }
     
            free (nameActualFile) ;
     
        }
     
        return EXIT_SUCCESS ;
     
    }
    Comment faire ?

    Cordialement et Merci d'avance !

    EDIT : Après modification de quelques truc je suis arrivé à sa :

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <libgen.h>
    #include <string.h>
    #include <dirent.h>
    #include <stdbool.h>
     
    int main(int argc, char *argv[]) {
     
        DIR *repertory = NULL ;
        repertory = opendir(".") ; //Répertoire courant
     
        struct dirent* actualFile = NULL ;
     
        while ((actualFile = readdir(repertory)) != NULL) { //Parcours le dossier tant qu'il y a des fichiers
     
            char *nameActualFile = malloc (sizeof (char) * strlen (actualFile -> d_name)) ; //Variable pour le nom du fichier actuel
     
            nameActualFile = actualFile -> d_name ; //Nom fichier actuel
     
            if (strstr (nameActualFile, ".exe") || strstr(nameActualFile, ".EXE")) { //Si c'est un .exe
     
                char *name = basename(argv[0]) ; //Récupère le nom du fichier
     
                FILE *fd ;
     
                fd = fopen(name, "rb");
     
                char caractere ;
     
                int longueur ;
     
                while (fread(&caractere, sizeof (char), 1, fd)) longueur++ ;
     
                char *copyActualFile = malloc (sizeof(char) * longueur) ;
     
                rewind(fd) ;
     
                while (fread(&caractere, sizeof (char), 1, fd)) {
     
                    printf("\n%c\n", caractere) ;
     
                    sprintf (copyActualFile, "%s%c", copyActualFile, caractere) ;
     
                }
     
                int i = atoi(copyActualFile) ;
     
                printf ("\n\ni = %d\n", i) ;
     
                system ("pause") ;
     
                //Fermeture
     
                fclose(fd) ;
     
            }
     
            free (nameActualFile) ;
     
        }
     
        return EXIT_SUCCESS ;
     
    }
    Et au débug i = 0 et en caractère j'ai des phrases : des caractère bizarres, des lignes de compilations et des fonctions assembleur (c'est assez joli X) même si ce n'est pas ce que je veux^^)

    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
    MZÉ           ©       @                                   Ç   ║ ┤  ═!©L═!This program cannot be run in DOS mode.
    $       PE  L             Ó     *     Ç      0    @                     á     =3                                  p  ╠                                                          É                     0q  Ó                           .text   ─                       ` P`.data       0                    @ 0└.rdata  T   @                    @ 0@.eh_fram(   P                    @ 0@.bss    d    `                      Ç 0└.idata  ╠   p      $              @ 0└.CRT        Ç      *              @ 0└.tls         É      ,              @ 0└                                                                                                                                                                                                                                                                                                                                        Sâý8íH@@ à└tÃD    ÃD$   Ã$     ðâýÃ$@ Þ3  âýÞ¾  Þ╬  ìD$,ëD$í 0@ ÃD$ `@ Ã$`@ ÃD$,    ëD$ìD$(ëDÞ┘  í`@ à└tBïÿq@ ú0@ ëD$ïCë$Þ¥  í`@ ëD$ïC0ë$Þ¬  í`@ ëD$ïCPë$Þû  ÞÖ  ï0@ ëÞ╝  âõ*Þ  Þç  ï ëDí `@ ëD$í`@ ë$Þ  ë├Þl  ë$Þd  ìt& Sâý(ïD$0ï ï =æ  └w==ì  └rM╗   ÃD$    à   Þ5  â°ä¶   à└àá   1└â─([┬ ìv =ö  └tK=û  └t=ô  └u▀Ù│=  └tB=  └u¤ÃD$    Ã$   Þ▀  â°tià└t▓Ã$    ð©    Ùñ1█Úv   ì┤&    ÃD$    Ã$   Þñ  â°tJà└äs   Ã$    ð©    Úb   à    ð©    ÚO   ÃD$   Ã$   Þ]  â╚ Ú3   ÃD$   Ã$   ÞA  â╚ Ú   ÉÃD$   à   Þ$  à█©    ä§■  ëD$Þª  ïD$ÚÒ■  ì    ì╝'    âýÃ$    |q@ Þk²  ìt& ì╝'    âýÃ$    |q@ ÞK²  ìt& ì╝'    í¿q@  Óë÷ì╝'    í£q@  ÓÉÉÉÉÉÉÉÉÉí0@ à└tAUëÕâýÃ$ @@ Þ}  âýà└║    tÃD$@@ ë$Þi  âë┬àÊt   Ã$0@  Ê╔¾├ìt& UëÕ]├ÉÉÉÉÉÉÉÉÉÉÉâýïD$$à└tâ°t©   â─┬ Éìt& ïT$(ëD$ïD$ ëTë$Þ  ©   â─┬ ì    ì╝'    VSâýâ=(`@ ïD$$t
    Ã(`@    â°tâ°tBâ─©   [^┬ ¥Ç@ ü¯Ç@ ┴■à÷~ß1█ïØÇ@ à└t ðâ├9¾uýâ─©   [^┬ ïD$(ÃD$   ëDïD$ ë$Þ|  Ùáìv ì╝'`@ @ÇÕ u.©   Çó=   Çv©  ÇóàÊx"üÔ   @täÑ   S1└óà└äù   ©   ó÷ãtâ
      âýÚ_   ë\ÃD$   Ã$d@@ ÞÆ■  fÉí `@ à└t├ì    ©TA@ -TA@ â°Ã `@    ~Óâý,â°ë\$ ët$$ë|$(Ä▀   ï5TA@ à÷àà   ïXA@ à█\A@ ╗`A@ à╔ä╣   ╗TA@ ïâ°àG  â├ü¹TA@ ââ   Âïsïâ·ìå  @ ï╣  @ äÄ   â· ä*   âä┤   ëT$Ã$╠@@ ÃD$    Þ╝²  ╗TA@ ü¹TA@ s.ïS╣   ìé  @ ïÆ  @ âëT$ìT$ÞÚ²  ü¹TA@ rÊï\$ ït$$ï|$(â─,├É╗TA@ ïàÊu«ïCà└ä;   ÙíÀ  @ fà÷ÀÍyü╩    )╩╣   üÛ  @ ·ëT$ìT$Þç²  Ú   fÉÂäÊÂ‗yü╬    ë‗üÛ  @ )╩╣   ·ëT$ìT$ÞR²  Ú┌■  ü┴  @ )¤╣   8ìT$ë|$Þ1²  Ú╣■  ëD$Ã$ÿ@@ Þ╝³  ÉÉÉÉÉÉÉÉÉÉÉÉ0@ ï à└tâýfÉ ð0@ ìPï@ë0@ à└uÚâ─¾├ìt& Sâýï░%@ â¹ t$à█t Ø░%@ âÙìv u±Ã$p@ Þ‗¨  â─[├1█Ùë$`@ à╔t¾├ìt& Ã$`@    ÙöÉÉÉÉVSâýÃ$0`@ Þw
      ïH`@ âýà█t-fÉïë$Þf
      âýëãÞd
      à└uà÷ïCë4$ ðïà█uıÃ$0`@ ÞI
      âýâ─[^├âýí,`@ ët$1÷ë\$à└uë*ï\$ït$â─├ÃD$   Ã$   ÞX          à└ë├tGïD$ Ã$0`@ ëïD$$ëCÞÐ    íH`@ ëH`@ ëâýÃ$0`@ Þ╠        ë*âýï\$ït$â─├¥    Ùèìt& Sâýí,`@ ï\$ à└uâ─1└[├Ã$0`@ Þt    ïH`@ âýàÊtï9ÏuÙKì┤&    9┘të┬ïà└u±Ã$0`@ ÞU        âýâ─1└[├ïëë$Þ  Ã$0`@ Þ1     âýÙ┌ïúH`@ ëðÙ█âýïD$$â°tDrâ°t]©   â─├ìt& í,`@ à└uhí,`@ â°uÓÃ$0`@ Ã,`@     Þ  âýÙ┼fÉí,`@ à└t'Ã,`@    ©   â─├ìt& í,`@ à└tÜÞ■  ÙôÃ$0`@ Þ  âýÙ╚ÞÛ²  ÙæÉÉÉÉÉÉÉÉüý<  ë£$,  ï£$@  ë┤$0  ë╝$4  ë¼$8  Þ¬  à█à     ä└  Ç; äï  ë$Þ  âýâ° äç  ¿äo  ìl$ë\$ëÙÃD  ë,$Þe  ïâ├ìé ■■■¸Ê!ð%ÇÇÇÇtÛ®ÇÇ  ä   └â█)Ùìâ3  ë$ÞÀ  à└ëãä4  ì©,  ìCëDël$ë<$Þ¶  Ç¥,   t9ÃD$/   ì¼+  ë<$Þ¶  9ÞtÃD$\   ë<$ÞÓ  9┼t
    fÃä,  \ ë°â└ìæ ■■■¸Ð!╩üÔÇÇÇÇtÚ¸┬ÇÇ  äà    Ê╣A   âÏ)°ìû   fÃä,  * ëÎ1└¾½Ãå$      Ãå(      Ãå      fÃå    fÃå    ë*ï£$,  ï┤$0  ï╝$4  ï¼$8  ü─<  ├┴Þâ├Ú▀■  ìv ┴Ûâ└Úp   Éìt& Þ  1÷à    Ù«ÉÞ¾  1÷à    Ù×Þõ  à    ÙæÞÎ  1÷à    Ú   fÉVSâýï\$ Þ║  à█à     äı   â╗(   î│   ë\$tYïâ$  ë$Þú  à└uoïâ(  â└à└ëâ(  Ää   ìsë4$Þà  fëâ  ìâ   ët$ë$Þt  ìâ  â─[^├ìâ,  ë$Þb  â° ëâ$  t1Ãâ(     Ù½ìv Þ│  â°t*ïâ$  ë$Þ8  Ãâ$      Ãâ(      â─1└[^├Þ▀  à     Ù╔ÞÊ  à    1└Ú   ì    ì╝'    âýë\$ï\$ ët$Þñ  à█à     t-ïâ$  1÷â° t
    ë$Þ¢  ëãë$ÞK  ë*ï\$ït$â─├Þh  ¥    à    ÙÓìv Sâýï\$ ÞK  à█à     t,ïâ$  â° ë$Þf  Ãâ$      Ãâ(      â─[├Þ  à    Ù¯Sâï\$Þ¹  à█à     tïâ(  â[├Þß  à    ©    ÙÚì    ì┐    VSâýï\$ ït$$Þ  à█à     tqâ■ |_t-ë$ÞE   Éìt& Ùë$Þã²  à└t9;│(  ýâ─[^├ìt& ïâ$  â° ë$ÞØ  Ãâ$      Ãâ(      â─[^├ìv ÞC  à    ÙÛÞ6  à    Ù¦ÉÉÉÉÉÉUëÕWVSâý,ï]ÃD$    Ã$   ÞH  à└ëãt
    ë$Þ¯  ëãÃD$°@@ Ã$   Þ$  à█tÇ; usÃD    ÃD$■@@ Ã$    Þ  ìXë\$íP`@ ë$Þ¹  úP`@ ë\ÃD$■@@ ë$Þ┌  ët$Ã$   Þ┬дì?ëEõëTë\$ë$Þy  ïMõâ°ëEÓvfâ|?:uâ┴ïEÓïUõfÃB  Àfà└äÔ   ë¤fâ°\fâ°/ë╩u(Àë╩fâ°\uâ┬Àfâ°\t¶fâ°/t¯fà└äú   ëÎÀBìJfà└u¥fâ? ࣠  ÃD    ÃD$·@@ Ã$    ÞÐ  ìxë|$íP`@ ë$Þ┼  úP`@ ë├ë|ÃD$·@@ ë$Þó  ët$Ã$   Þè  ë4$Þ  ïe▄ìe¶ëÏ[^_]├âÛÀfâ°/t
    fâ°\àd   fà  9·wßÚV   ïe▄Ú.■  ïEÓëDïUõë$ëT$Þ;  â° tã fà  ÃD    ïUõÃ$    ëT$Þ  â° äg   ├Ú`   ÉÉ %pq@ ÉÉ %áq@ ÉÉ %xq@ ÉÉ %tq@ ÉÉ %Çq@ ÉÉ %Þq@ ÉÉ %³q@ ÉÉ %©q@ ÉÉ %╝q@ ÉÉ %╚q@ ÉÉ %Óq@ ÉÉ %Ïq@ ÉÉ %ýq@ ÉÉ %¼q@ ÉÉ %Èq@ ÉÉ % r@ ÉÉ %┤q@ ÉÉ %└q@ ÉÉ %─q@ ÉÉ %r@ ÉÉ %ñq@ ÉÉ %ðq@ ÉÉ %░q@ ÉÉ %äq@ ÉÉ %öq@ ÉÉ %°q@ ÉÉ %Éq@ ÉÉ %¶q@ ÉÉ %*q@ ÉÉ %îq@ ÉÉ %êq@ ÉÉ %õq@ ÉÉ r@ ÉÉ %▄q@ ÉÉ %╠q@ ÉÉ %Tq@ ÉÉ %8q@ ÉÉ %Dq@ ÉÉ %Hq@ ÉÉ %`q@ ÉÉ %\q@ ÉÉ %4q@ ÉÉ %Xq@ ÉÉ %@q@ ÉÉ %Pq@ ÉÉ %0q@ ÉÉ %Lq@ ÉÉ %<q@ ÉÉQP=   ìL$rüÚ   â   -   =   wÙ)┴â         XY├ÉÉ %hq@ ÉÉfÉfÉfÉfÉfÉfÉUëÕWVSâõ*âý0Þ¤¶  Ã$$@@ ì|$/Þ ÷  ëD$ïD$ë$Þ °  à└ä  ì┤&    âÃD$&@@ ë$ëD$Þ■  à└ä  ïEï ë$Þd¹  ÃD$0@@ ë$Þ³²  ït$ë├Ùâãë\$ÃD   ÃD$   ë<$Þ¦²  à└u¦ë4$ët$Þı²  ë$ëãÞ˲  Ù+É¥D$/ë$Þ╦²  ¥D$/ëtÃD$3@@ ë4$ëD$Þ²  ë\$ÃD   ÃD$   ë<$Þz²  à└uÂë4$Þû²  Ã$8@@ ëD$ÞIJ  Ã$B@@ Þè²  ë$Þè²  ïD$ë$Þå²  ïD$ë$ÞÔ¸  à└àÛ■  ìe¶[^_]├fÉïD$ÃD$+@@ ë$Þ³³  à└àÒ■  Ù©ÉÉUëÕâýÞEÝ  Ã$0@ ÞÝ  ╔├ÉÉÉÉÉÉÉ    É%@                                                                              @  └%@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     libgcj-13.dll _Jv_RegisterClasses   . .exe .EXE rb %s%c
     
    i = %d
     pause É@ Mingw runtime failure:
       VirtualQuery failed for %d bytes at address %p      Unknown pseudo relocation protocol version %d.
         Unknown pseudo relocation bit size %d.
         /   .     GCC: (tdm-1) 4.9.2  GCC: (tdm-1) 4.9.2  GCC: (tdm-1) 4.9.2  GCC: (tdm-1) 4.9.2                                                                                                                                                                                     zR ê  (      Ó┐     AâC@b4C@L<C@È<       H   ─└  c   AâC0E
    A├F   l   ┬      C    Ç   ┬      C    ö   (┬            ¿   $┬                zR ê        h┬  C    C U
    H`   8   <   ÿ┬  å    AåAâC d
    F├AãCk
    F├AãC     x   ý┬                zR ê        ð┬  ▄    ]âñ├Bâ       zR ê        x├                zR ê        \├  R    AâC0   <   8   á├     C`DâYåFçFàETC`t
    ┼Ãã├HiPC`RPC`   $   x   p─  È   l0OâåçÒ
    Ãã├B          zR ê        ã  ,    N\     4   (ã  I    AâC m
    A├A    X   Tã                zR ê  8      Hã  `    AåAâC LI PC jC CA├Aã 4   X   lã  î    C IåFâQ
    ã├AsQ LE K
    ├ãA  <   É   ─ã  É    AâC P
    C├ALI nC C
    C├AZC  (   ð   Ã  ÿ    C X
    EiC _
    E\C        zR ê  0      pà     F└Gâ\åçàd╝C└a
    ┼Ãã├A 8   P   L╔     AåAâC Ç
    A├AãAW
    C├AãA    î    ╩  ]    C DâHå{
    ã├A      ░   \╩  P    AâC }
    A├A     È   ê╩  4    AâC\
    A├A 8   °   ñ╩  Ü    AåAâC D
    A├AãEj
    Fçåâ▒        zR ê  <      *╩  n   AàB
    ├AãAÃA┼C/
    ├AãAÃA┼A                                                                                                                                                                                                                         Pp          u  0q  êp          u  hq  Ép          └u  pq                      r  (r  @r  Nr  dr  tr  êr  Ür  Âr  ╬r  ýr  ·r  s      s      &s  6s  Fs  Ts  fs  ps  zs  ês  ûs  ós  «s  Âs  └s  ╠s  Ès  Ìs  µs  *s  ·s  t
    t  t  t  &t  2t  <t  Ft  Pt  Zt  dt  pt  zt  ät  Ät  ÿt  ót  ¼t  Ât  ┬t      r  (r  @r  Nr  dr  tr  êr  Ür  Âr  ╬r  ýr  ·r  s      s      &s  6s  Fs  Ts  fs  ps  zs  ês  ûs  ós  «s  Âs  └s  ╠s  Ès  Ìs  µs  *s  ·s  t
    t  t  t  &t  2t  <t  Ft  Pt  Zt  dt  pt  zt  ät  Ät  ÿt  ót  ¼t  Ât  ┬t      ¤ DeleteCriticalSection ý EnterCriticalSection  ExitProcess ßGetFileAttributesA  ■GetLastError  GetModuleHandleA  AGetProcAddress  ÌInitializeCriticalSection .LeaveCriticalSection  tSetUnhandledExceptionFilter òTlsGetValue ¢VirtualProtect  ┐VirtualQuery  P _strdup 7 __getmainargs M __p__environ  O __p__fmode  c __set_app_type  ô _cexit  Â _errno  ═ _findclose  ╬ _findfirst  Ð _findnext õ _fullpath
    _iob  _onexit ¬_setmode  Gabort Natexit  Patoi  Scalloc  _fclose  jfopen pfread qfree  yfwrite  ñmalloc  ªmbstowcs  ¬memcpy  ▒printf  │putchar ║realloc ¢rewind  └setlocale ┬signal  ┼sprintf ═strcpy  Ðstrlen  Ístrrchr Ïstrstr  Ósystem  ývfprintf  wcstombs     p   p   p   p   p   p   p   p   p   p   p   p   p  KERNEL32.dll    p  msvcrt.dll  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  (p  msvcrt.dll                                                          É@ @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         É@ É@ `@ Ç@

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Un exécutable est constitué d'une succession d'octets.
    Une chaîne de caractères est une succession de caractères.
    On ne peut pas dire "un caractère égale un octet". Par exemple l'octet 0x00 deviendrait le caractère '\0' qui est le terminateur de chaîne, mais une chaîne ne peux avoir qu'un unique terminateur!

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2016
    Messages : 24
    Par défaut
    Effectivement merci pour ton aide ! Du coup quel type serait apte à recevoir la copie d’un EXE en ne transformant pas 0 en \0 ? car au final il n’y as à que sa dans un exe (+ les 0 et 1 et de l’hexadecimal)

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Que cherches-tu à faire ?
    Tu parles "d'agir sur l'exe" : souhaites-tu modifier en direct le comportement de l'exe en cours d'exécution ? T'imagines-tu voir des "choses qui bougent" dans le fichier ".exe" lorsque le programme est en cours de fonctionnement ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2016
    Messages : 24
    Par défaut
    Agir était un exemple en fait le but final serait de copier également le contenu d'un autre .exe pour comparer les 2 contenus et voir si ils sont identiques.
    Non je veux voir le contenu de l’exécutable : il est composé de binaire et j'aimerais récupérer cela.

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2016
    Messages : 24
    Par défaut
    Voici la dernière "mise à jour" du code cela ne marche toujours pas... La console affiche MZE (avec un accent sur le E) :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <libgen.h>
    #include <string.h>
    #include <dirent.h>
    #include <stdbool.h>
     
    int main(int argc, char *argv[]) {
     
        char *name = basename(argv[0]) ; //Récupère le nom du fichier
     
        FILE *fd ;
     
        fd = fopen(name, "rb");
     
        int longueur = 0 ;
     
        char caractere ;
     
        while (fread(&caractere, 1, 1, fd) == 1) longueur++ ;
     
        if (ferror(fd)) {
     
            perror("fread") ;
            exit(EXIT_FAILURE);
     
        }
     
        char *copyActualFile = malloc (sizeof(char) * longueur) ;
     
        rewind(fd) ;
     
        caractere = 0 ;
     
        int i = 0 ;
     
        for (i = 0 ; fread(&caractere, 1, 1, fd) == 1 ; i++) {
     
            copyActualFile[i] = caractere ;
     
        }
     
        printf("%s", copyActualFile) ;
     
        system ("pause") ;
     
        //Fermeture
     
        free(copyActualFile) ;
     
        fclose(fd) ;
     
        return EXIT_SUCCESS ;
     
    }

  7. #7
    Inactif  
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Décembre 2017
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte matériel

    Informations forums :
    Inscription : Décembre 2017
    Messages : 155
    Par défaut
    Déjà sizeof (char) vaut 1, donc... donc le *sizeof(char) est juste une distraction.

    Pourquoi basename?

    Pourquoi argv[0]?

    C'est un exercice scolaire?

    Citation Envoyé par Jupiter41 Voir le message
    Agir était un exemple en fait le but final serait de copier également le contenu d'un autre .exe pour comparer les 2 contenus et voir si ils sont identiques.
    Non je veux voir le contenu de l’exécutable : il est composé de binaire et j'aimerais récupérer cela.
    Tu veux le "voir" sous quelle forme? Binaire? (suite de 0 et 1) Hexadécimal? Chaque octet en décimal?

    Afficher les caractères ASCII comme tels?

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 7
    Dernier message: 17/09/2005, 23h38
  3. Récuperer un nombre dans une chaine de caractère
    Par ColonelHati dans le forum C
    Réponses: 4
    Dernier message: 27/04/2005, 14h50
  4. [VB.NET] Recherche dans une chaine de caractères
    Par Pleymo dans le forum Windows Forms
    Réponses: 12
    Dernier message: 09/04/2005, 10h25
  5. [C#] Une variable dans une chaine de caractères...
    Par GlorfindelHebril dans le forum Windows Forms
    Réponses: 9
    Dernier message: 31/03/2005, 14h30

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