2010-07-11 11 views
3

Je dois protéger mon programme contre le démontage. La première tentative serait de crypter le programme et de décrypter ses parties si nécessaire. Peut-être chiffrer à nouveau lorsque le code déchiffré est exécuté.Comment crypter un programme de défense contre le démontage?

S'il vous plaît donnez-moi une idée, comment créer ce type de défense. Évidemment, sans assambler cette tâche est difficile, mais je n'ai pas trouvé beaucoup de ressources.

Si vous avez des URL à partager avec les informations relatives à ce problème, partagez-les.

+0

essayez openrce.org pour l'instant –

+1

Voir [Obfuscating binaires basés sur le langage 'C' pour éviter la décompilation] (http://stackoverflow.com/questions/2273610/obfuscating-c-language-based-binaries-to-avoid- décompilation) –

Répondre

14

Ceci est inutile. Si vous n'avez pas le contrôle et la prise en charge du matériel, le code peut toujours être exécuté dans un émulateur qui lirait les instructions décryptées.

Protégez les données pas le code.

+0

Si le binaire était à la fois protégé par mot de passe et auto-décrypté, il serait difficile de le faire fonctionner dans un émulateur, non? –

+0

Non. Votre application Windows sait-elle si elle fonctionne sur un vrai PC gris ou sous VMWare, ou une autre? –

+0

J'aurais dû dire "pour un voleur de le faire dans un émulateur". Certes, le voleur peut exécuter le binaire dans un émulateur, mais il ne connaîtra pas le mot de passe pour déchiffrer le corps principal du binaire, donc il n'ira pas très loin. –

5

C'est juste faux: /. Si vous cryptez/décryptez toutes les fonctions qui seront exécutées, votre programme aura la vitesse comme ... je ne sais pas. Une pierre peut-être?

Il n'y a pas de bonnes solutions pour protéger complètement contre le désassemblage.

+2

J'aime les pierres :) –

+2

Qui ne le fait pas? :) – Burbas

+1

Les pierres peuvent bouger très vite, cependant. Par exemple lorsqu'il est impliqué dans des éboulements. Mais pas s'ils fonctionnent sous Windows. – amphetamachine

3

Regardez this article et aussi this one concernant le cryptage au niveau binaire du code exécutable. À part cela, supprimez simplement vos symboles de débogage et utilisez le drapeau -O2; le bytecode deviendra plus ou moins décompilable.

+0

Bien, même si les symboles de débogage sont rayés, il est toujours possible de "déchiffrer" ce que fait le programme, mais bien sûr, c'est très difficile et cela prend du temps. – Quonux

+0

@Quonux - Je reconnais que ce ne serait pas aussi difficile que le cryptage de code complet, mais cela servirait son but dans la mesure où le code se cache. – amphetamachine

0

Vous devrez avoir le composant de décryptage en clair, non? Ce qui signifie que vous avez donné à l'attaquant la clé pour déverrouiller la boîte, n'est-ce pas? Alors, qu'avez-vous gagné en faisant cela?