IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Compiler une chaine de caractère longue et complexe


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut Compiler une chaine de caractère longue et complexe
    Bonjour à toutes et tous,

    Je vais essayer d'être le plus claire possible... mais ça ne va pas être simple.

    Je développe actuellement un programme en C# avec le framework .NET, pour une solution Windows.
    J'ai besoin d'incorporer une chaine de caractères longue et complexe dans le programme compilé, la raison étant que je voudrais éviter que cette chaine reste "en claire".

    J'ai essayé de mettre la chaine dans un fichier texte à part, puis de compiler le fichier, notamment en l'associant à la solution Visual studio, mais le fichier reste en claire, ce qui ne me convient pas.
    J'en suis resté au fait que si un fichier n'est pas une class C#, il n'est pas compilé...

    L'autre solution serait de mettre la chaine directement en valeur d'une variable statique dans une classe, mais la complexité de la chaine fait que la compilation est en erreur.

    Est-ce que l'un(e) d'entre vous aurait une solution pour pallier ce genre de problème ?

    Par exemple... est-ce qu'il n'y a pas moyen de mettre le texte dans une "variable" utilisée lors de la compilation ?

    En vous remerciant par avance pour vos lumières, je vous souhaite une bonne journée.

    Mickaël

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 648
    Points : 2 170
    Points
    2 170
    Par défaut
    Bonjour,

    Quelle est la finalité de cette "chaine de caractère longue et complexe" ?

    Parce que si c'est pour cacher cette chaine à l'utilisateur, disons que s'il veut la trouver, il l'a trouvera, quoi que tu fasses. Seule la difficulté changera. C'est pour ça qu'il serait pas mal que tu nous dises le but de ta manœuvre.

    • Tu peux l'enregistrer en fichier binaire pour pas que ça soit en claire, avec un chiffrement simple s'il le faut.
    • Tu peux la stocker dans une variable en utilisant le @ pour bien la formater, ou l'adapter comme il faut.


    Evidemment ces solutions permettent de tenir à l'écart les utilisateurs lambdas, mais quelqu'un de motivé trouvera.

  3. #3
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut
    Merci pour ton intervention PixelJuice.

    J'ai essayé avec le "@", mais ça ne passe pas quand même...

    Effectivement, j'avais entendu dire que le C# pouvait se décompiler... donc je ne pense pas que j'ai me prendre la tête plus que ça... d'autant plus que les données ne sont pas d'une "haute criticité".

    Je retenterai peut être le coup plus tard... je remettrai un post avec ce que j'ai fait pour essayer d'avancer.

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Une fois la chaîne dans une classe, tu peux essayer de te tourner vers Dotfuscator.

    Il s'agit de méthodes permettant de chiffrer le programme lui-même et rendre l'analyse de son code, notamment la décompilation très complexe voir impossible.

    https://learn.microsoft.com/en-us/vi.../?view=vs-2022

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Tout obfuscator ne rends pas impossible la de-obfuscation. Il est tout a fait possible en quelque clique de de obfusquer un binaire a l aide de l'outil De4Dot. Par ailleurs Dotfuscator est le moins robuste de tous en terme d'obfuscation de code.

  6. #6
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 905
    Points : 1 923
    Points
    1 923
    Par défaut
    Si la chaîne doit être utilisée en clair à un moment donnée, il faudra de toute façon la décoder, il suffira alors d'inspecter la mémoire du programme pour la trouver.

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 196
    Points : 5 785
    Points
    5 785
    Par défaut
    Si tu souhaites la stocker dans une variable tu peux la codé en base64, ceci n'est pas tant pour la cacher mais plutôt pour la "simplifié" afin qu'elle soit facilement "digérable" par Visual Studio (sans tous les caractères d’échappements nécessaire) et assignable à une variable.

    Si tu souhaites la stocker en tant que ressource externe tu peux la chiffrer en AES 256 bits CBC avec une passphrase (ceci obligera le pirate à ouvrir ton code et l'analyser)
    Tu peux aussi obfusquer le code (ceci embêtera aussi le pirate )

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/01/2012, 17h22
  2. [Batch] Rechercher et renommer une chaine de caractère complexe dans un fichier texte
    Par mrcanardwc dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 24/06/2011, 13h02
  3. Traitement complexe d'une chaine de caractère
    Par Spinoza23 dans le forum Débuter
    Réponses: 7
    Dernier message: 28/03/2008, 15h36
  4. Réponses: 15
    Dernier message: 23/01/2006, 04h35
  5. Réponses: 4
    Dernier message: 16/01/2006, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo