2

我正在测试 Eziriz .NET Reactor以保护使用 Visual Studio 2010 C# WPF 开发的软件。

当 .NET Reactor 询问要保护哪个程序集时,我感到很困惑。我虽然它应该保护用户将安装的 .msi 文件。但它要求我上传一个 .exe 的程序集文件。因此,我将 .exe 上传到我的 bin/Debug 文件夹中,该文件夹是通过在 Visual Studio 中构建解决方案而生成的。

在 .NET Reactor 上运行保护后,我用 .NET Reflector 打开同一个 .exe 文件,仍然可以看到所有的类和方法。根本没有任何东西受到保护。

我已经阅读了文档 - 它只是不起作用还是我做错了什么?

4

2 回答 2

5

Visual Studio 通常在进行设置时重新构建整个项目。因此,受保护的 exe(您生成的 .NET Reactor)将被 Visual Studio 覆盖。

您应该添加一个Post-build 事件(可在 Visual Studio 项目属性中找到),该事件调用 .NET reactor 以在 DLL 构建后直接对其进行保护。

请注意,该事件应仅在发布构建时运行,否则您将无法调试您的应用程序。问题是您不能仅为发布模式添加构建后事件。解决方案是进行这样的检查:How to run Visual Studio post-build events for debug build only

于 2011-09-01T09:16:09.723 回答
3

.NET Reactor 只能保护您的 .NET 程序集(.exe、.dll),但不能保护 setup.msi 或 setup.exe 等其他文件。

根据 VS 项目的类型(尤其是部署/设置项目),通过 Post-build 事件保护程序集可能为时已晚。

如果您想在设置中包含 VS 项目文件输出(exe/dll),您可以通过以下方式使用 .NET Reactor Visual Studio 插件:

  • 打开 .NET Reactor 并安装 Visual Studio Add-in(.NET Reactor 主菜单项 Help/Visual Studio -> Install Visual Studio 20xx Add-In)。
  • 打开您的 Visual Studio 项目并打开加载项(Visual Studio 主菜单项工具 -> .NET Reactor)。
  • 勾选“启用”
  • 选中“项目输出是部署项目的一部分(设置、ClickOnce)”
  • 您可以通过定义 .NET Reactor 项目文件或通过命令行开关来定义保护设置
  • 如果是 ClickOnce 项目,请添加“-invalid_metadata 0”作为命令行参数(以防止部署问题)
  • 单击确定并允许 .NET Reactor 修改您的 Visual Studio 项目文件

在此处输入图像描述

通过这种方式,Visual Studio 项目文件被修改为在正确的时间访问 .NET Reactor(在您的程序集被编译之后但仍然在它被添加到安装程序包之前)。

于 2020-11-12T14:52:49.627 回答