Lecture et écriture d'un fichier .EXE

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Lecture et écriture d'un fichier .EXE

Message par jambon »

Bonjour je me demandais si il était possible et si il existait un exemple pour lire le contenu en byte d'un fichier .EXE et d'écrire ce contenu en sortie dans un nouveau .EXE ?

Je pense que avec WriteData et ReadData sa peut être possible mais ?
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Lecture et écriture d'un fichier .EXE

Message par G-Rom »

Bien sur , tu as résumé les 2 fonctions qu'il te faut.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Lecture et écriture d'un fichier .EXE

Message par falsam »

Sujet presque traité dans deux autres topics. Un code exemple sans oublié la règle des 33% minimum (Merci Denis & Nico)

Code : Tout sélectionner

Enumeration 
  #FileName
EndEnumeration

FileName.s = "TonFichier.exe"

;Lecture et mémorisation
If ReadFile(#FileName, FileName)
  Length = Lof(#FileName)
  
  *MemoryID = AllocateMemory(Length)
  If *MemoryID
    ReadData(#FileName, *MemoryID, Length)
    *OutputBuffer=AllocateMemory(MemorySize(*MemoryID) * 1.35)
    Base64Encoder(*MemoryID, MemorySize(*MemoryID), *OutputBuffer, MemorySize(*OutputBuffer)) 
  EndIf
  CloseFile(#FileName)
EndIf

;Ecriture
If CreateFile(#FileName, "test.exe") 
  WriteData(#FileName, *MemoryID, Length)
  CloseFile(#FileName)
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Lecture et écriture d'un fichier .EXE

Message par Patrick88 »

c'est quoi cette règle des 33% ?

pat
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Lecture et écriture d'un fichier .EXE

Message par falsam »

Patrick88 a écrit :c'est quoi cette règle des 33% ?
Il y a quelques jours j'ai eu pas mal de souci de crash aléatoire dans un code lors de l’exécution de Base64Decoder() conjointement avec AllocateMemory().

L'aide consacré à Base64Decoder() recommande de faire un tampon légèrement plus grand, par exemple 30%, pour éviter les débordements.

Quand je sais que je vais utiliser Base64Decoder(), l'alloue systématiquement 35% de plus à la zone mémoire contigüe.

Code : Tout sélectionner

*OutputBuffer=AllocateMemory(MemorySize(*MemoryID) * 1.35)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Lecture et écriture d'un fichier .EXE

Message par G-Rom »

Tu n'est pas obligé de passé par le base64encoder()

Code : Tout sélectionner

FileName.s = "01.exe"

File = ReadFile(#PB_Any,FileName)
*buffer = AllocateMemory(Lof(File))
ReadData(File,*buffer,Lof(File))
CloseFile(File)

File = CreateFile(#PB_Any,"out.exe")
WriteData(File,*buffer,MemorySize(*buffer))
Répondre