Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [Résolu/NDS] Crypter sauvegarde  (Lu 1089 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« 25 Février 2008, 14:48:26 »

Je voulais savoir si quelqu'un connaissait un moyen de crypter de manière simple une sauvegarde de high score (un simple int) pour que l'utilisateur ne puisse par aucun moyen éditer le fichier sauvegarde ou directement la ROM dans le cas de l'EFS.
Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Bobiwan Hors ligne
Full Member
***
Messages: 184


Voir le profil
Core

« Réponse #1 : 25 Février 2008, 15:17:00 »

tu fais un xor dessus
et pour decrypter tu fais la même chose.
au moins c'est pas facile a lire. et donc protege de ma la majorité des gens.

Une solution plus touchy, et d'utilisé les 32-x premier bit pour ton score auxquel tu additionnes un magic number en dur dans ton applis, et tu utilses les x derniers bit comme "bits de signature" pour veifier que le code est pas modifié a la main.

pour decoder tu verifiés si ton code est bien signé (genre que la somme des bit pair et impaire = 0) et tu soustrais ton magic number.

Comme ca tu as un entier pas lisible et verifiable avec une proba de 1/(2^x)

Journalisée

--
std::cout << "Zbob" << std::endl
PypeBros Hors ligne
Hero Member
*****
Messages: 707


Voir le profil WWW
Posez-vous les bonnes questions

« Réponse #2 : 25 Février 2008, 15:19:19 »

en crypto, il n'y a jamais de solution simple, et presque jamais de solution parfaite.
Première chose, c'est de crypter *plus* que juste un int. P.ex. un int et un nombre magique qui sera vérifié.
Deuxième chose, c'est de bien cacher la clé qui servira au décryptage. Elle doit figurer dans ton programme (forcément), mais ça peut être un p'tit byte par-ci, un p'tit byte par-là. Garde en tête que quoi que tu fasses, quelqu'un d'un peu motivé pourra toujours analyser ton programme étape par étape dans un émulateur, malheureusement ...
Troisième chose, sois créatif dans la manière de sauver tes scores. Si le fichier s'appelle "machin.sav", c'est presque trop simple.

Bref, c'est beaucoup de soucis sans véritable garantie de résultat. Moi, je ne me prendrais pas la tête à ce point-là.
Journalisée

Cid2Mizard Hors ligne
Super Mega Member
****
Messages: 4064


Voir le profil WWW
Disciple Kukulcanien

« Réponse #3 : 25 Février 2008, 15:26:28 »

Sinon l'EFS est la meilleur solution  whistle pas acces, pas de modification possible  whistle ICI
« Dernière édition: 25 Février 2008, 15:28:14 par Cid2Mizard » Journalisée

Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #4 : 25 Février 2008, 16:02:10 »

Il suffit de modifier le fichier .nds avec un éditeur hexadécimal et le score est modifié.

Actuellement ce que je fais :
- Je stock un int pour le score et un long pour la "signature"
- Je transforme donc le score (int) en signature par l'intermédiare d'une clé (un long string)
- Au chargement je peux vérifier si le score est bien signé

Vu que je distribuerais les sources, l'algo de cryptage sera connu. Il resterait la clé à trouver. Et pour quelqu'un qui connait l'algo se sera vraiment très facile à trouver la clé en éditant la Rom avec un éditeur hexadécimal...
Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
PypeBros Hors ligne
Hero Member
*****
Messages: 707


Voir le profil WWW
Posez-vous les bonnes questions

« Réponse #5 : 25 Février 2008, 16:43:21 »

'faut voir quel modèle de distribution de tes sources tu envisages. si l'idée est de pouvoir reproduire le jeu tel quel à partir du contenu opensource, alors toute tentative de protection est futile: je peux juste éditer les source de ton jeu pour y intégrer n'importe quel cheat.

Par contre, tu pourrais envisager d'avoir un moteur de jeu open source (p.ex. LPGL) mais le véritable jeu (y compris les graphismes, sons, etc. et une partie plus "sensible" du code) qui n'est pas disponible en-dehors du binaire distribué. Dans ce cas-là, tu peux toujours mettre tes fonctions de manipulation de score (y compris chiffrement/déchiffrement) hors de la partie open source...
Journalisée

Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #6 : 25 Février 2008, 16:58:09 »

C'est ce que je vais faire.

En fait si je ne veux pas qu'on puisse bidouiller les scores par les sources ou les binaires c'est parce qu'il y a un sysytème de high score en ligne.

Je distribue les sources par SVN. Je vais voir si on peut enlever un fichier du "checkout public".
Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Pages: [1]   Haut de page
Imprimer

Aller à: