Modifier un executable en cours d'utilisation ? [Résolu]

NESTORORG 11 Messages postés dimanche 15 septembre 2002Date d'inscription 27 octobre 2005 Dernière intervention - 25 oct. 2005 à 21:46 - Dernière réponse : cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention
- 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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Utilisateur anonyme - 26 oct. 2005 à 13:51
3
Merci
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

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 26 oct. 2005 à 14:32
3
Merci
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

Merci cs_Loda 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de cs_Loda
Meilleure réponse
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 26 oct. 2005 à 16:35
3
Merci
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 .

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de jlen100
Meilleure réponse
Utilisateur anonyme - 26 oct. 2005 à 23:08
3
Merci
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

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
NESTORORG 11 Messages postés dimanche 15 septembre 2002Date d'inscription 27 octobre 2005 Dernière intervention - 26 oct. 2005 à 19:52
0
Merci
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
Commenter la réponse de NESTORORG
Utilisateur anonyme - 26 oct. 2005 à 23:11
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 26 oct. 2005 à 23:13
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 27 oct. 2005 à 08:03
0
Merci
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!
Commenter la réponse de cs_Loda
NESTORORG 11 Messages postés dimanche 15 septembre 2002Date d'inscription 27 octobre 2005 Dernière intervention - 27 oct. 2005 à 20:34
0
Merci
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
Commenter la réponse de NESTORORG
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 28 oct. 2005 à 15:04
0
Merci
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
Commenter la réponse de cs_Loda

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.