Extraire un fichier binaire de la datasection

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Extraire un fichier binaire de la datasection

Message par jmg49 »

bonjour,

J'essaie d'extraire un fichier de la datasection et mettre le contenu du fichier dans un buffer tout simplement,

readdata , readbyte s'appliquent à un fichier ouvert en lecture,

Code : Tout sélectionner

Structure file_info
      
length.i       

EndStructure


Procedure DataSectionLoad(fId, fStart, fEnd)   
  Protected Fileinfo.file_info
 
  Fileinfo\Length = fEnd - fStart 
  
EndProcedure


*MemoryID = AllocateMemory(@Length)
*MemoryID = DataSectionLoad(0, ?file, ?endfile)



Debug *MemoryID ;  => rien

DataSection
  file:
  IncludeBinary "request.exe"
  endfile:
EndDataSection

je ne sais pas en clair comment claquer le contenu de request.exe dans *MemoryID ... il faut du pokel() ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Extraire un fichier binaire de la datasection

Message par Ar-S »

CatchSound ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: Extraire un fichier binaire de la datasection

Message par jmg49 »

bien tenté !

mais non ....

Code : Tout sélectionner


*MemoryID= CatchSound(1, ?file)


Debug *MemoryID ; rien 

merci quand même , j'avais pensé à détourner catchimage mais non plus
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Extraire un fichier binaire de la datasection

Message par falsam »

:!: Il est question de son et je vois un exe dans la datasection. Tu souhaites exécuter un exe se trouvant en datasection ?
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%
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: Extraire un fichier binaire de la datasection

Message par jmg49 »

Le but est de récupérer quelque soit son format le fichier en data section dans un buffer pour après effectuer d'autres actions, (dans le cas d'un exe l'exécuter depuis la mémoire va nécessiter un RunPE) , appliquer un chiffrement, l'écrire sur le disque ...etc
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Extraire un fichier binaire de la datasection

Message par falsam »

■ Copier le fichier se trouvant en data section en mémoire

Exemple avec une image

Code : Tout sélectionner

EnableExplicit

Define Size = ?image_end - ?image
Define *Buffer = AllocateMemory(Size)
Define *Pointer = ?image, n

For n = 0 To Size  
  PokeB(*Buffer + n, PeekB(*Pointer + n)) 
Next

;Verification de l'image mémorisé dans *Buffer
UsePNGImageDecoder()
CatchImage(0, *Buffer)
ShowLibraryViewer("Image", 0)
CallDebugger

End

DataSection
  image:
  IncludeBinary #PB_Compiler_Home + "Examples\3D\Data\Textures\caisse.png"
  image_end:  
EndDataSection
A partir de la tu peux copier le contenu de ce buffer dans un fichier avec la fonction WriteData()
Result = WriteData(#File, *MemoryBuffer, Length)


■ On peut aussi copier directement le contenu du fichier se trouvant en datasection dans un fichier.

Code : Tout sélectionner

EnableExplicit

Define FF

FF = CreateFile(#PB_Any, "caisse.png")
If FF
  WriteData(FF, ?image, ?image_end - ?image)
  CloseFile(FF)
EndIf

End

DataSection
  image:
  IncludeBinary #PB_Compiler_Home + "Examples\3D\Data\Textures\caisse.png"
  image_end:  
EndDataSection
■ Le sujet RunPE a déja été abordé sur ce lien que tu connais http://www.purebasic.fr/french/viewtopi ... 39#p165839
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%
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: Extraire un fichier binaire de la datasection

Message par jmg49 »

Merci falsam , c'est exactement ça,

je me doutais qu'il y avait du poke là dedans mais je ne savais pas comment l'implémenter ,

je te remercie encore
Répondre