[..] Extraire source .exe

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

[..] Extraire source .exe

#1

Message par Julien »

Bonjour,

Est il possible d'extraire une source de type .exe ajoutée lors de la compilation d'un script .au3 avec la commande :

Code : Tout sélectionner

#AutoIt3Wrapper_Res_File_Add=c:\fichier.exe

D'avance merci.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Extraire source .exe

#2

Message par Tlem »

Il existe plusieurs outils pour ce genre de chose, mais ResHacker est l'un des plus connu.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Extraire source .exe

#3

Message par Julien »

Effectivement je viens de regarder la documentation et j'arrive à extraire une source d'un fichier .dll de test que j'ai créée avec votre utilitaire (de tête je crois que c'est le votre).

Je n'ai pas réussi à extraire un fichier de mon .exe avec la commande :

Code : Tout sélectionner

Run('"' & $DirTemp & 'ResHacker.exe" -extract ' & '"' & @ScriptFullPath & '", fichier.rc, RCDATA, NOM_EXE,', "", @SW_HIDE)
en fait il m'exporte bien quelques chose mais inutilisable, en effet il m'indique que le .exe de base est compressé ce qui doit rendre l'extract inutile. J'ai essayé en changeant le taux de compression mais rien n'y fait.

Je n'ai pas réussi à affecté un nom à mon fichier ajouté avec :

Code : Tout sélectionner

#AutoIt3Wrapper_Res_File_Add=fichier.exe, rt_rcdata, NOM_EXE
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Extraire source .exe

#4

Message par Tlem »

Avant de le faire en ligne de commande, essayez de le faire par l'interface de Reshacker.
Il se peut effectivement que si votre script est compressé par UPX, Reshacker soit dans l'incapacité de récupérer des ressources. Dans ce cas, décompressez le script et relancez Reshacker.

PS : Reshacker n'est pas mon utilitaire mais celui d'Angus Johnson. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Extraire source .exe

#5

Message par Julien »

Je parlais de : Ressource Dll Generator

via l'interface graphique j'ai le même résultat qu'en ligne de commande. Le .exe est bien extrait du fichier .dll mais pas du .exe
Je me dis donc que cela est du à la compression.

Pour compiler mon script j'utilise AutoIt3Wrapper inclus dans le pack pour débutant.

Pour le décompresser je dois utiliser 7zip ou une commande interne ?

Si je décoche upx à la compilation du script j'ai des effets de bord assez étrange.
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Extraire source .exe

#6

Message par Julien »

Pour le décompresser je dois utiliser 7zip ou une commande interne ?
upx.exe -d "Chemin"

Le problème est que après décompression, le lancement de mon .exe lance en réalité le .exe inclus dans le premier.

Je ne peux donc pas faire le test complet après décompression.
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Extraire source .exe

#7

Message par Julien »

Je viens de refaire un test mais en zipant (.zip) le fichier .exe. Même compressé cela fonctionne mieux si je fais :

Code : Tout sélectionner

Run('"' & $DirTemp & 'ResHacker.exe" -extract ' & '"' & @ScriptFullPath & '", fichier.rc, RCDATA, NOM_ZIP,', "", @SW_HIDE)
Dommage car cela implique de zipper mes fichiers en amont c'est pas très grave mais j'aurais préféré faire autrement.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Extraire source .exe

#8

Message par Tlem »

Julien a écrit :Si je décoche upx à la compilation du script j'ai des effets de bord assez étrange.
Pouvez-vous être plus explicite ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Extraire source .exe

#9

Message par Julien »

Lorsque que je compile le script via le raccourci F7 (AutoIt3Wrapper) en ayant décoché la case "Use UPX", mon programme est bien compilé mais au lancement au lieu d’exécuter mon programme il exécute le premier fichier (ici des .exe) inclus par la ligne en tête de script :

Code : Tout sélectionner

#AutoIt3Wrapper_Res_File_Add=fichier.exe, rt_rcdata, NOM_EXE
Cela ne se produit que avec des .exe. Test fait sans problème avec des .zip
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Extraire source .exe

#10

Message par Tlem »

En ce qui me concerne, si je compile (en 32 bits) avec les lignes :

Code : Tout sélectionner

#AutoIt3Wrapper_Res_File_Add=fichier.exe, rt_rcdata, NOM_EXE
Mon script compilé fonctionne normalement et l'exécutable joint n'est pas lancé. Par contre pour extraire la ressource, cela ce complique puisque celle-ci est compressée de manière non standard. Donc si vous tenez à utiliser ce mode de fonctionnement, vous devez rajouter :

Code : Tout sélectionner

#AutoIt3Wrapper_UseUpx=n
et là ResHacker vous permettra l'extraction.

Par contre l'utilisation de cette méthode pour du binaire n'est généralement pas utilisée/recommandée. Il serait plus judicieux d'utiliser la commande FileInstall qui sera bien plus souple à l'utilisation. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Extraire source .exe

#11

Message par Julien »

je compile en 32 et 64 mais le premier programme inclus est toujours exécuté en premier.

Je vais partir sur des fichiers zip. Ça fonctionne plutôt bien d'après mes test.

Merci d'avoir pris du temps pour tester.

Edit : je compile que en 32 celui la.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Extraire source .exe

#12

Message par Tlem »

Sans tous les éléments, difficile de vous aider plus. En tout cas, la description de ce que vous faites, fonctionne normalement chez moi.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Extraire source .exe

#13

Message par Julien »

J'ai passé beaucoup de temps pour trouver une solution qui fonctionne et a chaque fois que j'utilisais le "fileinstall" avec des .exe j'avais des erreurs lors de la compilation.

Je me suis dit alors que ça serait plus simple avec cette méthode.

Au final je suis revenu au "fileinstall" mais en renommant mais sources en .bin (j'aurais pu utiliser le .zip comme indiqué précédemment mais je n'ai pas réussi dans mon script à le faire fonctionner), que je renomme en .exe lors de l'extraction.

Ceci dit j'ai encore bien appris sur l'utilisation des ressources.
Répondre