Page 1 sur 3

Creer exe automodifiable

Publié : lun. 08/mars/2004 13:54
par yves
Bonjours !
peut on creer un exe avec des parrametres ( data) modifiable
par lui meme ?

Publié : lun. 08/mars/2004 13:57
par Patrick88
comme turbo pascal ?

patrick

Publié : lun. 08/mars/2004 14:48
par Fred
Je comprends pas la question :). Si c'est passer des paramètres à un executable, c'est oui grace a ProgramParameter(). Si c'est pour écrire du code automodifiable, c'est oui aussi, mais faut avoir un sacré niveau en assembleur :wink:

exe automodifiable ( suite)

Publié : lun. 08/mars/2004 16:01
par yves
Je me suis mal exprimé .
j'aimerais stoker des parrametres
( comme on le ferais avec un fichier ini )
a l'interieur de l'executable .

Pour reduire a 1 seule fichier la plupart des petites d'applications.

cela fait pas mal de temps que je me pose cette question.
ce n'est sans doute pas facile ( l'exe est en memoire mais
l'os marque le fichier sur le disque comme ouvert " )

vu de l'exterieur ce serai comme si l'exe se recompile lui meme
avec de nouvelle donnée dans des data par exemple !

le copilateur sait integrer des "données" , "images" dans l'exe
l'idée serait d'utiliser ce type " d'espace " pour stoker des infos ( en live !)

Publié : lun. 08/mars/2004 16:41
par Fred
a mon avis ca parait carrement difficile (mais pas impossible). Surtout que l'exe peut etre stockée dans une zone disque en lecture seule. Mon conseil: utilise un .ini dans le rep de l'utilisateur.

Publié : lun. 08/mars/2004 16:56
par Anonyme2
Je ne sais pas si c'est possible de réécrire les sections d'un fichier en mémoire et de là le sauvegarder sur le disque.

J'ai pensé à une méthode, un artifice, c'est-à-dire depuis l'exe on lance un thread qui se terminera lorsqu'il aura réécrit l'exe avec les modifs.

Ce Thread testerait si le fichier exe est fermé et si oui, il le modifie. Là ou je ne sais pas trop car je n'ai pas assez travaillé avec les Thread, c'est de savoir si l'exe qui se ferme termine le Thread ?

Publié : lun. 08/mars/2004 17:55
par Le Soldat Inconnu
faire un exe qui en crée un 2ème avec les nouveau param (copie de l'exe puis modif) puis un fichier *.bat crée aussi par l'exe qui supprime le premier et renomme le 2ème

Publié : lun. 08/mars/2004 18:40
par Anonyme2
Régis, si tu lis bien le message, il veut du tout en un, sans un autre fichier.

suite !

Publié : lun. 08/mars/2004 19:55
par yves
Merci !

Mais ne vous torturez pas trop l'esprit . ( un fichier externe marche tres bien !)
Je pose ces questions dans un but de culture general.

Le probleme pour utilisez " un espace reservé " dans l'exe est que l'on
ne sait pas avant compilation ou sera cette 'espace" dans le prog !

Re: suite !

Publié : lun. 08/mars/2004 22:59
par Patrick88
yves a écrit : Le probleme pour utilisez " un espace reservé " dans l'exe est que l'on
ne sait pas avant compilation ou sera cette 'espace" dans le prog !
1) tu peux peut-être ajouter à ton executable tes données, un peu comme on lie les images avec includebinary

2) ou creer une zone tampon en tant que constante, après il faut pouvoir aller la modifier pendant ou après l'execution, je ne sais pas. ( avac des data aussi )
la constante sera compilée en même temps que l'exe. mais je pense que si tu modifies quelque chose dans l'exe , il doit y avoir une somme de controle (crc) et cela risque d'empècher le fonctionnement de l'exe.

pat

Publié : mar. 09/mars/2004 7:49
par Guimauve
mais je pense que si tu modifies quelque chose dans l'exe , il doit y avoir une somme de controle (crc) et cela risque d'empècher le fonctionnement de l'exe.
Je pense pas que l'on puisse ajouter des variables dans un EXE. Parcontre, il est possible d'aller changer la valeur des variables existantes dans l'exe. (Il faut savoir lire en Hexadécimal et/ou en binaire)

C'est de cette manière que l'on peut "Pirater" le EXE d'un jeu pour lui ajouter des éléments qui sont programmé mais non utilisés.

Dans le cas du jeu X-wing Alliance, on peut ajouter des chasseurs qui ne sont pas dans le jeu original parce que dans le programme il y a des espaces programmé pour des chasseurs mais qui sont vide. Alors avec un utilitaire on va changer la valeur de certaines variables. Et voilà, un nouveau chasseur se retrouve dans le jeu.

Mais modifier un exe à partir de l'extérieur, c'est pas toujours facile. On peut bouzziller le programme plusieurs fois avant d'arriver à quelque chose stable.

Une solution serait de travailler avec 2 programmes le premier passe les paramètres à un deuxième qui va arrêter et modifier le premier puis relancer le programme modifié.

À mon avis il est beaucoup plus simple de modifier le source et recompiler le programme avec les modifications que le modifier par l'extérieur.

A+
Guimauve

Publié : mar. 09/mars/2004 8:32
par Le Soldat Inconnu
heu, Denis, ou tu as vu qu'il y avait plusieurs fichiers dans ma solution ?
Tous ceux qui sont créés sont supprimés. :roll:

Publié : ven. 09/juil./2004 9:19
par gansta93
Peut-être en créant une DLL qui le ferait vu que le fichier exécutable est mit comme ouvert, donc impossible d'y écrire.
On dirait au programme d'appeler une fonction de la dll, on quite le programme, la dll fait son travail, relance le programme, et voila!
Oui c'est vrai qu'il y a deux fichiers mais bon...

Publié : ven. 09/juil./2004 10:15
par hardy
Lors de l'éxecution du programme, dans la mesure où celui-ci est chargé en mémoire vive, n'y-a-t-il pas moyen de fermer le fichier .exe?

Publié : ven. 09/juil./2004 10:28
par fweil
@hardy,

C'est ce que je cherche à trouver ... mais des chercheurs qui cherchent on en trouve, alors que des chercheurs qui trouvent on en cherche encore !