Page 1 sur 1
Extraire un fichier binaire de la datasection
Publié : mar. 28/nov./2017 12:06
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() ?
Re: Extraire un fichier binaire de la datasection
Publié : mar. 28/nov./2017 13:36
par Ar-S
CatchSound ?
Re: Extraire un fichier binaire de la datasection
Publié : mar. 28/nov./2017 14:42
par jmg49
bien tenté !
mais non ....
merci quand même , j'avais pensé à détourner catchimage mais non plus
Re: Extraire un fichier binaire de la datasection
Publié : mar. 28/nov./2017 16:53
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 ?
Re: Extraire un fichier binaire de la datasection
Publié : mar. 28/nov./2017 17:01
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
Re: Extraire un fichier binaire de la datasection
Publié : mar. 28/nov./2017 18:47
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
Re: Extraire un fichier binaire de la datasection
Publié : mer. 29/nov./2017 8:47
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