2008-09-24 5 views
0

J'ai donc un penchant pour les oeufs de Pâques ... Cela me rappelle que je fais partie de la communauté des archives de Pâques.Code Obfuscation?

Cependant, je fais aussi beaucoup de programmation open source. Ce que je veux savoir, c'est que, selon vous, est la meilleure façon d'obscurcir SYSTÉMATIQUEMENT et MÉTHODIQUEMENT le code.

Des exemples en PHP/Python/C/C++ sont préférables, mais dans d'autres langues c'est bien, si la méthodologie est correctement expliquée.

+2

Je ne vois pas comment vos affirmations sur les oeufs de Pâques et l'open source se rapportent à l'obscurcissement du code. Votre question est-elle obscurcie? :-) – Hobbo

+0

Je suis peut-être épais ici (peu de sommeil la nuit dernière) mais vous voulez obscurcir le code open source? Est-ce que ce n'est pas contre l'open source?Je dirais plutôt que de le cacher, juste le rendre moins évident. Il suffit d'enterrer l'œuf là où peu de gens vont probablement regarder. –

+0

Je veux que l'on ne sache pas que l'œuf de Pâques est là ... ou que l'on fabrique un code maléfique qui, espérons-le, prendra plus de temps à se révéler que de trébucher sur l'œuf de Pâques. – Mez

Répondre

3

Dans ce cas, vous devez utiliser/écrire un "obfuscator". Un programme qui fait le travail pour vous. La Salamander Obfuscator peut être utilisée pour obscurcir les programmes .Net, mais c'est plus pour empêcher la décompilation, donc pas exactement ce dont vous avez besoin.

Un bon endroit pour en apprendre davantage sur l'obscurcissement en C est International Obfuscated C Code Contest

+2

L'IOCCC n'a rien à voir avec l'obfuscation automatisée. – shoosh

+2

True. Ma ligne de pensée était: savoir comment obscurcir aide à écrire un mécanisme d'obfuscation automatisé. L'IOCCC peut être une source d'inspiration. – Burkhard

1

La question est de savoir comment créer apparemment code non brouillées à la vue (open source) sans qu'il apparaît pour effectuer une autre fonction.

+2

Steganography: l'art et la science de l'écriture des messages cachés de telle sorte que personne, à part l'expéditeur et le destinataire, ne se rende compte qu'il y a un message caché. – Schwern

1

Certaines méthodes évidentes:

  • supprimer les commentaires et autant des espaces que vous pouvez sans choses casser
  • lignes de liaison
  • rebaptiser les variables et les fonctions à sens (de préférence 1 caractère)
4
  1. Compilez le code avec optimisation complète. Complètement dépouiller le binaire.
  2. Utilisez un décompilateur sur le code.

Je peux vous garantir le résultat sera tout à fait illisible si vous ne même être en mesure de le lire;)

1

Pour obscurcissement systématique et méthodique de code, vous ne pouvez pas battre Perl. Si vous voulez quelque chose qui compile à un binaire, il y a toujours APL.

Si vous ciblez le framework .NET, placez votre code source oeuf de pâques dans un fichier de ressources en tant que chaîne binhex. Ensuite, vous pouvez faire en sorte que l'une de vos routines d'initialisation la récupère, la décode et la compile en mémoire. Vous pouvez l'invoquer en utilisant la réflexion.

Si vous avez besoin d'aide pour les aspects techniques de la compilation en mémoire et de l'appel dans l'assemblage résultant, je peux vous donner la bibliothèque que j'ai écrite et un exemple de programme qui l'utilise.

Vous pouvez utiliser cette technologie pour charger des plug-ins, ce qui est une chose légitime à faire et raisonnable dans un initialiseur.

2

Dans l'esprit de renommer des symboles: utilisation abusive et règles de visibilité en nommant différentes variables avec le même nom.