Modifier un executable en cours d'utilisation ?

Résolu
NESTORORG Messages postés 11 Date d'inscription dimanche 15 septembre 2002 Statut Membre Dernière intervention 27 octobre 2005 - 25 oct. 2005 à 21:46
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 28 oct. 2005 à 15:04
Bonjour,

j'ai écrit un un crypteur de fichier, et je sohaiterai le proteger de la maniere suivante :

au lancement du prog :

On teste si le dernier octet du prog est à ZERO.

Si octet = 0, on continue l'execution

Si octet <> 0, on saisit un code et si le code est bon, on remplace le dernier octet du prog "OUVERT" par 0.



Mon probleme, c'est le Erreur E/S 32.



Y'a t'il une solution pour qu'un EXE puisse s'automodifier ?



Merci d'avance.


Nestor

10 réponses

Utilisateur anonyme
26 oct. 2005 à 13:51
A ma connaissance on peut pas modifier un executable : voir tout les topics parlant de ca. De plus si une solution existe, elle doit etre sacrément hard à expliquer et encore plus à mettre en oeuvre

bon coding
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
26 oct. 2005 à 14:32
Modifier un exe ouvert me semble pas possible sans passé par dessus le FileSystem. (hard!)



Sinon, tu peux faire deux exe. Un qui modifie et lance le deuxieme. Une sorte de "bootstrap" quoi.





Mais, je comprend pas très bien le but. Quand ton octet est-il mis à "<>0"?



Si tu veux empecher l'ouverture par un user non authoriser, pk n'utilise tu pas un truc simple genre :

tester l'existence d'un fichier "MonPassWord.psw" dans le dossier de l'applic ou

le contenu d'un fichier situer à un endroit choisit (genre "c:\programme files\borland\readme.1st")



Tu serra a peu près aussi bien protéger que si tu change l'exe.



Tu peux même pousser le vice jusqu'a un mot de passe calculé selon le
nom de l'utilisateur windows par exemple. (donc différent pour chaque
personne qui s'en sert)



En espérant d'avoir aidé,



Loda
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
26 oct. 2005 à 16:35
pour proteger ton programme tu peux aussi passer par un fichier ini ou
une clef dans la bese de registre ou plus vicieux combiner les deux .
3
Utilisateur anonyme
26 oct. 2005 à 23:08
Loda : un executable qui modifie un executable ?? va falloir m'expliquer ca ? :

*Je cites Manchester : dans un executable tu n'as pas que ta source transcrit en binaire. Tu as d'autres choses : la date, l'heure, des "trucs" qui te disent "tient c'est un fichier .exe par un fichier *.ico" (les deux contiennent s'identifient à du binaire) ect ect... Donc rien qu'en faisant une infime modification par un coupde baguette magique sur la partie correspondant à ton coding, tu bouissilles ton programme : en effet rien que la date et l'heure vont poser problème sans parler du reste.

*Le quasi seul moyen de "modifier" un programme consiste à créer un executable qui créer un executable. Et pour cela il te faut le compilateur de Delphi qui dispose d'un copyright ....

*NESTORORG : Personnellement je trouve stupide au stade personnel de sécuriser un programme :

-Mettre un copyright sur un programme coute tres cher. Et il est évident que le profit que tu pourras en retirer sera ridicule par rapport au prix dépensé pour le copyright.

-Deuxièmement : tu programmes sous Delphi. Ton logiciel poura être soit très facilement craquable soit décompiler par Dédé. Dans ce dernier cas cela ne représente aucune difficulté et se fera en meme pas 5 secondes.

Si tu veux pas te faire piquer ton programme : bien ne le divulgue pas.

Merci et bon coding
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NESTORORG Messages postés 11 Date d'inscription dimanche 15 septembre 2002 Statut Membre Dernière intervention 27 octobre 2005
26 oct. 2005 à 19:52
L'octet est mis à <>0 avant de s'enregistrer ( a la conception du prog) ou si le serial d'enregistrement est mauvais.



Ok pour votre methode avec fichiers annexes,

je cherchais juste une méthode simple ;o)

sans fichiers annexes.



Sinon, passer par la base de registre, c'est trop hard pour moi.



Bref, je vais tenter d'enregistrer le prog via un fichier .psw

ou alors tenter une combinaison de touches pour activer les boutons

encrypte et decrypte.

Nestor
0
Utilisateur anonyme
26 oct. 2005 à 23:11
Un moyen très simple : des l'ouverture tu fais apparaitre un Edit et un bouton. Si le mot de passe dans l'Edit valider par le bouton ne correspond pas au mot de passe que tu entres alors tu fermes l'application en cours.

Ca c'est ultra efficace, c'est ultra simple, c'est ultra rapide.
0
Utilisateur anonyme
26 oct. 2005 à 23:13
Petite remarque : sous windowe essaye de copier un programme en cours d'utilisation. Tu n'y arrives pas. Donc tu ne pourra de totue facon pas modifier ton programme si il est en cours d'utilisation.
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
27 oct. 2005 à 08:03
Franky, si tu prend par exemple le format PE/COFF:



Le fichier est séparer en section, tu trouve dans l'entête du fichier les taille et position de la table des symboles.



Maintenant, disons que t'as déclaré une constante. Elle vas forcement
se trouver dans la section de code. (Valeur du flags de l'header:
0x0040 STYP_DATA If set, indicates that this section contains only
initialized data)



Ensuite, tu peux (dès que t'as trouver son emplacement) aller changer
la valeur d'une constante. Bien sur, son emplacement risque de changer
à chaque compilation.



a titre d'exemple: voici comment modifier l'explorer de windows pour changer le nom du menu démarrer:

http://libertyboy.free.fr/computing/tips/w_sm_na.php



cordialement,



Loda



PS: modifier la bas de registre, c'est assez simple sous delphi. Mais fait gaffe! c'est fragile!
0
NESTORORG Messages postés 11 Date d'inscription dimanche 15 septembre 2002 Statut Membre Dernière intervention 27 octobre 2005
27 oct. 2005 à 20:34
Ok, c'est stupide de protéger un prog perso (dans la plus-part des cas).

En ce qui me concerne, j'ai jugé cette protection utile car :

Mon crypteur crypte et decrypte un fichier sans avoir besoins de conserver une clef

ecrite sur un post-it collé au clavier ;o)

Et j'ai écrit ce crypteur parceque je n'en trouvais pas à ma convenance dans le domaine freeware, à savoir :

Ceux que l'on trouve sur le net cryptent l'intégralité ou une grande
partie du fichier cible et donc sont lents, de plus, il est nécessaire
de conserver les clés de cryptage.

Le but du mien est simplement d'empecher la lecture du fichier crypté avec un algorythme simple :

De l'octet DEBUT à l'octet NBRE_ITERATION

Tous les PAS intervals

Modifier la valeur de l'octet par sa valeur initiale + NOMBRE

Ecrire les parametres de cryptage ( DEBUT, NBRE_ITERATION, PAS, NOMBRE ) en fin de fichier crypté

Et enregistrer le tout sous un nom de fichier codé.



Ca marche bien ( sauf pour les .mpeg ) et c'est rapide ( selon le "NBRE_ITERATION" ).



De plus le décryptage est facile si l'on connait l'algo de cryptage et
qu'on sait ou chercher les parametres dans le fichier crypté.

Dans le cas contraire, j'imagine que c'est un peu plus hard.



Bref je l'ai protégé par un test de comparaison de chaine sur une TEdit et un test de frappe clavier.



Voila, ceci explique peut-être mieux pourquoi j'aurais préféré que mon prog puisse s'uto-modifier.


Nestor
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
28 oct. 2005 à 15:04
Je comprend tout à fait tes motivations, mais je m'orienterias plustot
du côté de la détection d'un truc spécifique à ta machine.



je m'explique:



si qqun tente de te voler ton prog (faut déjà être un peu parano), soit il a la version protégée soit la tienne.



Si il a ta version, il peut s'en servire sans problème!



le "problème" de ta solution, c'est que je vois mal comment il pourait
obtenir l'exe protégé... donc la protection est pas très utile. Si il
te fauche un exe, c'est le tiens... :-(



Tant dis que si tu fais un système qui se basse sur une caractéristique
de ton PC ou un code qui en dépend: il peut te copie l'exe, il ne
marchera que chez toi! tu peux jouer avec des numéro de licence que tu
vas lire dans la DB par exemple. ou d'autre trucs.



Loda
0
Rejoignez-nous