Comment Protéger un Fichier Exe de la Décompilation
Quels sont les moyens pour protéger un fichier Exe de l'Ingénierie Inverse.De nombreux transformateurs sont disponibles pour pack un fichier exe.Une telle approche est mentionné dans http://c-madeeasy.blogspot.com/2011/07/protecting-your-c-programexe-files-from.html
Cette méthode est-elle efficace?
Oh, et il n'y a pas une telle chose comme "protéger" un exécutable à partir de la rétro-ingénierie. Si il peut être exécuté, il peut être de la rétro-ingénierie. Packers et les autres outils de simplement soulever la barre pour la rétro-ingénierie.
pouvez certainement faire des programmes qui ne peuvent pas être à l'ingénierie inverse." Est-ce une hypothèse ou un fait? Pourriez-vous fournir un exemple? Vous avez vraiment éveillé mon intérêt. Voulez-vous dire que vous pouvez écrire du code pour une machine donnée, de sorte que la machine produit une sortie pour une entrée donnée et possédant ce morceau de code, vous ne pouvez pas obtenir de toute notion de règles qui conduisent à partir de l'entrée à la sortie et donc ne peut pas réécrire?
Voir ma réponse.....
pouvez certainement faire des programmes qui ne peuvent pas être à l'ingénierie inverse." Est-ce une hypothèse ou un fait? Pourriez-vous fournir un exemple? Vous avez vraiment éveillé mon intérêt. Voulez-vous dire que vous pouvez écrire du code pour une machine donnée, de sorte que la machine produit une sortie pour une entrée donnée et possédant ce morceau de code, vous ne pouvez pas obtenir de toute notion de règles qui conduisent à partir de l'entrée à la sortie et donc ne peut pas réécrire?
Voir ma réponse.....
OriginalL'auteur techno | 2011-07-31
Vous devez vous connecter pour publier un commentaire.
La seule bonne façon de prévenir un programme d'ingénierie inverse ("comprendre") est à réviser sa structure essentiellement à la force de l'adversaire dans la compréhension des Machines de Turing. Essentiellement, ce que vous faites est:
Maintenant un adversaire à regarder votre code doit comprendre ce que le "corriger" le calcul est, en résolvant de manière algorithmique des problèmes difficiles. Il y a des tonnes de NP-difficiles problèmes que personne n'en a résolus efficacement dans la littérature en 40 ans; ses un pari assez bon si votre programme dépend de l'un de ces, que J. Aléatoire d'ingénierie Inverse ne sera pas soudainement être en mesure de les résoudre.
On le fait en transformant le programme original pour dissimuler ses flux de contrôle, et/ou de ses flux de données. Certaines techniques de brouiller le flux de contrôle par la conversion de certains flux de contrôle dans essentiellement de flux de données ("saut indirect par le biais de ce tableau de pointeurs"), puis la mise en œuvre de flux de données algorithmes qui nécessitent des points précis à l'analyse, qui est à la fois prouvable dur et il s'est avéré difficile dans la pratique.
Voici un document qui décrit une variété de techniques plutôt superficiellement, mais son facile à lire:
http://www.cs.sjsu.edu/faculty/stamp/students/kundu_deepti.pdf
Voici une autre qui se concentre sur la façon de s'assurer que l'obscurcissement des transformations conduisent à des résultats qui sont gauranteed être dur de calcul:
http://www.springerlink.com/content/41135jkqxv9l3xme/
Là, que les enquêtes d'une grande variété de flux de contrôle, la transformation des méthodes,
y compris ceux qui fournissent des niveaux de gaurantees sur la sécurité:
http://www.springerlink.com/content/g157gxr14m149l13/
Ce papier dissimule des flux de contrôle dans les programmes binaires avec une faible surcharge:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.167.3773&rang=2
Maintenant, on pourrait aller beaucoup de mal à empêcher un programme d'être décompilé. Mais si le décompilé était impossible de comprendre, tout simplement, vous ne pourriez pas la peine; c'est l'approche que je.
Si vous insistez sur la prévention de la décompilation, vous pouvez attaquer qu'en considérant que la décompilation est destiné à accomplir. La décompilation propose essentiellement que vous pouvez convertir chaque octet de la cible du programme dans un morceau de code. Une façon de faire qui ne parviennent pas, est de s'assurer que l'application peut apparemment utiliser chaque octet
comme les deux instructions de l'ordinateur, et que les données, même si n'est pas réellement le faire, et que la décision de le faire est obscurci par les types de méthodes. Une variation sur ce est d'avoir beaucoup de branches conditionnelles dans le code qui sont en fait des inconditionnel (à l'aide de flux de contrôle les méthodes d'obfuscation); de l'autre côté de la branche tombe dans l'absurdité code est valide, mais les branches de fou endroits dans le code existant. Une autre variante de cette idée est de mettre en œuvre votre programme caché de l'interprète, et de mettre en œuvre la fonctionnalité réelle comme un ensemble de données interprétées.
Une façon amusante de faire de cet échec est de générer le code au moment de l'exécution et de l'exécuter à la volée; la plupart des langages tels que C à peu près aucun moyen de représenter cette.
Un programme construit comme cela serait difficile, décompiler, et encore moins de comprendre après le fait.
Outils qui sont demandés pour un bon travail de protection de code binaire sont listées ici:
https://security.stackexchange.com/questions/1069/any-comprehensive-solutions-for-binary-code-protection-and-anti-reverse-engineeri
Ce qui me rappelle de vx.netlux.org/lib/vzo00.html
les sujets de taille: eq skype 20 mo, il faut donc ajouter de nombreuses à moins que le code etc
OriginalL'auteur Ira Baxter
De l'emballage, de la compression et de toute autre méthode binaire de la protection n'tous servir à entraver ou de la lente reprise de votre code, ils n'ont jamais été et ne sera jamais sûr à 100% des solutions (que la commercialisation de certains voudraient vous faire croire que). En gros, vous avez besoin d'évaluer ce type de niveau de hacker vous êtes contre, si elles sont de script des enfants, puis tout packer qui nécessitent réel effort et le talent (c'est à dire:ceux qui manquent de déballage scripts/programmes/tutoriels) va les en dissuader. Si votre revêtement de personnes avec des compétences et des ressources, alors vous pouvez oublier de garder votre code de sécurité (comme beaucoup de commentaires disent: si le système d'exploitation peut le lire à l'exécuter, si vous le pouvez, il vous suffit de prendre un peu de temps). Si votre problème n'est pas tant votre IP mais plutôt la sécurité de quelque chose que votre programme fonctionne, alors vous pourriez être mieux servis dans la refonte d'une manière où il ne peut pas être atteinte avec la source d'origine (chrome prend cette approche).
Il n'y a pas des protections de sécurité qui sont 100% sécurisées. Tout ce que cryptographique des choses que nous avons n'est pas sûr. La question est, "est la quantité de travail pour briser la sécurité importants, et ça va en décourager certains grands de la classe des attaquants?" Si la réponse est oui, alors le régime de sécurité est utile.
Si la sécurité est une préoccupation vous pouvez préférable de ne pas utiliser le logiciel. Et oui, si le système d'exploitation ou le processeur comprend le binaire, si quelqu'un peut bien. +1
le binaire" est très différente de ce que "comprendre le programme" ou "peut faire arbitraire changements souhaités".
OriginalL'auteur Necrolis
De décompilation est toujours possible. La déclaration
sur votre site lié est un mensonge.
Je ne peux pas vous suivre. Si l'environnement qui exécute le code (que ce soit un incendie, d'un processeur, d'un abaque) fait ce que le programme de la veut faire, alors il est évident que le code a été lu avec succès. Si mon Environnement d'Exécution peut le faire, donc je peux et que par conséquent disassemblation est toujours possible. Ou suis-je trompé?
Voir ma réponse......
OriginalL'auteur Hyperboreus