iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 2008
-
1 juin 2006 à 22:17
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 2008
-
3 juin 2006 à 12:13
Bonjour,
j'aimerais pouvoir lire entierement tout le code binaire d'un fichier exe et le reécrire dans un autre fichier ( le cloner ou le generer ) Seulement j'ai quelques questions :
1) Pourquoi il existe plusieurs methodes pour lire un fichier binaire dans un BinaryReader ?
2) Laquel utiliser ? read ? readboolean ?
3) Comment generer un fichier exe comme j'ai dit precedement ?
4) Comment lire entierement le code binaire ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juin 2006 à 11:50
Salut,
1 ) BinaryReader c'est pour lire des valeurs spécifiques dans une fichier binaire.. par exemple tu sauvegarde la taille de ta forme avec BinaryWriter et tu peux la relire avec BinaryReader.ReadInt32, vu qu'elle est stockée en Int32.
2 ) Aucune dans ton cas.
3 ) Pour une simple copie, pas besoin d'utiliser un BinaryReader. suffit d'un Filestream pour lire dans la source et un Filestream pour écrire dans la destination, tu remarqueras que j'utilise une boucle et un buffer de 4k, on voit trop souvent des codes qui lisent l'integrale du fichier avant de l'écrire.. imagine si tu dois lire un fichier de 4 Go en mémoire avant de le copier.. bonjour la saturation de la mémoire.
public void Copy( string srcPath, string dstPath )
{
using ( FileStream srcStream = new FileStream( srcPath, FileMode.Open, FileAccess.Read ) )
{
using ( FileStream dstStream = new FileStream( dstPath, FileMode.Create, FileAccess.Write ) )
{
int cnt = 0;
byte[ ] buffer = new byte[ 4096 ];
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juin 2006 à 19:58
Tu as dit que tu voulais "le réecrire", "le cloner". c'est pour ça que je t'ai donné cet exemple pour le copier.
Je ne vois pas ce que ça veut dire "stocker son code binaire".. à la rigueur tu peux le lire avec un Filestream et le stocker dans un tableau de bytes, si c'est une image tu peux acceder directement aux pixels via LockBits/UnLockBits.
Tu dis "Générer un fichier exe ou une image" la non plus je vois trop.. les formats images jpg, png, gif etc.. ils n'ont pas la même structure binaire, faut connaitre la structure de chacun, le header, le mode compression etc..pour les fichier exe faut se référer au format COFF.
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 20084 2 juin 2006 à 20:16
J'aimerais pouvoir faire un exe qui contienne le code binaire d'un autre exe pour le générer à la demande du visiteur.
Un autre truc : j'ai lu des docs sur les header ( par exemple wav ) et j'aimerais pouvoir le recuperer comment faire pour recuperer un header ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juin 2006 à 21:07
"J'aimerais pouvoir faire un exe qui contienne le code binaire d'un autre exe pour le générer à la demande du visiteur."
Mais quelle est la différence avec une copie ?
"Un autre truc : j'ai lu des docs sur les header ( par exemple wav ) et j'aimerais pouvoir le recuperer comment faire pour recuperer un header ?"
Si tu connais la structure d'un header WAV tu peux créer une structure CSharp identique au header et tu la remplit avec un BinaryReader par exemple. Le header te permet de savoir comment est formaté le reste du fichier.
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 20084 2 juin 2006 à 21:27
La diference avec la copie c'est que le fichier n'existe pas sur le disque de l'utilisateur c'est lui qui demande à le creer et donc il n'est pas copié il est generé
Oui mais comment le recuperer le header, comment créer une structure csharp ... ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 3 juin 2006 à 10:23
C'est sur ce point qu'on se comprend pas bien.. Tout dépend de sous quelle forme tu as le code binaire, un tableau de bytes ? Dans ce cas là il te suffit de créer un fichier sur le disque avec l'extension exe et d'écrire le code dedans avec un Filestream.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 3 juin 2006 à 11:35
On tourne en rond
"Sinon si j'ai le code binaire complet du fichier exe à generer c'est dur à faire ?"
C'est pour ça que je te demande sous quelle forme tu as le code binaire ??
Alors soit tu sais générer des fichiers EXE à partir de rien, c'est à dire créer, un fichier au Format COFF.. Soit tu pars d'un EXE qui existe déja et dans ce cas je te renvoi à mon premier message qui permettait de copier le contenu d'un EXE dans un tableau de byte de 4ko.
Je veux bien t'aider mais j'ai l'impression qu'on ne se comprend pas.