MANIPULATION FICHIER EXECUTABLE

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 2 déc. 2007 à 13:47
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010 - 4 déc. 2007 à 17:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44891-manipulation-fichier-executable

draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
4 déc. 2007 à 17:11
Hum wai, mais ca existe deja sur le site...
Regarde dans les sources de "EB avoir le style Xp" (petit exemple tres simple pour ajouter un fichier)
Sinon dans les sources de ShareVb tu trouvera un exemple pour modifier les ressourves version, bitmap et string

Ce sont les sources qui m'ont servie d'exemple pour un generateur d'auto-extratible et pour un generateur de fix de desinfection...
(voir ici un exemple http://systemzeb.free.fr/MakeFixFr.exe)

++
mbodjsystem Messages postés 26 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 9 juillet 2008
4 déc. 2007 à 17:00
peux-tu nous donner une petite module stp DRALUORG sur l'API UpdateRessources.

je ne l'ai jamais utilisé !!! :-(
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
4 déc. 2007 à 16:05
Salut a tous,

Il y a l'api UpdateRessources qui est prevu pour ca...
Il te permet d'ajouter ou modifier des ressources de toutes sortes (texte, file, version, images etc..)

Et la relecture depuis l'exe n'en sera que simplifiée...

++
mbodjsystem Messages postés 26 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 9 juillet 2008
3 déc. 2007 à 17:27
Oui, par exemple tu peux le faire. c'est une bonne idée.

mais il faut que ce marqueur soit unique dans tout le fichier. il faudra alors trouvez une chaine de caractères spéciales qui marque la fin de la données.

voila par exemple une autre solution.

si tu as le temps, essaie de poster quelques choses sur ca.

il serait interessant de faire ici sur vbfrance un programme qui s'auto extracte les données qu'il contient.

:-)
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
3 déc. 2007 à 17:20
Ben dans ce cas tu dois écrire un marqueur dans le fichier executable pour retrouvé le texte, parce que devoir connaitre sa taille dorigine c'est vraiment pas pratique.

Par exemple en ajoutant un stamp contenant la taille des données(ou de l'executable, ce qui revient au meme) à la fin du fichier tu pourrais retrouvé la position des données sans avoir a changé la constante à chaque fois que tu veux relire un fichier
mbodjsystem Messages postés 26 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 9 juillet 2008
3 déc. 2007 à 16:51
oooh !!! là je ne suis pas d'accord.

FileLen ou LOF (Len of file) ne vont pas résoudre le problème. il faut abligatoirement connaitre dès le départ la taille réél du fichier exécutable sans aucune autre données, ensuite tu pourras utiliser ton filelen.

supposons X = taille de départ, alors la taille des données (données ajoutées) sera alors :

FileLen - X = Y octets

D'où le X est une constante qu'il faut connaitre.

je suis parfaitement d'accord sur les put et les get des fichiers binaires.
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
3 déc. 2007 à 16:35
Salut ,
Comme disait EBArtSoft, ouvrir et écrire dans un fichier executable avec Input/output/append c'est suicidaire, tu dois utiliser le mode binaire.

Et pour ce qui est de ta constante, c'est pas très pratique ,non? tu devrais récuperé la taille du fichier avec un FileLen ou simplement un LOF.

L'idée n'est pas nouvelle, mais ta source est simple.

Bonne continuation.
a+
mbodjsystem Messages postés 26 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 9 juillet 2008
2 déc. 2007 à 15:41
merci pour les suggestions EBARTSOFT !

au niveau du code source, vous remarquerez qu'on a déclaré une constante Const TailleEXE = 24576

la valeur 24576 est obtenue en faisant un clic droit puis propriété apres la compilation du projet sur le fichier exécutable généré.

cette constante marque la taille exacte du fichier exécutable (la taille des données à instruction machine), ensuite à partir de 24576+1, on peut ajouter tout ce que l'on veut :
- image, fichier son, fichier texte, etc.

donc pour extraire l'information ajouter au fichier exécutable, on va partir de 24576 jusqu'à la taille actuelle du fichier....
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
2 déc. 2007 à 13:49
Bon je me suis relu et je me suis aperçu que ma remarque n'etait pas tres constructive alors pour pas que l'on m'accuse de je ne sais quoi voila mes propositions :

- Place ton API dans la form
- Remplace "Print" par "Get #1" (mode d'ouverture binary)

Voila comme ça c'est plus clair
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
2 déc. 2007 à 13:47
Le module bas ne sert a rien de plus le "print #" ya pas mieu pour flingué un fichier binaire.

@+
Rejoignez-nous