Page 1 sur 1

UPX - Compressez vos exécutables

Publié : ven. 04/mars/2011 10:11
par falsam
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.

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

Re: UPX - Compressez vos exécutables

Publié : ven. 04/mars/2011 10:59
par Backup
Merci pour le code :)

a savoir ça fait super longtemps qu'il existe une Librairie qui gere UPX ;)

ps : heu il s'agit d'un Shell en fait (ma mémoire me joue des tours):
site de Gnozal

http://forums.purebasic.com/english/vie ... 8720a38d45

Re: UPX - Compressez vos exécutables

Publié : ven. 04/mars/2011 12:01
par Ar-S
Il y a des années que je n'ai pas utilisé UPX, le soucis de ce dernier est que, si je me souviens bien", l'exe compressé sera détecté comme malsain par quelques antivirus.