Ajouter une ligne a la fin d un executable

MoveX Messages postés 230 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 16 juillet 2005 - 15 mai 2005 à 10:04
Niki2001 Messages postés 85 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 17 décembre 2005 - 15 mai 2005 à 20:48
salut,
vous avez des idees sur la maniere dont on rajoute une ligne a la fin d un executable?
j ai pense a utiliser tfilestream seulement, je ne vois pas comment utiliser le filestream.write...
et pis surtout, comment se rendre a la fin.

j ai reussi a faire quelques trucs mais apres, avec le notepad, je me suis apercu que ca ne fonctionnait pas correctement : ce netait pas les bons caracteres qui etaient ecrits...

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
15 mai 2005 à 10:19
Les fichiers exécutables ont une structure précisément définie (PE : Portable Executable) et n'ont rien à voir avec celle d'un fichier texte.
De plus, si tu veux déclencher les antivirus en modifiant un exe, alors vas-y mais ne soit pas étonné que ton exe ne fonctionne plus après ce genre de modifications.

Pour info : pour se rendre à la fin d'un TStream, il faut rechercher le dernier octet avec la méthode Seek :
Stream.Seek(0, soFromEnd);

Pour utiliser la méthode Write, il faut disposer d'un tampon mémoire. Exemple:
<CODE>var
  Stream: TFileStream;
  Buffer: array [0..255] of byte;
begin
  Stream := TFileStream.create('NomDuFichier', fmOpenWrite);
   
  FillChar(Buffer, SizeOf(Buffer), 0);
  Stream.Write(Buffer, SizeOf(Buffer));

</CODE>Evidemment, l'exemple donné ici n'est pas très réaliste puisqu'on remplit un buffer de 0 qu'on ajoute à la fin du stream.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<
0
Niki2001 Messages postés 85 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 17 décembre 2005 1
15 mai 2005 à 20:48
En effet tu peux être sûr que ton exe sera foutu (pas définitivement, heureusement). Mais si tu veux écrire, utilises plutôt WriteBuffer avec SizeOf:
Exemple:
var
i: integer;
begin
...
Stream.WriteBuffer(i, SizeOf(i));
end;

SizeOf, si tu ne connaissais pas, renvoie la taille en octet de la variable ou du type que tu lui transmet.
Sur ce...
0
Rejoignez-nous