2008-09-24 177 views
0

所以,我喜欢复活节彩蛋...这可以追溯到我成为复活节彩蛋档案社区的一部分。代码混淆?

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

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

首选PHP/Python/C/C++中的示例,但在其他语言中的示例是正确的,如果方法得到正确解释。

+2

我没有看到你关于复活节彩蛋和开源的声明与代码混淆有关。你的问题被混淆了吗? :-) – Hobbo 2008-09-24 06:45:58

+0

我可能会在这里很沉闷(昨晚的小睡觉),但你想混淆开源代码?这不是针对开源真正的那种吗?我会说,而不是隐藏它,只是让它不那么明显。只要把鸡蛋埋在没有多少人可能会看的地方。 – 2008-09-24 07:17:58

+0

我想说清楚,复活节彩蛋基本上是存在的......或者制作一些邪恶的代码,希望花费更长时间才能发现它比偶然发现复活节彩蛋时更容易。 – Mez 2008-09-24 07:30:17

回答

3

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

Salamander混淆器可以用来混淆.Net程序,但它更多的是防止反编译,因此不完全是你所需要的。

了解用C混淆的好地方是International Obfuscated C Code Contest

1

的问题是,如何在不出现它执行另一个函数来创建在众目睽睽(开源)看似非混淆代码。

1

一些明显的方法:

  • 删除注释,并尽可能空白,你可以不打破东西
  • 结合线
  • 重命名变量和函数是无意义的(最好是1个字符)
4
  1. 通过完全优化编译代码。完全去掉二进制文件。
  2. 在代码上使用反编译器。

我可以保证结果会是这样完全不可读的,你甚至不会能够阅读它;)

1

有关的代码系统,有条理的混淆,你不能击败的Perl。如果你想要一些编译成二进制文件的东西,总会有APL。

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

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

你可以使用这项技术来加载插件,这是一个合理的事情要做和合理的初始化。

2

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