代码混淆?

时间:2008-09-24 06:15:53

标签: obfuscation

所以,我喜欢复活节彩蛋......这可以追溯到我成为复活节彩蛋档案馆的一部分。

但是,我也做了很多开源编程。

我想知道的是,您认为什么是系统地和方法上混淆代码的最佳方法。

PHP / Python / C / C ++中的示例首选,但在其他语言中如果方法得到适当解释则很好。

6 个答案:

答案 0 :(得分:4)

  1. 使用完全优化编译代码。完全删除二进制文件。
  2. 在代码上使用反编译器。
  3. 我可以保证结果完全不可读,你甚至无法阅读;)

答案 1 :(得分:3)

在这种情况下,你应该使用/写一个“混淆器”。为您完成工作的计划。

Salamander Obfuscator可用于混淆.Net程序,但更多的是防止反编译,因此不完全符合您的需要。

在C中学习混淆的好地方是International Obfuscated C Code Contest

答案 2 :(得分:2)

本着重命名符号的精神:通过命名具有相同名称的不同变量来过度使用范围和可见性规则。

答案 3 :(得分:1)

问题是如何在没有看起来执行其他功能的情况下创建看似非混淆的代码(开源)。

答案 4 :(得分:1)

一些明显的方法:

  • 删除评论和尽可能多的空白而不会破坏事情
  • 加入行
  • 将变量和函数重命名为无意义(最好是1个字符)

答案 5 :(得分:1)

对于代码的系统化和有条理的混淆,你无法击败Perl。如果你想要编译成二进制文件的东西,总会有APL。

如果您的目标是.NET框架,请将您的复活节彩蛋源代码作为binhex字符串放在资源文件中。然后你可以让你的一个初始化例程获取它,解码它并将其编译到内存中。您可以使用反射调用它。

如果您需要有关编译到内存并调用生成的程序集的技术方面的帮助,我可以为您提供我编写的库和使用它的示例程序。

您可以使用此技术加载插件,这在初始化设备中是合法的,也是合理的。