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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Par défaut Portion de code exécutable déportée sur clé USB
    Bonjour,

    Je me suis posé la question suivante, ceci pour mettre au point
    une protection de mes programmes par dongle:

    Je dispose sur mes dongles de quelques 2.5 ko octets accessibles
    en R/W depuis mes programmes et pas par l'explorer de fichier
    de windows.

    Je voudrais déporter sur le dongle une portion du code procédural
    du programme pour que, faute d'avoir ce code, un éventuel hackeur
    ait à programmer ce qui manque dont à comprendre le programme
    et à savoir programmer.

    Et puisque je veux faire cela avec plusieurs programmes je ne voudrais pas,
    idéalement, avoir à me creuser la tête pour générer de tables d'éxécution
    codées sur un octet adressant des procédures/functions nécessaires
    au programme.


    J'ai donc pensé à amputer, par exemple, l'exécutable de ces 50 derniers octets
    et de les mettre sur le dongle. Un autre programme, stocké sur le PC serait
    chargé de prendre la portion majeure du programme, de la fusionner/compléter
    avec les 50 octets lu sur le Dongle et de l'éxécuter.

    J'ai donc essayé, "bêtement", pour voir, de prendre un toto.exe, de renomme en toto.txt
    et de le séparer en deux fichiers toto1.txt (donc toto.txt amputé de ses 50 derniers octets)
    et toto2.txt fait du reste. Ensuite j'ai essayé, toujours avex avec des copier-coller de reformer
    toto.txt, de le renommer, et de le lancer, sans succès ...

    Des idées ?

    Eric;

  2. #2
    Membre très actif
    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
    Par défaut
    Bonjour,

    Utilise TFileStream pour segmenter/recoller ton .exe.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Par défaut
    Ok, j'avais déjà entendu parler de ces objets. Par contre, et pour ma culture personnelle, quelqu'un peut-il m'expliquer pourquoi la segmentation/refusion du .exe en passant par des copier-coller sur la version ascii de l'exe ne redonne pas un exe fonctionnel (si je ne me suis pas trompé dans la manipulation) ? Qu'est-ce qui est perdu ? j'ai utilisé le bloc note, peut-être que c'est lui omet d'afficher/copier des octets. Il faudrait peut-être essayer avec un éditeur plus professionnel, comme Uedit ou autre. Quelqu'un confirme-t-il ce que je dis ?

    Eric.


    Citation Envoyé par Caribensila Voir le message
    Bonjour,

    Utilise TFileStream pour segmenter/recoller ton .exe.

  4. #4
    Membre très actif
    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
    Par défaut
    Citation Envoyé par Eric Beaumard Voir le message
    Qu'est-ce qui est perdu ?
    Probablement des caractères invisibles dans le Bloc-notes.

    Tu peux peut-être essayer WordPad...

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Par défaut
    J'avais aussi pensé à ce que le programme à protéger soit lançable mais pas complètement fonctionnel. Et que pour qu'il le devienne il charge 50 octets du dongle et les introduise directement
    en RAM dans la zone de cette RAM où est stocké l'exécutable. Est-il possible d'écrire des octets dans la RAM et de lancer l'éxécution sur cette zone ? ou, d'une manière ou d'une autre, de charger une portion de l'exécutable, pendant l'exécution ?

    Je donne ma langue au chat ...

    Eric.

  6. #6
    Membre très actif
    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
    Par défaut
    Le plus simple, pour commencer, serait de reconstruire ton .exe sur le disque dur, de le lancer avec ShellExecute par exemple, puis de détruire aussitôt l'exe ainsi reconstruit...

  7. #7
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Tu peux découper avec ça et recomposer avec la commande COPY .

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Par défaut
    Citation Envoyé par philnext Voir le message
    Tu peux découper avec ça et recomposer avec la commande COPY .
    Merci Philnext, voilà un outil bien pratique. Mais peux-tu me dire comment tu verrais le problème suivant: Premièrement je dois scinder l'executable en deux fichiers. Un qui fait 50 octets (ou à peu près, je n'ai que 2.5 ko de disponibles sur la clé et j'ai plusieurs programmes à protéger) et l'autre le reste. Admettons que ton programme accepte de créer un fichier de 50 octets (je n'ai jamais vu un fichier de moins de 1 ko), il faudra que je les mette sur le dongle et que je les sorte du dongle sur le disque, sans qu'aucun octet ne soient changés ou oubliés, avant recomposition. Et là ....



    Eric

  9. #9
    Membre très actif
    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
    Par défaut
    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".

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