Question

Y at-il un moyen de masquer à base C executables ou les bibliothèques pour empêcher décompilation?

Était-ce utile?

La solution

Non. Vous pouvez le rendre plus difficile à décompiler mais vous ne pouvez pas empêcher il. Mon conseil est d'arrêter de perdre votre temps et se concentrer plutôt sur la livraison d'un produit fantastique avec des fonctionnalités sans cesse améliorés.

Ensuite, les gens seront prêts à payer pour cela.

Votre principal problème est que la seule façon de rendre votre code un déchiffrable est de faire un-runnable. Tout ce qui peut être chargé dans un PC peut être craqué. Les gens qui font l'ingénierie inverse pour généralement le plaisir, le profit ou la gloire sont très bon dans ce domaine et ne sera pas vraiment le moins par étapes tout ce que vous faites pour essayer de les arrêter.

Ils ont accès à des outils qui rendent le travail de déchiffrer votre code beaucoup plus facile que le travail que vous aurez obscurcissant :-) il vaut beaucoup mieux pour convaincre le monde entier que votre logiciel est la peine d'acheter, et de voir la piraterie comme une opportunité pour éventuellement convertir « voleurs » aux utilisateurs véritables.

Par exemple, savoir pourquoi ils ne paient pas de votre logiciel et essayer de résoudre ce problème. Vous ne serez jamais convertir 100% de la population, certains pirates votre code juste pour le plaisir.

Découvrez la série d'articles en cours d'exécution sur le Techdirt concernant FCF + RtB (se connecter avec les fans, plus la raison acheter). Je l'ai trouvé beaucoup des points soulevés, il pourrait être applicable à l'industrie du logiciel.

Autres conseils

La façon facile : Acheter un logiciel de compression / cryptor / produit obfuscator. Certains sont chers et utilisés dans les jeux, certains ne sont pas. Google pour les mots à la mode par comme "protection contre la copie", etc.

La façon rapide : UPX et mutiler alors la en-tête quelque part il sera toujours chargé en mémoire et exécuter très bien, mais l'utilitaire UPX échouera avec une erreur (essayez le champ de version). 95% abandonnera si l'utilitaire UPX échoue.

La dure : Écrivez votre propre packer

.

oh, j'ai oublié:

real moyen facile : transporterons juste comme il est. Pas vraiment - quoi que vous fassiez les gens peuvent encore désosser votre code. Le montant de l'effort que vous mettez en seulement restreint combien peuvent inverser.

compilation avec une optimisation totale.

"executables brouillées" n'a pas de sens. Le matériel doit être en mesure de « comprendre » le code capable de l'exécuter, et le matériel peut le comprendre, un homme d'ingénierie inverse peut le comprendre. Le plus que vous pouvez faire sera de le rendre plus pénible à comprendre, mais probablement pas par beaucoup, et à un coût.

Pour le rendre plus difficile? Sûr. S'il vous plaît ne pas le faire.

Pour éviter? Non. Tout système qui va exécuter votre binaire aura besoin du logiciel pour décrypter tout système que vous venez avec. Et ils seront en mesure de décompiler que puis voir comment obtenir l'interprète de vos binaires obscurcies.

Je pense que si vous parlez de binaire compilé il n'y a pas grand-chose que vous pouvez faire, (appliquer peut-être seulement UPX ou un outil connexe) qui ne fait pas beaucoup de car il peut sence être inversée.

Si vous parlez d'écrire un nouveau code, essayez code auto acteur de modification C qui sera probablement la manière la plus dure à nouveau ingénieur votre application.

Compiler code C avec un compilateur optimisé ne permet pas de restaurer le code source original ou tout ce qui ressemble même de loin il. Il est beaucoup plus sûr que tous les obfuscators Java ou .NET qui sont populaires ces jours-ci. Assurez-vous de dépouiller l'exécutable si vous voulez le rendre plus petit et cacher les noms de symboles avant la sortie. Cependant, notez que cela rend le débogage ( lorsque l'application se bloque) à peu près impossible.

Même si, si quelqu'un veut vraiment pirater votre logiciel, il le fera au niveau de l'assemblage, éventuellement avec le logiciel du chargeur ou une autre supercherie - peu importe ce que vous essayez de faire pour l'empêcher. De nombreuses entreprises ont essayé, mais aucun n'a réussi. En utilisant hacks comme ça frustrer seulement comme ils l'utilisateur final peut se bloquer l'application ou même planter le débogueur intégré de Windows.

Quitter perdre votre temps à penser à l'obscurcissement pendant que vous devriez améliorerez à la place du programme.

décompilation ( No More Goto) et à la fois pratique d'obscurcissement ( Flowtables ) et la théorie (Indistinguabilité obfuscation) sont des zones actives de recherche et donc il n'y a pas de solutions - seulement des outils, des techniques et de l'expertise. Si vous voulez vraiment que votre code soit imperméable à decomplilation, créer une application web, et mettre le côté serveur de code sensibles. Mais si vous êtes coincé au modèle de donner à quelqu'un un binaire, alors vous devez juger à bon escient le compromis que vous voulez faire entre la sécurité et la performance. Obscurcissement a un coût, et est encore jamais parfait. Certaines options

  • Utilisez une garniture autre que UPX (UPX vient installé dans de nombreux distributions Linux). Le coût de la performance est faible et la plupart des gens ne possèdent pas les compétences pour décompresser manuellement un binaire pour l'analyse statique. Mais expérimentés inverseurs, le coût de décompactage est immatérielle
  • Consultez Tigress, une diversification virtualizer / obfuscateur avec des fonctionnalités riches pour la source à la source obscurcissement C. Pour de meilleures performances, appuyer sur les transformations de support, l'aplatissement de l'écoulement de commande, fusion / division de la fonction, l'encodage littéral
  • Si vous voulez encore plus de protection, consultez les grandes transformations de TIGRESS. Virtualisation, Jiting, etc, mais je suis assez certain ce sont plus chers et vos utilisateurs peuvent remarquer un ralentissement si vous utilisez ces transformations

Ne vous laissez pas décourager par le travail fondateur de Barak et al sur l'impossibilité de la boîte noire obscurcissement. Il prouve que l'impossibilité de obfuscators boîte noire, pas l'impossibilité de beaucoup obscurcissements pratiques et utiles. (Boîte noire obscurcissement étant le fonctionnement interne du programme sont complètement inintelligible) Aussi ne soyez pas découragés par des pirates. Il y a toujours des gens qui en font un point d'acheter votre produit s'il est bon.

Pourquoi obscurcir le code s'il y a un gain commercial de celui-ci? Pour être honnête, supposons que le code commercial est optimisé et assez brouillées, et les travaux, la mère d'un tout embarrassant est arrivé - un petit problème .... vous êtes coincé IMHO, comme le code binaire de production est obscurcie, ce qui rend plus difficile à debug où le pépin se produit et difficile à reproduire, il sera collé sur la liste des BUGS pour toujours ...

Par exemple, en essayant de trouver la trace de la pile, vous finirez par perdre plus de poils que jamais essayer de comprendre le code désassemblé pour travailler WTF se passe là-bas, alèse sans fin de boucles spaghetti. En bref, ne sont pas!

Vous finirez avec perdre de l'argent en essayant de déboguer le pépin ... soit vous devez être un expert brillant assembleur de lire les décharges mémoire et travailler dehors à partir du code Obfuscated ... Ne pas jeter loin, juste obtenir votre beau travail produit et de le vendre ... Bien sûr, il y a beaucoup de gens qui ont du temps sur leurs mains pour le casser par reverse engineering du code ...

Le secret de battre qui suit le principe - communiqué fréquemment, version souvent , apporter des améliorations que vous relâchez souvent, de cette façon les dernières fonctionnalités seraient plus à jour, puis le temps qu'il faut pour un pirate de démonter et travailler dehors! Regardez le code source de Linux, les patchs arrivent, il est libéré ... si vous gardez ce principe à l'esprit, en libérant une nouvelle version avec plus de fonctionnalités à un bien plus! Rythme plus rapide, alors vous êtes gagnant

Une façon de rendre les choses un peu plus difficile est de les emballer. UPX emballera vos fichiers binaires qui le rend plus difficile à décompiler hors de la boîte. Techniquement, il est possible de déballer puis décompiler mais il soulèvera la barre un peu. En supposant que vous utilisez un système d'exploitation de l'utilisateur de la vanille il n'y a pas beaucoup que vous pouvez faire pour empêcher décompilation sans utiliser de vilains tours.

Si vous voulez vraiment pêle-mêle vers le haut, vous avez besoin d'un programme distinct pour le faire. En tant que développeur, vous écrivez votre code sous la forme la plus propre et plus lisible. compilation après que vous exécutez l'application séparée pour faire le faux-fuyants. Vous pouvez acheter ces applications pour environ 100K $.

Si votre intention est d'arrêter le code d'être inversé d'ingénierie qui fonctionnera probablement. Si votre intention est d'empêcher quelqu'un de se fissurer la sécurité alors seul obscurcissement ne s'arrêtera pas un attaquant déterminé. À un certain moment il y a une décision oui / non ils ne ont pas besoin de comprendre le code de constater que ni le contourner.

compilateur Tiny C modifié pour produire un code brouillé: http://blogs.conus.info/node/58

Fournir un soutien théorique pour les réponses ici: en 2001, Barak et. al. a prouvé que l'obscurcissement du programme est impossible général.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top