Stocker des variables dans le code [Résolu]

Signaler
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Bonjour,

En éditant un exécutable avec notepad, on peut voir que les propriétés des composants utilisés sur la form apparaissent en clair. Pas terrible... J'aimerais masquer certaines valeurs desdites propriétés. Je vais regarder si ça change quelque chose en stockant certaines de ces valeurs dans un fichier .res. Connaissez-vous sinon un composant qui stockerait ça de manière cryptée (enfin, de façon à ce qu'on ne puisse pas le voir dans l'exécutable) ? Un genre de TCryptedStrings ?

Simon

8 réponses

Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
Bonjour,

essaie comme ça:

Composant.caption := 's' + 'e' + 'c' + 'r' + 'e' + 't';



cantador

Salut,

Si c'est juste les captions et autre textes que tu veux cacher, tu peux tres bien les définir à l'ouverture de ton executable compilé : cela te permettrait de crypter et décrypter ces derniers.

Concrètement tu les cryptes et tu fais dans le OnCreate de ta fiche :

Edit1.text:=Decrypt('Mon-Text-Cryptée');


C'est lourd mais ca répond pleinement à ta demande
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11
Bonjour Cantador et Francky,

Désolé Cantador, mais ta solution ne marche pas

Je vais plutôt m'orienter vers la solution de Francky

Merci pour vos réponses !

Simon
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
Bonjour
" Edit1.text:=Decrypt('Mon-Text-Cryptée'); "
Je pense que dans l'EXE créé, le texte 'Mon-Text-Cryptée' apparaitra en clair également !
cordialement
Dubois77
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
Bonjour,

Désolé Cantador, mais ta solution ne marche pas

Ce n'était pas une solution mais une simple pichenette permettant d'éviter l'association entre la propriété du composant et son texte..

Maintenant, si tu veux plus, il faut passer par les ressources
et charger toutes les propriétés par un load :
[b]
Res := TResourceStream.Create(hinstance, 'CAPTION', RT_RCDATA);
jpg.LoadFromStream(Res);/b

mais c'est très lourd à gérer..

tu peux aussi stocker avec TFileStream (il y a plein d'exemples sur le net)
chaque composant avec ses propriétés,
il faudra ajouter un cryptage de chaque propriété (avant) et mettre une fonction de décryptage avant le chargement.
tu auras caption := decrypt (crypt)

lourd également..

Autre idée, plus simple et d'utiliser un compresseur d'exe, ce qui entre autre présente l'avantage d'accélérer l'ouverture du programme (la compression est rapide)

Inconvénient, il faut compresser à chaque fois, avant de mettre l'appli en service.

Je pense que l'on peut automatiser, s'agissant d'un exe externe.

cantador
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11
Bonjour Monsieur Dubois,

A priori, vu que c'est le texte crypté qu'il faut mettre en paramètre de Decrypt, je pense qu'on verra plutôt un truc avec des hiéroglyphes.
Bonne nouvelle avec XE2, la valorisation de variables n'apparait pas dans l'exécutable... par contre on voit toujours les propriétés des composants.

A Cantador :
Je suis effectivement passé par des ressources cryptées. ça m'a permis de réviser les fichier .res ...
merci encore




Simon
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
Finalement c'est Francky qui a raison comme le dit simonpelloquin !
et c'est simple à faire !
cordialement
Dubois77
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11
Merci à tous pour vos solutions, ça m'a bien aidé.

Simon