UPX - Compressez vos exécutables
Publié : ven. 04/mars/2011 10:11
UPX (sigle de l'anglais Ultimate Packer for eXecutables) est un logiciel libre en mode console permettant de compresser des fichiers exécutables.
Ce programme est téléchargeable sur ce site
Le code ci-dessous permet de choisir votre fichier exécutable de le décompresser et de voir le résultat.
Bien entendu le code ainsi que le programme upx.exe doivent se trouver dans le même dossier.
Ce programme est téléchargeable sur ce site
Le code ci-dessous permet de choisir votre fichier exécutable de le décompresser et de voir le résultat.
Bien entendu le code ainsi que le programme upx.exe doivent se trouver dans le même dossier.
Code : Tout sélectionner
Enumeration
#MainForm
#File
#SelectFile
#Compress
#Stdout
EndEnumeration
Global File$
Procedure MainFormOpen()
OpenWindow(#MainForm,0,0,500,200,"UPX - Compression d'un fichier executable",#PB_Window_ScreenCentered |#PB_Window_SizeGadget | #PB_Window_SystemMenu)
TextGadget(#PB_Any,20,20,150,20,"Exécutable à compresser")
StringGadget(#File,150,20,240,20,"")
ButtonGadget(#SelectFile,400,20,20,20,".?.")
ButtonGadget(#Compress,425,20,60,20,"Compress")
DisableGadget(#Compress, #True)
TextGadget(#Stdout,20,60,465,120,"")
SetGadgetColor(#Stdout, #PB_Gadget_BackColor,RGB(247, 250, 167))
EndProcedure
Procedure ControlData()
If LTrim(RTrim(GetGadgetText(#File)))=""
DisableGadget(#Compress, #True)
Else
DisableGadget(#Compress, #False)
EndIf
EndProcedure
Procedure SelectFile()
File$ = OpenFileRequester("Choisissez un fichier à charger", "", "Executable (*.exe)|*.exe", 0)
If File$<>""
SetGadgetText(#File,File$)
EndIf
EndProcedure
Procedure UPXCompress()
Protected Buffer.s, Stdout.s, Compress.i
Buffer="" : Stdout=""
;Taux de compression 9 (Echelle de 1 à 9)
Compress=RunProgram("upx","-9 "+Chr(34)+File$+Chr(34),"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide)
Repeat
buffer=ReadProgramString(Compress)
If RTrim(LTrim(Buffer))<>""
Stdout=Stdout+Buffer+Chr(13)
EndIf
Until ProgramRunning(compress)=0
SetGadgetText(#Stdout, Stdout)
EndProcedure
MainFormOpen()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #SelectFile
SelectFile()
ControlData()
Case #File
ControlData()
Case #Compress
UPXCompress()
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver