Partage
  • Partager sur Facebook
  • Partager sur Twitter

empêcher la décompilation d'un exe: la temporalité

renommage continu

    30 août 2023 à 22:35:44

    Bonjour,

    Je n'utilise jamais cette fonction de décompileur d'un .exe pour en connaître le contenu, et je n'essaie même pas avec Google de chercher comment procéder, je n'ai pas trop envie que leur algorithme me catégorise type hacker à surveiller... plut^ot envie d'être tranquille.

    Et donc, comme je travaille en tant que Travailleur Indépendant, même si mon métier principal n'est pas le codage, sur la génération de logiciels audio, en complément de ce qui se fait déjà dans le domaine qui reste tout à fait valable, je travaille aussi sur ce point de détail: ne pas pouvoir lire le code binaire du résultat du codage d'un .exe.

    J'ai pensé placer le code source défiitivement dans un dossier exactement similaire à un fichier .dta, la DataTransferArea, qui enferme un processus logiciel en empêchant tout accès extérieur, chaque fois que le nom du fichier du .exe est tapuscrit quelque part. Je n'ai pas encore tout à fait trouvé la solution, mais je pense qu'il y a quelque chose de possible, en inversant le processus: tant que le fichier .exe n'est pas appelé, le dossier dans lequel sont la totalité des fichiers est un dossier type .dta, et, au moment d'appeler le .exe, alors, le logiciel s'exécute. Ceci peut nécessiter juste de placer en seul accès possible pour exécuter le .exe, un raccourci.

    Mais alors, comment sécuriser l'accès d'un tel dossier, puisque le dossier .dta, il n'y en a qu'un, ou un seul par pile/thread?

    J'ai pensé, au lieu de faire une rotation d'un bit vers la droite ou vers la gauche comme j'en ai déjà vu le conseil, faire une fonction qui calcule un nom de fichier aléatoire toutes les secondes, pour renommer le fichier... toutes les secondes... ou toutes les 50 ms.

    Ceci vous semble-t-il réaliste? Dois-je ajouter une fonction async? Comment code-t-on le async en Assembleur? Je pense à ça, parce que je n'ai pas envie que mon logiciel bloque tout rien qu'en le téléchargeant, si je l'utilise et si je le vends (un logiciel audio, ça peut intéresser du monde).

    Mais dans un premier temps, est-ce que c'est réaliste, à votre avis?

    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2023 à 2:44:29

      > est-ce que c'est réaliste, à votre avis?

      Non, absolument pas. À partir du moment où le logiciel existe quelque part sur le poste client, il peut être lu. Renommer de manière aléatoire ni changera rien puisque 1) on peut shooter le programme qui fait le renommage ou on peut lire le disque comme un disque externe 2) on peut se brancher sur des événements FS et retrouver le fichier sans connaître le nom 3) puisque le but est de l’exécuté, le nom est trouvable. Puis à partir du moment où l'exécutable se lance, on peut lire sa mémoire et ce qu'il contient.

      Empêcher la décompilation n'est pas possible, mais l'exercice peut être rendu plus difficile en passant par l'offuscation pour rendre l'asm moins compréhensible en injectant plein de chose inutile qui auront malheureusement un impact sur les performances.

      Par contre, on peut rendre le logiciel accessible uniquement à travers un service web accessible via une API. Pas besoin de partager le logiciel, mais il faut maintenir un serveur et des autorisations d'accès.

      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2023 à 4:54:50

        Pour avoir déjà fait de la décompilation (plutôt desassemblage) dans le passé, ce n'est pas une mince affaire.

        Une chose qui embête beaucoup est la présence de tables de branchements comme les switch dans les langages de haut niveau.

        On ne sait jamais la longueur de la table.

        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          12 octobre 2023 à 20:21:40

          Je comprends aussi qu'il y a une raison de sécurité dans le fait de pouvoir savoir ce qu'un fichier externe à un ordinateur contient, avant del'exécuter, et donc, que la lecture même d'un *.exe soit possible ne serait-ce que pour un anti-virus.

          La solution des tables n'est apparemment pas une solution définitive et l'offuscation non plus, et la raison de sécurité est inaliénable. o.k. pour tout ça.

          Mais si je m'en réfère par exemple à une certification de conformité de sécurité par l'ANSSI, alors, sans aliéner le principe de précaution, j'obtiens ma possibilité pour empêcher définitivement d'ouvrir et décompiler mon *.exe. C'est cette possibilité-là que je cherche à coder.

          Il est ensuite tout à fait vrai et vraisemblable de coder une application, même sous forme de boutons à cliquer avec des paramètres texte à remplir dans un formulaire, au format HTML avec un peu de JS et même sous forme de fichiers *.hta pour pouvoir lancer des utilitaires si besoin est, avec des liens dans internet pour ne laisser rien ou quasiment rien du codage en-dehors d'un serveur.

          Ca, j'y avais pensé... sauf qu'il y a quand même l'hébergeur qui est au courant de ce qu'il y a dans le code-source.

          Je m'explique. Je code un logiciel audio. Pour des raisons de vitesse d'exécution, j'ai gardé les processus mais cherche un langage plus rapide que ce que j'ai déjà codé, à peu près cent mille lignes de code. Déjà là, ça peut décourager. Mais ce n'est pas suffisant.

          Je voudrais inclure un logiciel que j'ai déjà codé pour empêcher le piratage de fichiers media par exemple, mes morceaux de musique, puisque j'exerce les métiers culturels et artistiques (ape/naf 9001Z).

          Ce logiciel précédent utilise un ou plusieurs algorithmes de cryptage que je ne peux pas déclarer à l'ANSSI, car c'est le logiciel qui choisit l'ordre chronologique et le nombre de processus, donc, l'algorithme est généré par le logiciel à chaque besoin d'un code secret à calculer... normalement une seule fois ensuite le fichier contenant l'algorithme s'autodétruit avec une durée de vie du logiciel d'un an jour pour jour.

          De plus, j'ai codé les paramètres de l'algorithme les yeux fermés.

          Et c'est ça qui est la sécurité absolue de base: personne ne connaît ni ne peut connaître l'algorithme utilisé, même moi, qui n'avais pas les yeux ouverts devant le clavier de l'ordinateur quand j'ai codé les noms de variables, etc... à moins de suivre le microprocesseur en train de calculer, ce qui me semble très improbable... à moins que... et je me méfie.

          En résumé, si une personne peut connaître le contenu, alors, le piratage devient possible... et l'argent du trafic d'art et du téléchargement, ça fait des sommes astronomiques pendant que le frigo est vide, donc coder un logiciel audio, très bien, mais si tout le monde peut obtenir le résultat gratuitement, je ne vois pas trop si ç'a un avenir.

          Est-ce qu'il y a une solution dans le fait de capturer toute tentative d'intrusion? Par exemple, repérer un copier-coller, ou obliger à placer le logiciel dans un dossier spécifique, du type d'un fichier DTA? Dans ce cas-là, est-ce que tout le code-source peut être poussé sur une pile avec un index par ligne de code, à l'intérieur d'un fichier DTA de façon à supprimer l'observable des événements, ce qui nécessiterait un fichier de ce type, DTA, qui ferait une pile complète de 65 segments? Je pense à ça sans avoir trop étudié les fichiers DTA, mais, si j'ai bien compris, c'est le type de fichier qui empêche un processus logiciel de parasiter un précédent processus logiciel, et qui permet de clore un processus logiciel dans une boîte fermée étanche.

          -
          Edité par NirmelMouchiquel2 12 octobre 2023 à 20:44:49

          • Partager sur Facebook
          • Partager sur Twitter

          empêcher la décompilation d'un exe: la temporalité

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown