Bidouillage de fichiers.
2 participants
Page 1 sur 1
Bidouillage de fichiers.
Bonjours a tous.
Voila j'ai un soucis : j'ai codé un petit programme qui permet de lire un exécutable et d'écrire une copie de cet exécutable. Ce programme marche convenablement.
Mais voila j'ai voulu essayer en faisant passer ce que je lisais dans un autre fichier avant de le réécrire dans le nouvel exécutable. Mais le nouvel exécutable ne veut pas s'exécuter...
Voila le code :
Excusez moi pour la qualité du code.
Voila j'ai un soucis : j'ai codé un petit programme qui permet de lire un exécutable et d'écrire une copie de cet exécutable. Ce programme marche convenablement.
Mais voila j'ai voulu essayer en faisant passer ce que je lisais dans un autre fichier avant de le réécrire dans le nouvel exécutable. Mais le nouvel exécutable ne veut pas s'exécuter...
Voila le code :
- Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE* base = NULL;
FILE* text = NULL;
FILE* exec = NULL;
int c, d;
base = fopen("Base.exe", "rb");//Ouverture en lecture seule de helloWord.exe qui est un programme qui affiche helloWord a l'ecran
if (base != NULL)//Si l'ouverture de helloWord a fonctionnée
{
printf("Ouverture de Base.exe\n");
text = fopen("text", "wb+");//Ouverture et creation de test.exe
getchar();
if (text != NULL)//Si l'ouverture de test.exe a fonctionnée
{
printf("Ouverture de text.txt\n");
getchar();
exec = fopen("exec.exe", "wb");
if (exec != NULL)
{
printf("Ouverture de exec.exe\n");
getchar();
while ((c = getc(base)) != EOF)//Tant qu'on est pas arrive a la fin du fichier
{
if (putc(c, text)== EOF) printf("\nEchec de l'ecriture dans text.txt");//On ecrit ce caractere dans text.txt
if((c = getc(text)) == EOF) printf("\nEchec de la lecture dans text.");//On lit le caractère qu'on vient d'ecrire dans text.txt
if (putc(c, exec)== EOF) printf("\nEchec de l'ecriture dans exec.exe");//On ecrit ce caractere dans exec.exe
}
fclose(exec);
}
else printf("Echec de l'ouverture de exec.exe");
fclose(text);//Fermeture de test.exe
}
else printf("Echec de l'ouverture de text.txt");
fclose(base);//Fermeture de helloWord.exe
}
else printf("Echec de l'ouverture de Base.exe");
printf("Fin du programme.\n");
getchar();
return 0;
}
Excusez moi pour la qualité du code.
frager50- Bavard
- Messages : 17
Date d'inscription : 25/03/2009
Re: Bidouillage de fichiers.
Pour écrire, c'est pas "wb+", mais "wb".
Le fichier intermédiaire doit être traité comme un fichier binaire. on ne doit utiliser que "rb" et "wb" dans ce programme.
Ceci fonctionne. Il n'y a aucune raison de faire plus compliqué. On ne peut à la fois lire et écrire dans un fichier ...
Le fichier intermédiaire doit être traité comme un fichier binaire. on ne doit utiliser que "rb" et "wb" dans ce programme.
Ceci fonctionne. Il n'y a aucune raison de faire plus compliqué. On ne peut à la fois lire et écrire dans un fichier ...
- Code:
#include <stdio.h>
#include <stdlib.h>
int copie (char const *dest, char const *src)
{
int err = 0;
FILE *fsrc = fopen (src, "rb"); /* Ouverture en lecture seule du fichier
source qui est un programme qui affiche
helloWord a l'ecran */
printf ("Ouverture de '%s'\n", src);
if (fsrc != NULL)
{
FILE *fdest = fopen (dest, "wb"); /* Ouverture et creation de test.exe */
printf ("Copie dans '%s'\n", dest);
if (fdest != NULL) /* Si l'ouverture de test.exe a fonctionnée */
{
int c;
/* Tant qu'on est pas arrive a la fin du fichier */
while (!err && (c = getc (fsrc)) != EOF)
{
/* On ecrit ce caractere dans exec.exe */
if (putc (c, fdest) == EOF)
{
printf ("\nEchec de l'ecriture dans '%s'", dest);
err = 1;
}
}
fclose (fdest);
}
else
{
printf ("Echec de l'ouverture de '%s'", dest);
err = 1;
}
fclose (fsrc); /* Fermeture de test.exe */
}
else
{
printf ("Echec de l'ouverture de '%s'", src);
err = 1;
}
return err;
}
int main (void)
{
system ("hello.exe");
{
int err = copie ("newhello.exe", "hello.exe");
if (!err)
{
system ("newhello.exe");
}
}
printf ("Fin du programme.\n");
return 0;
}
- Code:
hello world
Ouverture de 'hello.exe'
Copie dans 'newhello.exe'
hello world
Fin du programme.
Process returned 0 (0x0) execution time : 0.128 s
Press any key to continue.
Re: Bidouillage de fichiers.
J'ai déjà fait un code qui copie un exécutable dans un autre et le nouvel exécutable s'exécute. Mais je ne comprends pas que cela ne fonctionne pas en passant par un autre fichier ?!
Je pense qu'il faut ouvrir le fichier 'intermédiaire" en lecture-écriture.
Je pense qu'il faut ouvrir le fichier 'intermédiaire" en lecture-écriture.
frager50- Bavard
- Messages : 17
Date d'inscription : 25/03/2009
Re: Bidouillage de fichiers.
Je ne vois pas bien à quoi cert ce fichier intermédiaire. Tu veux faire ça ?
- Code:
int main (void)
{
system ("hello.exe");
{
int err = copie ("tmp.exe", "hello.exe");
if (!err)
{
system ("tmp.exe");
err = copie ("newhello.exe", "tmp.exe");
if (!err)
{
system ("newhello.exe");
}
}
}
printf ("Fin du programme.\n");
return 0;
}
Re: Bidouillage de fichiers.
En fait je ne cherche pas spécialement a faire quelque chose, je fais juste des tests comme ça.
C'est exactement cela que je veux faire !
Est-il possible de copier un caractère dans le fichier puis de le lire et de le recopier et ainsi de suite.... ?
C'est exactement cela que je veux faire !
Est-il possible de copier un caractère dans le fichier puis de le lire et de le recopier et ainsi de suite.... ?
- Code:
début :
Jusqu'à la fin de a.exe :
-lire caractère dans a.exe.
-écrire ce caractère dans b.
-lire ce caractère dans b.
-l'écrire dans c.exe.
Fin.
frager50- Bavard
- Messages : 17
Date d'inscription : 25/03/2009
Re: Bidouillage de fichiers.
frager50 a écrit:En fait je ne cherche pas spécialement a faire quelque chose, je fais juste des tests comme ça.
Non. Enfin si, mais chaque lecture et chaque écriture provoque une avance. Si tu arrives à t'y retrouver, bravo. C'est en général le meilleur moyen de détruire ses données. On ne fait pas ce genre de manip dans la réalité.C'est exactement cela que je veux faire !
Est-il possible de copier un caractère dans le fichier puis de le lire et de le recopier et ainsi de suite.... ?
Je vois, mais ça n'a aucun intérêt.
- Code:
début :
Jusqu'à la fin de a.exe :
-lire caractère dans a.exe.
-écrire ce caractère dans b.
-lire ce caractère dans b.
-l'écrire dans c.exe.
Fin.
Re: Bidouillage de fichiers.
Je suis d'accord !
Bon je vais essayer je jouer avec le curseur !
Merci !
Bon je vais essayer je jouer avec le curseur !
Merci !
frager50- Bavard
- Messages : 17
Date d'inscription : 25/03/2009
Sujets similaires
» Protocole de transfert de fichiers en TCP/IP
» Fichiers & structures & String - Fonction de recherche
» Fichiers & structures & String - Fonction de recherche
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|