[Tuto] Réalisation d'un builder

Espace contenant des tutoriels divers concernant AutoIt.
Règles du forum
.

Tutoriel "La programmation avec Autoit" : https://openclassrooms.com/fr/courses/1 ... vec-autoit
Répondre
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 17:51
Localisation : France
Contact :
Status : Hors ligne

[Tuto] Réalisation d'un builder

#1

Message par Sea » mar. 10 juil. 2012 12:49

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

Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 12:13
Status : Hors ligne

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

#2

Message par Uranium » mar. 10 juil. 2012 13:01

Merci du partage , ça à l'air sympa :D
Je lirai tout ça ce soir

Cordialement ,
« En mathématiques, “évident” est le mot le plus dangereux. »

Candide
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 04 juil. 2012 10:02
Status : Hors ligne

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

#3

Message par Candide » mar. 10 juil. 2012 13:06

Pareil *_*
En apprentissage du langage AutoIt :)

Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1564
Enregistré le : lun. 18 avr. 2011 14:21
Localisation : La Quatrième Dimension
Contact :
Status : Hors ligne

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

#4

Message par TT22 » mar. 10 juil. 2012 14:15

C'est une bonne idée :wink:
TT22
[/b][/size]
Image

Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 12:13
Status : Hors ligne

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

#5

Message par Uranium » mar. 10 juil. 2012 16:12

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 !
« En mathématiques, “évident” est le mot le plus dangereux. »

Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 983
Enregistré le : lun. 19 oct. 2009 03:04
Localisation : Algérie
Status : Hors ligne

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

#6

Message par matwachich » mar. 10 juil. 2012 21:41

Question peut être idiote mais je ne saisi pas très bien l'utilité de ça
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici

Sh4dows
Status : Hors ligne

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

#7

Message par Sh4dows » mar. 10 juil. 2012 23:29

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 ><

Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 17:51
Localisation : France
Contact :
Status : Hors ligne

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

#8

Message par Sea » mer. 11 juil. 2012 03:43

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

Avatar du membre
Iste
Modérateur
Modérateur
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

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

#9

Message par Iste » mer. 11 juil. 2012 08:48

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 !
Signez ici

Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 12:13
Status : Hors ligne

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

#10

Message par Uranium » mer. 11 juil. 2012 11:06

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 !
« En mathématiques, “évident” est le mot le plus dangereux. »

Répondre