Page 1 sur 1

[Tuto] Réalisation d'un builder

Posté : mar. 10 juil. 2012 13:49
par Sea
Introduction
Voici un petit tuto sur la méthode de création d'un builder en autoit.
Tout d'abord nous allons voir les principes d'un builder(partie théorique) puis après nous verrons comment coder tout-ça.


Un builder? Comment ça fonctionne? (La théorie)

Pour commencer un builder est tout simplement un logiciel qui va écrire dans un autre programme pour que celui-ci récupère des données. Ainsi nous pouvons obtenir grâce à notre builder différent programme sans être obligé de re-compiler à chaque fois la source ce qui peux être très intéressant.

Maintenant que nous savons ce qu'il dois faire comment allons-nous faire?

Pour réaliser cela notre builder à besoin de 2 choses:
  • Un fichier cible
  • Une donnée à rentrer dans le fichier cible
Notre fichier cible est appelé "Stub" il a besoin de 2 choses pour fonctionner:
  • Une/des données
  • Un délimiteur entre chaque donnée (pour repérer le début et la fin de chaque données)

Maintenant que l'on sais ça on va pouvoir coder
j'ai choisi de commenter chaque ligne je pense que cela est suffisant cependant si vous ne comprenez pas n'hésiter pas à demander
Notre Builder

Code : Tout sélectionner

$texte1 = "notre 1er texte"
$texte2 = "notre 2e texte"
$texte3 = "notre 3e texte"

;On demande où enregistrer notre fichier final
$Fichier_final = FileSaveDialog("Ou sauvegarder le .exe?",-1,"exe files (*.exe)", 16) 
If @error Then ; Si on clic sur le bouton annulé
    MsgBox(64,"Erreur","Sauvegarde annulé") ;on informe l'utilisateur
Else ; sinon
    ; On copie notre stub(donc notre fichier attendant les données)
    FileCopy(@ScriptDir&"\Stub.exe",$Fichier_final)
    ; On écrit dans le fichier copier qui correspond au stub toute les données voulus.
    ; Les ~\0/~ étant nos délimiteurs.
    FileWrite($Fichier_final, @CRLF & "~\0/~" & $texte1 &"~\0/~" & $texte2 & "~\0/~" & $texte3 & "~\0/~")
    FileClose($Fichier_final); on ferme notre fichier
    MsgBox(64, "Succès","Le fichier a était créé avec succès") ;on informe l'utilisateur
EndIf ;fin de la condition
Notre Stub

Code : Tout sélectionner

;On split notre fichier c'est à dire qu'on va diviser la chaîne en sous-chaînes en fonction de notre délimiteurs
$Donnees = StringSplit(FileRead(@ScriptFullPath), "~\0/~", 1)

$1texte = $Donnees[2] ;on prend la 2e valeur car [1] vaut "MZ"
$2texte = $Donnees[3] ;je pense que la vous avez compris
$3texte = $Donnees[4]

MsgBox(0,"",$1texte & @CRLF & $2texte & @CRLF & $3texte)
Bien sur pensé à changer "FileCopy(@ScriptDir&"\Stub.exe",$Fichier_final)" dans le builder par votre Stub

Voila fin du tuto en espérant vous avoir fait comprendre le principe des stub en autoit

Re: [Tuto]Réalisation d'un builder

Posté : mar. 10 juil. 2012 14:01
par Uranium
Merci du partage , ça à l'air sympa :D
Je lirai tout ça ce soir

Cordialement ,

Re: [Tuto]Réalisation d'un builder

Posté : mar. 10 juil. 2012 14:06
par Candide
Pareil *_*

Re: [Tuto]Réalisation d'un builder

Posté : mar. 10 juil. 2012 15:15
par TT22
C'est une bonne idée :wink:

Re: [Tuto]Réalisation d'un builder

Posté : mar. 10 juil. 2012 17:12
par Uranium
J'ai une question !
Je lance le Builder et il me "créer" bien le fichier stub.exe , cependant il n'a aucune extension donc il apparaît comme fichier ( et non exécutable ). Il suffit que je le renomme en stub.exe pour qu'il marche.

Alors comment faire :?:

Edit : rajouté

Code : Tout sélectionner

$Fichier_final &= '.exe'
après le ' Else'

Edit 2 : Merci ce code peut-être sympa et très utile !

Re: [Tuto] Réalisation d'un builder

Posté : mar. 10 juil. 2012 22:41
par matwachich
Question peut être idiote mais je ne saisi pas très bien l'utilité de ça

Re: [Tuto] Réalisation d'un builder

Posté : mer. 11 juil. 2012 00:29
par Sh4dows
matwachich a écrit :Question peut être idiote mais je ne saisi pas très bien l'utilité de ça
De nombreuse applications sont possible avec cette méthode, mais pour des raisons de sécurité, il est préférable
de ne pas l'utilisé pour des produits comerciaux entre autre :roll:

Un des exemples les plus courant est celui du Downloader : On télécharger un fichier puis on l’exécute (classique).
Dans ce cas on ajoutera l'URL dans le stub.exe grâce à notre builder !

Voici un exemple très simple de downloader que j'ai réalisé il y a très peu de temps, et justement grâce à @Gr4ph0s alias @Sea :lol: afin de comprendre ce type de fonctionnement http://www.youtube.com/watch?v=HupZ9mDa ... detailpage .

Sh4dows,

P.S : Encore sorry @Sea ><

Re: [Tuto] Réalisation d'un builder

Posté : mer. 11 juil. 2012 04:43
par Sea
Personnellement c'étais pour répondre à ce sujet :
http://www.autoitscript.fr/forum/viewto ... =3&t=10108

il y a longtemps j'avais fais ça aussi http://www.youtube.com/watch?v=COAARjdopR4&feature=plcp un générateur de fond d'écran.

PS: no problem l'ami j'aime bien le 0x80 sur ton programme pour quitter sa fais class :p

Re: [Tuto] Réalisation d'un builder

Posté : mer. 11 juil. 2012 09:48
par Iste
Salutations,

Merci pour ce tuto, toute foi, cette solution en plus d’être bricolante est à la foi crade et risquée.

Pour faire cela, il faut utiliser l'externalisation.

Alors, oui on se retrouve avec plus d'un fichier, mais si 99% des softs sont ainsi, c'est pas sans raison !
Et de toute façon, avec FileInstall(), cela est transparent en AutoIt.

On peut sinon inclure soit même des info dans un script, mais il faut pour cela passer par des outils tel que resHacker et ne surtout pas rajouter du texte à la fin.

Pour conclure, Sea, vous étés libre de faire comme bon vous semble et une astuce de plus est toujours bon a prendre.
Mais pour les autres, réfléchissez bien avant d'appliquer ce genre de solution !

Re: [Tuto] Réalisation d'un builder

Posté : mer. 11 juil. 2012 12:06
par Uranium
Voici un exemple très simple de downloader que j'ai réalisé il y a très peu de temps, et justement grâce à @Gr4ph0s alias @Sea afin de comprendre ce type de fonctionnement http://www.youtube.com/watch?v=HupZ9mDa ... detailpage .
Sympa les GUIs
Question peut être idiote mais je ne saisi pas très bien l'utilité de ça
Il y a eu un programme proposé dans 'Exemple de script' qui marche de la même façon.

Il avait un builder , où tu rentrais tes options et ton adresse mail et il généré un stub avec 1 si l'option était choisis ou 0 si elle ne l'était pas. Et avec l'adresse mail.
Si je me souviens bien , il envoie des screens de ton écran en suivant les options choisis et il les envoie à ton adresse ( ... Protection je crois qui s’appelle )

Vu qu'il doit être 'discret' demander l'adresse et les options à chaque démarrage le fait pas , de cette manière il peut tourner 'sans être vu' et configuré par l'utilisateur.

Je poste le lien , si je retrouve

Cordialement,

Edit : CADEAU !