Ajouter une ligne a la fin d un executable

Signaler
Messages postés
230
Date d'inscription
vendredi 9 mai 2003
Statut
Membre
Dernière intervention
16 juillet 2005
-
Messages postés
85
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
17 décembre 2005
-
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

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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.
<
Messages postés
85
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
17 décembre 2005
1
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...