[] Afficher un msg que si le prog est executé pour la 1ére fois... - C - Programmation
Marsh Posté le 15-10-2006 à 18:49:14
Bad_Day a écrit : J'ai fais un programme en C (je suis sous Windows) , où je veut qu'un message s'affiche a la 1ére execution du programme selement.. |
Je crois que tu a fais le tour... Tu peux rendre le fichier 'caché', et 'en lecture seule' (voir ton API système), le placer dans un répertoire invisible et/ou système, lui donner un nom qui fait peur (system.exe, sys32.bin, win32.dll, vérifie quand même que ce n'est pas quelque chose de réel...)...
Quand au registre (Win32), l'API Win32 fourni un tas de fonctions de manipulation des clés... MSDN est ton ami.
Sache cependant qu'aucune protection n'est inviolable.
Marsh Posté le 15-10-2006 à 20:01:22
Emmanuel Delahaye a écrit : MSDN est ton ami. |
Aaaggrrrrr... Je déteste ce site.. Mais je croi que je n'ai pas le choix
Edit: je n'ai trouvé que pour Delphi http://www.developpez.com/delphi/f [...] istevaleur alalaa
Marsh Posté le 17-10-2006 à 13:30:43
En fait, j'aimerai bien savoir comment il faut faire pour qu'un programme puissent s'exécuté pendant une certaine période, puis quand la période et dépassé le prog ce bloque...
Marsh Posté le 17-10-2006 à 13:56:57
Bad_Day a écrit : En fait, j'aimerai bien savoir comment il faut faire pour qu'un programme puissent s'exécuté pendant une certaine période, puis quand la période et dépassé le prog ce bloque... |
A l'évidence, il faut stocker la date d'installation calculer la date de péremption, surveiller la date courante... Ca parait assez simple et évident, et ça n'a aucun rapport avec le langage C.
Marsh Posté le 17-10-2006 à 14:21:23
Emmanuel Delahaye a écrit : A l'évidence, il faut stocker la date d'installation calculer la date de péremption, surveiller la date courante... Ca parait assez simple et évident, et ça n'a aucun rapport avec le langage C. |
Oui je sais ...
Mais si je ne poste pas ca dans le forum programmation où esque tu veut que je le poste...
Marsh Posté le 17-10-2006 à 15:10:09
Bad_Day a écrit : Oui je sais ... |
programmation, oui, mais pas programmation/c. Mais bon, c'est plus un problème de conception. algo, peut être ?
Marsh Posté le 18-10-2006 à 21:54:34
Emmanuel Delahaye a écrit : A l'évidence, il faut stocker la date d'installation calculer la date de péremption, surveiller la date courante... Ca parait assez simple et évident, et ça n'a aucun rapport avec le langage C. |
Hmm, ça ressemble à une protection de type shareware et une implémentation de ce type ne protègera pas grand chose. En effet, il suffit de modifier la date système pour que le programme puisse s'exécuter. De la même façon, si on trouve où est stocké la date d'installation, on peut la modifier pour que le programme s'exécute indéfiniment.
Si le but du code est de protéger un programme, alors il va falloir réfléchir sérieusement. J'irai même jusqu'à dire que c'est impossible.
Si par contre, c'est pour un usage privé, alors "l'algo" décrit par Emmanuel Delahaye suffit largement.
Sinon, donne plus de précisions.
Marsh Posté le 18-10-2006 à 23:12:39
anordem a écrit : Hmm, ça ressemble à une protection de type shareware et une implémentation de ce type ne protègera pas grand chose. En effet, il suffit de modifier la date système pour que le programme puisse s'exécuter. De la même façon, si on trouve où est stocké la date d'installation, on peut la modifier pour que le programme s'exécute indéfiniment. |
C'est comme tu a dit : le but du code est de protéger un programme, donc l'algo donné par Emmanuel n'est pas ...
Marsh Posté le 19-10-2006 à 03:46:42
On s'éloigne de la programmation C mais je voudrais apporter quelques infos supplémentaires.
Je pense que la meilleure protection (ce qui ne veut pas dire qu'elle soit parfaite) est de proposer une version de démonstration non complète comme pour les jeux video. Si ce n'est pas possible, il faut effectivement se pencher vers un autre type de protection. Dans ce cas, il faut prendre en compte 2 points fondamentaux : l'algorithme et son implémentation.
Pour le premier, et si l'on suit l'idée donnée par Emmanuel, il faut :
- Trouver un moyen sûr de connaitre la date actuelle (ex : fichiers systèmes, serveur NTP, etc.).
- Cacher la date d'installation (ex : cryptage RC4, AES, RSA, etc. avec test d'intégrité (SHA-xxx)).
Mais tout ça ne vaut rien si dans ton code, tu as :
Code :
|
Car autant la comparaison que la constante peuvent être modifiées facilement.
Il faut donc camoufler ce test dans ton code, par exemple : le diviser en plusieurs parties éparpillées au milieu des routines d'initialisation, utiliser plusieurs variables et points de contrôle, crypter le code principal du programme et le décrypter au fur et à mesure que les tests se font. Tu peux aussi "crypter" les valeurs, par exemple : l'année 2006 est supérieure à l'année 2005 mais 2006 * 2 > 2005*2 aussi et en mettant des centaines d'opérations comme ça éparpillées dans toutes les routines d'initialisation, en utilisant de nombreuses variables, tu peux facilement perdre un attaquant. Je dirai que c'est la partie artistique de la programmation, cela demande de faire preuve d'imagination.
Il y a également tout un tas de techniques anti-debug pour empêcher ralentir l'analyse du programme...
En fait, c'est un ensemble de techniques mises bout à bout qui peuvent donner une protection "fiable".
Il reste les protections commerciales, mais je te le déconseille car aucune protection n'est inviolable et l'investissement n'en vaut pas la peine. Mais ce n'est que mon avis.
Marsh Posté le 15-10-2006 à 18:24:28
Salut.
J'ai fais un programme en C (je suis sous Windows) , où je veut qu'un message s'affiche a la 1ére execution du programme selement..
je ne vois pas trop comment faire:
Crée un fichier txt , et tester ? Mais si on supprime le fichier (peut arrivé facilement), c'est la cata...
Crée une clée registe ? Oui bonne idée, mais comment tester ensuite si la clée existe où pas encors...
.........
Merci pour votre aide..
Message édité par Bad_Day le 15-10-2006 à 18:25:59