0

我使用 C# .Net 2.0 编写了一个 Windows 应用程序,我想做一些隐藏源代码的事情,所以当任何人使用重构工具时都看不到源代码。我使用了 dotfuscator,但它只是更改了函数名称,而不是所有源代码。

更新:我想隐藏源代码,不是因为隐藏密钥,而是隐藏代码的工作方式。

谢谢,

4

7 回答 7

3

根据定义,IL 在身体中剩余的东西方面非常具有表现力。你只需要:

  • 找到一个更好(阅读:更昂贵)的混淆器
  • 将关键源保持在您的控制之下(例如,通过 Web 服务,因此关键逻辑永远不会在客户端)。
于 2009-02-13T12:50:41.677 回答
2

好吧,源代码是你的,除非你明确提供它,否则你可能只提供编译后的二进制文件。

现在,这些编译的二进制文件是 IL 代码。为了防止有人“反编译”并将您的 IL 代码反向工程回源代码,您需要对 IL 代码进行混淆处理。这是通过代码混淆器完成的。市场上有很多。

您已经使用 dotfuscator 完成了此操作,但是,您说它只更改了函数名称,而不是所有源代码。听起来您正在使用 Visual Studio 附带的 dotfuscator 版本。这实际上是“社区版”,仅包含“专业版”功能的一个子集。请参阅此链接以获取社区版和专业版功能的比较矩阵。

如果您想对代码进行更多的混淆(特别是为了防止人们使用 Reflector 等工具),您将需要 Dotfuscator 的专业版,或其他包含类似功能的代码混淆器产品。

于 2009-02-13T13:08:06.097 回答
1

一旦人们掌握了您的二进制文件,他们就可以对其进行逆向工程。编译为字节码的语言(C# 和 Java)更容易,编译为特定于 CPU 的二进制文件的语言更难,但总是有可能的。面对它。

于 2009-02-13T12:56:34.220 回答
1

尝试 SmartAssembly http://www.smartassembly.com/index.aspx

于 2009-02-13T12:59:25.493 回答
0

混淆软件可以隐藏方法内容的长度是有限的,从根本上改变内部结构而不影响正确性(当然还有性能)是非常困难的。

值得注意的是,带有许多小方法的代码一旦被混淆,就会变得更难理解,尤其是当采用了在方法之间共享名称的技术时,这些方法看起来会与眼睛发生冲突,但不会与运行时发生冲突。

一些混淆器允许生成在任何目标语言中都无法表示的构造,例如 CIL 中允许的所有操作的集合远远超过通过 c# 甚至 C++/CLI 表达的那些。但是,这通常需要显式设置才能启用(因为它可能会导致问题)。这可能会导致反编译器失败,但有些人会尽力而为并解决它(也许内联它无法处理的 il )。

如果您将 pdb 与应用程序一起分发,那么由于额外的符号,可以推断出更多。

于 2009-02-13T12:50:43.110 回答
0

只是符号重命名不足以对您的应用程序进行逆向工程。您还需要控制流混淆、字符串加密、资源保护、元数据减少、反反射器防御等。试试支持所有这些以及更多功能的Crypto Obfuscator 。

于 2009-11-20T09:19:18.880 回答
0

为您的应用程序创建一个设置项目,并将设置安装在您朋友的计算机上,就像一个软件一样。使用 microsoft visual studio 创建安装项目有 5 个步骤。

第 1 步:创建一个示例 .Net 项目。在以发布模式构建您的项目之后,我将此项目命名为“TestProject”。第 2 步:使用右键单击您的解决方案添加新项目并选择安装项目并将其命名为“TestSetup”。第 3 步:右键单击设置项目并添加主输出,然后选择显示的项目。步骤 4:右键单击安装项目并选择查看-> 文件系统 -> 应用程序文件夹。现在复制您想要在安装文件夹中的内容。第 5 步:现在转到我们的项目文件夹并打开发布文件夹,您可以在此处获取 setup.exe 文件。双击“TestSetup”文件并将您的项目安装到您和其他计算机上。

于 2013-12-10T11:34:34.397 回答