0

所以,我喜欢复活节彩蛋……这可以追溯到我成为复活节彩蛋档案馆的发现社区的一员。

不过,我也做了很多开源编程。

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

首选 PHP/Python/C/C++ 中的示例,但如果方法解释正确,其他语言也可以。

4

6 回答 6

4
  1. 使用完全优化编译代码。完全剥离二进制文件。
  2. 对代码使用反编译器。

我可以保证结果将完全不可读,你甚至无法阅读它;)

于 2008-09-24T07:11:39.703 回答
3

在这种情况下,您应该使用/编写“混淆器”。为您完成工作的程序。

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

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

于 2008-09-24T06:50:09.850 回答
2

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

于 2009-04-08T09:57:46.227 回答
1

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

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

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

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

于 2009-04-08T09:47:33.727 回答
1

问题是如何在不看起来执行另一个功能的情况下创建看似非混淆的代码(开源)。

于 2008-09-24T06:54:38.683 回答
1

一些明显的方法:

  • 在不破坏内容的情况下,尽可能多地删除评论和空格
  • 连接线
  • 将变量和函数重命名为无意义(最好是 1 个字符)
于 2008-09-24T06:55:21.210 回答