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:
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:
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:
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 É@ @@ É@ É@ `@ Ç@ |