begin process at 2012 05 29 12:39:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

Modifier un fichier .exe en cours d'exécution


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Modifier un fichier .exe en cours d'exécution

vendredi 8 décembre 2006 à 15:54:42 | Modifier un fichier .exe en cours d'exécution

JonathanHawke

Bonjour,

Je souhaîte écrire un programme qui est capable de se modier lui-même et de mettre à jour son fichier .exe correspondant. Tout se passe bien si je sauvegarde les modifications sous un autre nom de fichier que celui en cours d'exécution. Mais le problème c'est que je voudrais directement modifier celui qui est exécuté. Windows m'interdit cette modificiation.

Le but est de faire un programme qui se "souvient" de son passé, sans avoir à écrire dans des fichiers auxiliaires.

Existe-t-il une fonction permettant d'outre-passer l'interdiction d'écriture imposée par le système, ou de faire croire au système que le programme a été quitté mais que celui-ci continue de s'éxécuter en RAM ?

Merci!

Jonathan
vendredi 8 décembre 2006 à 16:00:12 | Re : Modifier un fichier .exe en cours d'exécution

BruNews

Administrateur CodeS-SourceS
N'a aucun sens ton truc, un prog n'est en ram que tant que le système l'y héberge sinon il n'existe plus.

ciao...
BruNews, MVP VC++
vendredi 8 décembre 2006 à 16:13:24 | Re : Modifier un fichier .exe en cours d'exécution

JonathanHawke

Merci de ta réponse mais tu n'as pas compris mon problème (je me suis probablement mal expliqué, mais je te garanti que ça a un sens puisque ça marche très bien sous Linux).

Je vais plutôt donner un exemple simple qui résume très bien ce que je veux faire:

Disons que je veux un programme "prog.exe" qui lorsqu'on l'exécute affiche "Ce programme a été exécuté 1 fois". Lorsqu'on l'exécute une deuxième fois, il affiche "Ce programme a été exécuté 2 fois". La prochaine fois il affichera "Ce programme a été exécuté 3 fois". Et ainsi de suite. Mais je ne veux pas que le programme utilise de fichier .dat ou .ini pour stocker l'état du compteur. Je veux en fait que ce compteur soit stocké dans l'exécutable lui-même.

Pour cela le programme charge une copie de lui-même dans un buffer, effectue un modification adéquate sur ce buffer, et sauvegarde ce buffer sous le même nom que le programme en cours d'exécution. Encore une fois, pas de problème avec Linux, mais Windows quant à lui m'interdit l'écriture car le fichier est en cours d'exécution.

Voilà, j'espère que c'est un peu plus clair.
vendredi 8 décembre 2006 à 16:20:54 | Re : Modifier un fichier .exe en cours d'exécution

BruNews

Administrateur CodeS-SourceS
Mais j'avais très bien compris sauf que sous Windows on ne modifie pas l'exe qui est chargé, Windows n'autorise qu'un handle SHARE_READ sur le fichier.
Il faut pour cela une mini ruse, prog externe qui se chargera de mettre à jour. Cet auxiliaire peut très bien se trouver en ressource, extrait à l'exécution et se supprimer en fin de parcours.

ciao...
BruNews, MVP VC++
vendredi 8 décembre 2006 à 16:24:29 | Re : Modifier un fichier .exe en cours d'exécution

vecchio56

Administrateur CodeS-SourceS
"faire croire au système que le programme a été quitté mais que celui-ci continue de s'éxécuter en RAM"

Tu es vraiment sur que ca à un sens? Je ne pense pas

Je pense que ce ne serai pas logique non plus de modifier un exe en cours d'exécution. Il me semble qu'un exécutable n'est pas chargé entièrement en mémoire dès le début (seulement les parties utiles). Dans ce cas, il serait impossible de retrouver le code correspondant à l'exe qui est en tain de s'exécuter

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 8 décembre 2006 à 16:27:05 | Re : Modifier un fichier .exe en cours d'exécution

vecchio56

Administrateur CodeS-SourceS
De toutes facons, les fichiers de savegardes externes (ou la base de registres) sont une solution plus propre, par exemple pour revenir facilement à la configuration d'origine (il suffit de supprimer ces fichiers). C'est la solution utilisée par tout le monde, pourquoi vouloir faire autrement?

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 8 décembre 2006 à 16:43:34 | Re : Modifier un fichier .exe en cours d'exécution

JonathanHawke

"C'est la solution utilisée par tout le monde, pourquoi vouloir faire autrement?"

Parce que je ne veux pas faire comme tout le monde. Je cherche à compliquer au maximum la vie de l'utilisateur/cracker qui voudrait traffiquer les fichiers externes afin que le programme lui donne ce qu'il veut. Mon programme est un jeu de lotterie qui a besoin de sauvegarder des infos (comme le solde de crédit de l'utilisateur, un checksum qui permet de voir si les variables du programme ont été modifiées à l'aide d'un debbuger, et d'autres trucs) afin qu'elles soient disponibles lors de la prochaine exécution.

Si le solde créditeur de l'utilisateur est stocké dans un fichier, il suffirait à l'utilisateur de faire une copie de ce fichier et de la restaurer s'il perd afin de récupérer ses crédits.
vendredi 8 décembre 2006 à 16:45:36 | Re : Modifier un fichier .exe en cours d'exécution

vecchio56

Administrateur CodeS-SourceS
La tu peux faire une copie de l'exécutable, c'est pareil :)

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 8 décembre 2006 à 16:51:04 | Re : Modifier un fichier .exe en cours d'exécution

JonathanHawke

"La tu peux faire une copie de l'exécutable, c'est pareil :)"

Non, j'ai trouvé une astuce qui permet de détecter ça (mais que je préfère garder secrète, car elle fait partie de la sécurité de mon programme). Malheureusement cette astuce n'est pas applicable pour un fichier externe.
vendredi 8 décembre 2006 à 22:40:33 | Re : Modifier un fichier .exe en cours d'exécution

yann_lo_san

Il me semble que la cryptographie est faite pour ça, une clef privée sur ton serveur et des clefs publiques pour chacun de tes clients, ou simplement un code de ton cru pour décrypter un fichier externe que l'utilisateur ne verra jamais. Meme si il est vrai que tout est crackable, cela dit ton idée est originale.
Sinon grace à la date de création d'un fichier, on peut empecher la vulgaire copie/remplacement.
Tchao.


1 2

Cette discussion est classée dans : fichier, exe, modifier, cours, exécution


Répondre à ce message

Sujets en rapport avec ce message

quel programme pour modifier un exe [ par ata100t ] super neuneu en programmation mais tres curieux, (rester au dos et fichier .bat)je souhaite modifier servudaemon.exe histroire de comprendre comment c Modifier un FICHIER XML [ par ced09 ] Bonjour, dans mon code j'arrive a lire et ecrire tout  le fichier xml, mais je voudrais faire des modification dans le noeud principale sans que sa ch Modifier des octets dans un fichier ? [ par supergrey ] Salut, je voudrais savoir comment modifier des octets au milieu d'un fichier, jusqu'ici je recopier tout le fichier en changeant les octet voulu mais conversion d'un fichier .exe en C ou C++ [ par leomagic ] [size=12]decodman[:o)[/size=12]Salut tout le monde! Si c'est possible, est ce que vous pouvez m'aider à trouver un code source en ASM qui p Rotation d'un fichier pdf [ par Lepripri ] Bonjour à tous, je recherche un moyen d'effectuer une rotation de 180° d'un pdf d'une seule page provenant d'un copieur (il s'agit donc d'une image). Insérer/supprimer charactères dans un fichier [ par gwenChina ] Bonjour,En fait je doit aller modifier des charatères a l'intérieur d'un fichier (octet par octet). J'arrive tout a fait à écrire dans le fichier en r Recuperer le chemin de l'exe en cours... [ par XKaliBur ] Il existe bien GetModuleFileName() mais elle me retourne un truc du genre C:\Program Files\Mon Programme\Monfichier.exe alors que moi je veu plus un t Modifier un fichier texte [ par SpiritAnghell ] Bonsoir; Voila je dispose d'un fichier texte de sous-titres. Il est fait de la facon suivante: 1 00:00:24,441 --> 00:00:25,359 Ca y est. 2 00:00:27 Modifier les dates d'un fichier [ par JejeLand ] Bonjour,Voila mon problème, je développe sous C++ Builder et je souhaiterais modifier les dates de créations et de modifications d'un fichier.Ayant tr Ouvrir un fichier le modifier puis l exporter [ par adess00 ] SalutJ ouvre un fichier en binaire comme ceci ftoc=fopen(chem,"rb");ensuite je voudrai lire les donnees ki sont dans ce fichier par bloc compri entre


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales