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

Langage C++ Discussion :

[cryptographie] Ne pas crypter le début d'un programme pour décrypter la suite


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Terminal S
    Inscrit en
    Juin 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Terminal S

    Informations forums :
    Inscription : Juin 2013
    Messages : 30
    Par défaut [cryptographie] Ne pas crypter le début d'un programme pour décrypter la suite
    Bonjour,

    Voila j'ai un petit probleme je cherche a fair un programme qui s'auto decrypte, le debut du programme permettra de décrypter la suite pour son execution, le tout en c++ mais je sais pas comment m'y prendre sans faire deux programme différent, j'aimerais qu'il soit en un morceau.

    Merci.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Déjà, pourquoi diantre voudrais tu crypter le programme

    Crypter les données utilisées par ton programme n'est il pas suffisant
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre averti
    Homme Profil pro
    Terminal S
    Inscrit en
    Juin 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Terminal S

    Informations forums :
    Inscription : Juin 2013
    Messages : 30
    Par défaut
    Pour le rendre sur ! Que les personnes ne puissent pas le décompiler par exemple..

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Ninored Voir le message
    Pour le rendre sur ! Que les personnes ne puissent pas le décompiler par exemple..
    Vaste couille!!!

    Déjà, tu dois te dire que, à l'exécution, ton programme devra, de toutes manières, être présentée d'une certaine manière (présenter un code binaire exécutable compréhensible par ton processeur).

    Quoi que tu fasses par ailleurs, un "simple" éditeur hexa décimal et un "simple" traducteur de certaines valeur en mnémonique (adda sera toujours représenté de la même manière pour un processeur donné ), suffiront à n'importe qui connaissant un minimum l'assembleur pour arriver à "chipoter" dans ton programme s'il le souhaite

    Et comme il te sera pour le moins difficile de faire en sorte de décrypter la partie cryptée en "just in time" (car cela reviendrait, en gros, à refaire quelque chose de fort proche d'un compilateur ), même si ton exécutable est crypté à la base, il faudra bien qu'il soit décrypté avant d'être exécuté

    De plus, le système d'exploitation refusera généralement que tu ailles "chipoter" au niveau de la mémoire propre à l'application (tu peux modifier certains éléments de la mémoire, mais une grosse partie est protégée et toute tentative de modification de cette partie protégée a de fortes chances de se traduire au final par une erreur de segmentation)

    La seule solution qu'il te resterait est donc de crypter l'ensemble de ton exécutable.

    Mais cela signifie que tu aurais besoin d'un autre exécutable pour effectuer le décryptage afin de charger le programme réel en mémoire.

    Et, du coup, on en arrive au même point: le code binaire exécutable est de nouveau accessible

    Enfin, il faut savoir qu'il existe, effectivement, différents systèmes qui tentent d'essayer de protéger les programmes contre le piratage, qu'il s'agisse de protection incluses dans le media de support, de système basé sur une connexion internet ou autre (les éditeurs de jeux sont très friands de ce genre de système ) mais...:
    1. La plupart de ces systèmes sont généralement payant (et horriblement cher!), ce qui fait qu'il faut avoir la certitude d'avoir un nombre de vente suffisant pour assurer ce sur cout
    2. Ces systèmes ont tendance à pourrir la vie de ceux qui acquièrent légalement le droit d'utiliser l'application (qui n'a jamais ralé de ne plus pouvoir utiliser une application parce que son CD était griffé )
    3. Aucun système n'a prouvé sa réelle efficacité à 100 %: Tout au mieux, cela retarde "un tout petit peu" les véritables pirates qui considèrent, justement, comme un défi de faire sauter les protections les plus avancées
    Non, décidément, avant de t'attaquer à ce genre de sujet, tu devrais te concentrer d'avantage sur
    • le fait de fournir une application efficace et résistante au "test du singe"
    • le fait de sécuriser les communications (s'il y en a), les sauvegardes et les chargements (au minimum en t'assurant que les données sont bien sauvgegardées / rechargée)
    • le fait de sécuriser tes requêtes SQL (s'il y en a): l'erreur à ne surtout pas faire est d'envoyer une requête du genre de SELECT * from users where user=$user and pwd= $pwd
    • j'oublie surement un ou deux points
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre averti
    Homme Profil pro
    Terminal S
    Inscrit en
    Juin 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Terminal S

    Informations forums :
    Inscription : Juin 2013
    Messages : 30
    Par défaut
    Je sais que c'est plutot difficile mais dans ce cas est-il possible de combiner les deux executable ? Car en envoyer deux est trop encombrant.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Tu peux faire en sorte de créer une archive si tu le veux.

    Les bibliothèque de gestion d'archives sont nombreuses, selon le système d'exploitation utilisé (cela va de zip à gzip / tar/ et autres).

    Tu peux aussi envisager de coder "en dur" la partie cryptée comme des données d'un exécutable et de créer un fichier temporaire qui corresponde à l'exécutable décrypté, mais, en toute honnêteté, je crois très sincèrement que tu te fais du mal pour rien

    N'oublie pas non plus que toute algorithme de cryptage se doit d'être inversable (si tu n'arrives pas à décrypter ce qui est crypté, ca ne te sert à rien ) et que tu peux donc largement compter sur un nombre impressionnant de personnes pour essayer de "casser" ton cryptage (ce qui risque d'être fait rapidement si ton algorithme n'est pas un minimum résistant )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ne pas revenir en début de page
    Par QAYS dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2011, 09h26
  2. [WD-2007] Ne pas imprimer le début d'une liste
    Par Mammy Potter dans le forum Word
    Réponses: 6
    Dernier message: 12/04/2011, 16h01
  3. Réponses: 2
    Dernier message: 09/02/2010, 18h59

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