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 Delphi Discussion :

Portion de code exécutable déportée sur clé USB


Sujet :

Langage Delphi

  1. #21
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    c'est possible sans cela...ceci dit, je ne sais pas ce que ça donne avec un dongle USB mais à je me souviens que sous DOS avec les dongles sur port série, il existait des petits programmes qui enregistraient les échangent entre le dongle et le soft pour pouvoir reproduire un dongle virtuel...j'imagine que la même technique est utilisable en USB et ça rend le piratage on ne peut plus simple.
    A titre d'information j'avais la même idée mais j'ai vu que maintenant les dongles sont équipés
    de processeurs qui génèrent des échanges à contenus et vitesses aléatoires. Je n'en sais pas beaucoup plus, mais cela semble démonter d'emblée, ou du moins compliquer singulièrement, l'idée d'un simple espionnage et d'une simple reproduction des échanges dongle <--> application.

  2. #22
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Caribensila Voir le message
    Pour faire tout ça en mémoire, je pense que tu devras utiliser les fichiers paginés.
    Voir :
    - CreateFileMapping
    - MapViewOfFile
    - UnMapViewOfFile
    - CloseHandle

    Mais si tu amputes ton exe des 50 derniers octets à l'aveuglette, il risque fort de se crasher lamentablement au lancement en cas d'absence du dongle. Ca ne fera pas très "pro".
    tout à fait. Mais ça à aussi un effet intéressant: la personne pourra penser que le prog
    n'est pas protégé mais non fonctionnel; Et du coup ne pas essayer de le cracker.

  3. #23
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Citation Envoyé par Eric Beaumard Voir le message
    Mais ça à aussi un effet intéressant: la personne pourra penser que le prog n'est pas protégé mais non fonctionnel; Et du coup ne pas essayer de le cracker.
    Hmm... Ce serait concevable dans un monde presque parfait où ce serait les utilisateurs qui crackent les logiciels dont ils ont besoin.
    Mais le monde étant bien plus compliqué, c'est pas du tout comme cela que ça se passe.

    - En fait, il y a d'un côté les crackeurs qui s'amusent à cracker, même les logiciels dont ils seraient incapables de se servir. Et plus c'est difficile, plus ils s'y acharneront, par plaisir intellectuel. Autant dire qu'ils y arrivent toujours. Evidemment, avides de reconnaissance, ces crackers mettent aussitôt leurs exploits sur Internet.
    - D'un autre côté, il y a des utilisateurs potentiels qui savent exactement ce dont ils ont besoin, mais qui n'ont nulle envie de rétribuer les auteurs. Autant dire les "vrais voleurs", qui tireront profits de ces logiciels.

    Les crackeurs donc, pas toujours des imbéciles, ne s'amuseront pas à cracker un logiciel non fonctionnel. Ils crackeront bel et bien ton logiciel qui fonctionne.

    ----------------------------

    Au sujet de la protection de logiciel, je voudrais partager une petite expérience et réflexion que j'ai eu il y a quelques années.

    A l'époque sortait Catia, un superbe logiciel de Dassault Systèmes, qui permet de dessiner et "calculer" aussi bien des avions de chasse que des centrifugeuses pour enrichir l'uranium (entre autres, bien sûr). Un truc pour techniciens et ingénieurs y ayant été formés; pas pour le premier péquenaud venu quoi.

    J'ai été très surpris d'en trouver des versions crackées sur Internet quelques semaines plus tard (comme par hasard, c'est une amie chinoise qui m'avait prévenu). J'en ai téléchargée une... et cette version était a priori tout à fait opérationnelle !

    Mais je n'ai pas pu m'empêcher de me poser quelques questions...

    - Et si ces versions crackées avaient été mises sur Internet par Dassault Systèmes lui-même ?
    Au cas où, par exemple, si tu voulais fabriquer une bombe atomique, qu'au final, sans message d'erreur, celle-ci te pète à la gueule au 1er essai ?
    Pareil pour dessiner un "Tupolev" crasheur, bien sûr, etc...

    Bref, une politique d'entreprise qui consisterait à sortir en même temps que la version officielle d'un logiciel, ses versions foireuses "pseudo-crackées".
    Cela me semble être une bonne solution au piratage. Nul ne pourrait jamais avoir la certidude que sa version piratée du logiciel soit vraiment fiable.

    A mon avis, la protection de logiciel passera par ce genre de méthodes, plus psychologiques que techniques.

  4. #24
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Eric Beaumard Voir le message
    tout à fait. Mais ça à aussi un effet intéressant: la personne pourra penser que le prog
    n'est pas protégé mais non fonctionnel; Et du coup ne pas essayer de le cracker.
    en fait les 50 derniers octets ont toutes les chances de ne servir à rien

    la taille d'un fichier est multiple de 512 octets, tu peux donc avoir jusque 511 octets inutiles en fin de fichier. Et tu trouves là des ressources, des informations de debug et ce genre de choses qui ne sont pas vitales au programme.

    et encore une fois, à chaque mise à jour du programme il faudra mettre à jour le dongle...c'est pas très intéressant...ou alors ton programme de mise à jour contiendra le code nécessaire pour lire/écrire le dongle et le pirate n'aura plus qu'à s'en servir
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 162
    Points : 124
    Points
    124
    Par défaut
    Imaginons qu'en plusieurs endroits, le programme envoie un nombre aléatoire au dongle, et que celui-ci renvoie une donnée après un traitement particulier.
    Et que, d'autre part, le programme ne se lance pas si la taille de son fichier n'est pas la même que l'originale.
    Le pirate se fera quand même quelques cheveux blancs, non ?

  6. #26
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Teddy Voir le message
    Imaginons qu'en plusieurs endroits, le programme envoie un nombre aléatoire au dongle, et que celui-ci renvoie une donnée après un traitement particulier.
    Et que, d'autre part, le programme ne se lance pas si la taille de son fichier n'est pas la même que l'originale.
    Le pirate se fera quand même quelques cheveux blancs, non ?
    des cheveux blancs, je ne suis pas sur

    le principe est toujours le même, trouver les procédures qui font les tests et leur faire renvoyer TRUE...

    en gros on remplace ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function VerifierDongle: Boolean;
    begin
      Result := GetDongleValueFor(456) = 789;
    end;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function VerifierDongle: Boolean;
    begin
      Result := True;
    end;
    après c'est plus ou moins complexe mais c'est toujours faisable...et là tu images bien qu'appeler cette procédure 15 fois dans le programme n'y change rien, il suffit d'un patch
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 162
    Points : 124
    Points
    124
    Par défaut
    Bien vu, mais dans ce cas je doute que la taille et la checksum du fichier exécutable modifié soient les mêmes qu'à l'origine...

  8. #28
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Teddy Voir le message
    Bien vu, mais dans ce cas je doute que la taille et la checksum du fichier exécutable modifié soient les mêmes qu'à l'origine...
    tu veux parler de la fonction function VerifierTailleduFichier:Boolean ?

    même punition

    en plus tu as des astuces pour faciliter la localisation de ces méthodes...imagine que le programme affiche un message "version non valide du logiciel, veuillez contacter le support"...tu passes en debug et là surprise, le programme vient de faire appel à une procédure qui fait des trucs bizarre mais retourne un boolean

    bref, à mon humble avis, le dongle n'est pas une protection plus coriace qu'une autre, surtout si tu passes par une bibliothèque - ou pire une DLL - pour interroger le dongle Même l'industrie du jeu video - qui pourtant se donne les moyens - n'a pas réussit à éviter le piratage...bon ils sont peut-être aussi plus visés que les soft d'entreprise
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 392
    Points : 635
    Points
    635
    Par défaut
    une piste serait de crypter les dfm avec une clef basé sur le checksum de l'exe tout ou parti) et de les charger en utilisant ReadComponentResFile

    si le checksum n'est pas valide car l'exe est patché la dfm n'est pas correctement décryptée et la fiche ne pourra pas s'exécuter

    cela se contourne mais c'est plus compliqué qu'un simple boolean à inverser

  10. #30
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    si le checksum n'est pas valide car l'exe est patché
    la fonction CheckSum sera patchée pour retourner le bon...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  11. #31
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Ce que je fais assez simplement est un peu l'inverse de ce qui a été dit

    Plutôt que de faire un test dans une procédure, je passe par une variable procédurale qui pointe par défaut sur une procédure qui ne fait rien !

    Le test effectif est fait soit dans un thread, soit carrément dans une autre application (je l'ai même eu mis dans un service) et envoi un message à l'application uniquement si le test est ok. S'il l'est, la variable est redirigée sur la procédure réelle.

    La nouvelle assignation se fait par un simple PostMessage en utilisant n'importe quel message standard. Par exemple WM_Resize avec un wParam invalide qui pourra être filtré par WndProc.

    Bref, aucun test facilement accessible en pas à pas, des messages standards, une redirection invisible et impossible à résoudre sans clé

  12. #32
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Dongles font partie de la reconnaissance physique du pc et pour limiter les copies ... éviter le crack est une autre affaire

  13. #33
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    tu veux parler de la fonction function VerifierTailleduFichier:Boolean ?

    même punition

    en plus tu as des astuces pour faciliter la localisation de ces méthodes...imagine que le programme affiche un message "version non valide du logiciel, veuillez contacter le support"...tu passes en debug et là surprise, le programme vient de faire appel à une procédure qui fait des trucs bizarre mais retourne un boolean

    bref, à mon humble avis, le dongle n'est pas une protection plus coriace qu'une autre, surtout si tu passes par une bibliothèque - ou pire une DLL - pour interroger le dongle Même l'industrie du jeu video - qui pourtant se donne les moyens - n'a pas réussit à éviter le piratage...bon ils sont peut-être aussi plus visés que les soft d'entreprise

    J'ai vu sur le net que les Dongles de maintenant peuvent abriter des processeurs et de la mémoire. On peut alors imaginer déporter sur le dongle une partie vitale du code de l'application. Le hacker pourra toujours espionner les échanges il ne coupera pas à la nécessité de comprendre la portion de programme manquante et de la reprogrammer dans l'application. Dans mon domaine scientifique par exemple il y a des portions de calculs complexes qui peuvent très bien être déportées de cette façon et je souhaite bien du plaisir à celui qui n'aura devant lui que des échantillons d'échange de données entre l'application et le dongle pour retrouver le code de la procédure déportée. Rien d'impossible, mais rien de forcément humain non plus ...

    Se pose la question de lire les données écrites sur le dongle. Là, rien d'impossible non plus. De gros moyens électroniques peuvent être utilisés pour cela. Tout dépend encore une fois du ratio:
    (Technicité des hackers + argent à gagner)/(niveau de protection de l'application).

Discussions similaires

  1. Temps d'exécution des portions de codes
    Par xela dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 23/01/2007, 22h29
  2. [java.lang.class] Votre avis sur une portion de code
    Par be_tnt dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2006, 16h55
  3. Réponses: 7
    Dernier message: 11/09/2006, 14h23
  4. gestion d'erreur resume next sur une portion de code
    Par aarlock dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 15h28
  5. Réponses: 4
    Dernier message: 01/02/2006, 14h56

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