主面板
主面板由 4 个选项卡组成。每个选项卡都旨在完成一系列特殊的任务和设置。
文件
主面板
文件页面指定主程序集、附加程序集和调试文件以及一般保护设置。
如果要同时保护多个程序集或合并/打包程序集,则必须将相应的程序集添加到此列表中。
设置
常规设置
在“设置”页面中,“常规设置”节点启用压缩、视觉样式、目标文件位置和加载屏幕的显示。底部面板为您提供了当前所选属性的描述。
-
应用程序设置
- 自动异常处理 - 如果您不希望受保护的应用程序自动捕获异常,请将此选项设置为 False。
- 压缩 - 如果设置为 True,.NET Reactor 将压缩 .exe 文件以节省磁盘空间和带宽(如果您提供代码供 Internet 下载)。
- 显示加载屏幕 - 在加载受保护的应用程序期间,.NET Reactor 可以显示一个小的“加载”屏幕。
- Dead Code Removal - 此选项删除永远不会在运行时执行的代码。随着程序集大小的减小,它会提高性能并缩短加载时间。
- 数字证书 - 此节点使您能够使用数字代码签名证书自动签署受保护的程序集。
-
嵌入/合并设置
- 高级设置 - 附加文件的高级嵌入和合并设置。
- 嵌入所有程序集 - 如果您嵌入程序集,它们将作为嵌入资源存储在主程序集中。嵌入的依赖项在运行时直接从内存中加载,不会提取到硬盘中。
- Merge All Assemblies - 启用此选项可将多个程序集合并为一个目标程序集。禁用此选项以单独保护所有附加文件。
- Merge Assembly Attributes - 启用此选项后,每个输入程序集的程序集属性将被复制到最终目标程序集中。
- 启用视觉样式 - 如果您希望使用视觉样式,则需要将此选项设置为 True。如果设置为 false,则在程序集中启用视觉样式的任何尝试都将无效。
- Force Admin Privileges - 如果您的软件需要管理员权限,您需要将此选项设置为 true。
- 强名称密钥对文件 -.NET Reactor 自动处理强名称程序集。选择您的密钥文件并指定您的密码,.NET Reactor 会完成剩下的工作。
- Project Targets Mono Framework - 如果您的程序集以 Mono 为目标,则启用此选项。使用了一种不太激进的保护方法,它与 Mono Framework 兼容。
- 目标文件 - .NET Reactor 创建一个包含受保护程序集的新文件。该字段允许您指定该文件的路径和名称。如果留空,.NET Reactor 会将新文件写入默认位置。
保护设置
保护设置页面允许您启用各种保护选项。
- Anti Debug - 启用此选项以检测调试器的附件。如果附加了调试器,当前进程将被终止。
- Anti ILDASM / Suppress Decompilation - 启用此选项以使用反编译工具禁止反编译。
- 防篡改 - 此选项可防止受保护的程序集被黑客工具篡改/修改。在运行时,受保护的程序集会执行多项二进制完整性检查。
- 代码虚拟化 - 将您的代码转换为一组随机指令,这些指令在运行时由虚拟机解释。
- 控制流混淆 - 控制流混淆将方法中的代码转换为意大利面条代码。在保留代码功能的同时,人眼和反编译器极难遵循程序逻辑。反编译器无法将意大利面条代码反编译回原始源代码。
- 隐藏方法调用 - 启用此选项可隐藏对外部和内部方法的调用。方法调用通过在运行时动态构建的委托进行重定向。
- 本机 EXE 文件 - .NET Reactor 能够为您的应用程序生成本机 x86 EXE 文件存根。这样就不可能在反编译器中直接打开受保护的应用程序。反编译器将受保护的应用程序识别为本机 EXE 文件。
- NecroBit - NecroBit 是一种强大的保护技术,可以阻止反编译。NecroBit 将方法中的 CIL 代码替换为加密代码。这样就不可能对您的方法源代码进行反编译/反向工程。
-
混淆 - 此节点允许您选择不同的排除方案,创建映射文件,启用类、方法、属性和变量名称的一般混淆,混淆公共类型,并在混淆名称中使用不可打印的字符。
- 创建映射文件 - 启用创建映射文件以创建一个文件,该文件交叉引用未混淆的名称和混淆的名称,堆栈跟踪反混淆器使用该文件。
- 已启用 - 设置为 True 以混淆所有非公共类和成员名称。
- 排除 - 从混淆中排除类和成员的各种选项。
- 生成短字符串 - 启用此选项可为混淆的类和成员名称生成短字符串。
- Ignore InternalsVisibleTo - 启用此选项以忽略 InternalsVisibleTo 程序集属性。
- 包含 - 对通常被排除在混淆之外的类和成员实施混淆的选项。
- 增量混淆 - 如果您希望 IntelliLock 始终为您的类型和成员名称生成相同的混淆字符串,则需要启用此选项。
- Merge Namespaces - 启用此选项可将所有混淆类型置于单个命名空间中。通过这种方式,您可以防止在 Visual Studio 等开发环境中使用 DLL 的多个混淆命名空间。
- 命名约定 - 定义程序集类和成员的重命名方式。对于大多数情况,建议使用“Stealth”。阅读更多...
- 混淆所有方法参数 - 启用此选项以混淆所有方法参数。
- 混淆公共类型——默认情况下,只有非公共类型和成员会被混淆。启用此选项可混淆程序集中的所有类和成员。此选项仅推荐用于可执行文件 (.exe)。
- Pre-JIT 方法 - 结合本机 EXE 文件功能和 NecroBit,.NET Reactor 能够将小型托管方法转换为真正的 x86 本机代码。只有不影响运行时和平台行为的方法(主要是小方法,如属性 getters/setters...)被转换为本机代码。从本质上讲,此功能具有针对程序集修改的内置保护。
- Public Types Internalization - 如果设置为 True,.NET Reactor 会将应用程序的所有公共类型转换为内部类型。这样类和成员的可访问性就会降低。
- 资源加密和压缩 - .NET Reactor 可以通过压缩和加密托管资源来提高保护和程序集大小。在运行时,当需要时,资源会自动解压缩和解密。
- 字符串加密 - 启用此选项可让 .NET Reactor 加密您的字符串常量和变量。这种加密使黑客更难尝试对您的应用程序进行本机代码修补,因为他将无法识别消息文本或其他有用的字符串,从而使定位修补代码的位置变得更加困难。String Encryption 伪装了内部化的文本,使得破译 CIL 的交互变得更加困难。
- Strong Name Removal Protection - Strong Name Removal Protection 可防止受保护的程序集被黑客工具篡改,因为它们无法使用不同的强名称正确退出程序集。警告,此选项会影响受保护程序集的运行时性能!
锁定设置
使用 .NET Reactor 保护选项保护您的知识产权免遭盗窃或意外泄露后,最大化收入流的下一步是确保您的完整版应用程序在未购买许可证的情况下无法使用。这就是功能丰富的 .NET Reactor 许可系统的用武之地。使用各种“锁”,.NET Reactor 使您能够以多种方式控制应用程序的使用 - 试用版、软件租赁、软件作为一项服务——所有这些都可以使用 .NET Reactor 锁,并且无需对您的源代码进行任何修改。我们建议您花一些时间来了解这些许可证执行选项,因为您花时间这样做是值得的。
Lock Settings 节点是您指定许可控制的地方,您希望 .NET Reactor 在保护程序集时将其构建到您的程序集中。这些锁由 .NET Reactor 包含在受保护程序集中的附加代码实现,无需更改应用程序源代码即可实现。.NET Reactor 许可的强大功能之一是,您可以通过向客户提供许可文件来覆盖您内置到程序集中的设置,这意味着您无需提供程序的单独许可版本 - 试用版和完整版是相同的,唯一的区别是您提供给付费客户的许可证文件。
注意:对于 Compact Framework 和 Silverlight 程序集,这些选项将被忽略。
-
全部过期时过期
- 当设置为 True 时,仅当所有其他启用的锁都已过期时才导致程序集过期。
-
当设置为 False 时,程序集会在任何一个锁过期时过期。这是一个非常强大的选项,使您能够(例如)实施 30 天或 50 次使用的试用期。花一点时间考虑这个选项的灵活性是值得的。
-
内置锁 - 评估期
评估期锁可以创建您的应用程序的试用版,以多种方式限制试用版的使用:-
对话框 - 指定在评估期到期时是否应向用户显示对话框以及要显示的消息
- 已启用 - 设置为 true 以显示评估期已过对话框。
-
消息 - 输入您希望在评估期到期时向用户显示的消息文本。.NET Reactor 可以根据评估设置通过替换各种字符串来自定义消息,如下所示:
- [current_minutes_days] 替换为应用程序安装后的当前天数(对于评估类型 = Trial_Days)或应用程序运行的分钟数(对于评估类型 = Runtime_Minutes)
-
[max_minutes_days] 替换为“时间”字段中指定的值
- 启用 - 启用此锁定。
-
评估类型 - 允许您指定两种不同类型的试用版:
- Trial_Days - 您的应用程序将从首次在计算机上安装之日起运行指定的天数。
- Runtime_Minutes - 用户可以无限次运行应用程序,运行天数不受限制,但应用程序每次运行都会在指定的分钟数后关闭。
- 时间 - 指定评估期的天数或分钟数。
- 消息 - 评估期过期消息。
-
对话框 - 指定在评估期到期时是否应向用户显示对话框以及要显示的消息
-
内置锁 - 到期日期
到期日期锁允许您指定您的应用程序应该到期的确切日期。这很有用,例如对于 Beta 测试版本和软件租赁(您可以将到期日期指定为客户为使用您的软件支付的最后日期的次日)。-
对话框 - 指定在达到到期日期时是否应向用户显示对话框,以及要显示的消息
- 已启用 - 设置为 true 以显示“已达到到期日期”对话框。
- 消息 - 输入您希望在达到到期日期时向用户显示的消息文本。
- Enable - 当设置为 true 时,此锁被启用。
-
到期日期 - 指定应用程序到期的日期。
-
对话框 - 指定在达到到期日期时是否应向用户显示对话框,以及要显示的消息
-
内置锁 - 使用次数
如果启用,此锁会导致您的应用程序在指定的使用次数后过期。-
对话框 - 指定当您的应用程序被使用指定次数时是否应向用户显示对话框,以及要显示的消息
- 已启用 - 设置为 true 以显示“超出使用次数”对话框
-
消息 - 输入您希望在超过使用次数时向用户显示的消息文本。.NET Reactor 可以根据评估设置通过替换各种字符串来自定义消息,如下所示:
- [current_uses] 替换为用户运行您的应用程序的次数
- [max_uses] 替换为此锁的“使用”字段中设置的值。
-
启用 - 启用此锁定。
-
使用 - 指定用户在过期前可以运行您的应用程序的次数。
-
-
Max Number Of Instances
max number of instances 锁允许您指定允许用户同时启动应用程序的最大副本数。请注意,超过指定的实例数不会导致您的应用程序过期。-
对话框 - 指定当用户尝试运行超过指定数量的应用程序实例时是否应向用户显示对话框,以及要显示的消息
- 已启用 - 设置为 true 以显示“超出实例数”对话框
-
消息 - 输入您希望在超过实例数时向用户显示的消息文本。.NET Reactor 可以根据评估设置通过替换各种字符串来自定义消息,如下所示:
- [max_processes] 替换为此锁的“实例”字段中设置的值
-
已启用 - 启用此锁定。
-
实例 - 最大实例数。
-
-
Nag Screen
我们都熟悉应用程序中的 nag 屏幕,提醒我们在试用期结束前购买产品。此选项允许您再次指定是否向您的用户显示导航屏幕,而无需对程序集的源代码进行任何修改。- 启用 - 启用 Nag 屏幕。
- Message - 在 nag 屏幕上显示的消息文本。
-
XDays - .NET Reactor 可以在每次启动应用程序时显示 nag 屏幕(在这种情况下将此选项的值设置为 -1),或者在评估期或到期日期结束前的指定天数。这有助于让用户有一段时间体验您的应用程序,就像它已获得适当许可一样,但随着试用期结束或到期日期临近,开始唠叨他。
-
过期后运行另一个进程 - 在过期后打开或启动另一个应用程序、文件或网站。通常用于将评估用户发送到网页。
-
Run Without License File - 设置为 false 以要求有效的操作许可证。如果为真,则启用内置锁。如果找到有效的许可文件,内置锁设置将被许可文件设置覆盖。
-
到期后关闭进程 - 到期后终止您的应用程序。
-
静态许可证文件名 - 指定许可证文件名或扩展名 (*.myextension)。留空以允许 .NET Reactor 根据程序集名称确定 *.license 文件名。为避免与扩展许可行为的可选方法发生冲突,二进制 .NET Reactor 许可不使用保留给 .NET 许可类的 .LIC 扩展名。
对话框设置
-
对话框界面 - 无论何时要向用户显示消息,.NET Reactor 都会显示一个默认对话框。但是,您可以设计自己的对话框供 .NET Reactor 显示。指定 .NET Reactor 应使用的对话框的完全限定名称 (namespace.dialogname)。示例 C# 和 Visual Basic 项目位于 .NET Reactor 安装文件夹内的 SDK/Customisable MessageBox 文件夹中。
-
对话框标题 - 消息窗口的标题。
-
渐变颜色开始 - 消息窗口的渐变颜色。
-
Gradient Color End - 消息窗口的渐变颜色。
-
License Not Found - 当找不到许可证文件(如果“Run Without License”设置为 false)、找到但已损坏或无效时发出的消息文本。
这么多对话框!
可能的对话框数量可能看起来很多,您可能担心您的客户在锁过期时会看到大量对话框。事实并非如此,.NET Reactor 许可系统只会向您的用户显示一个对话框。.NET Reactor 确定哪个是最相关的对话框并只显示那个对话框。要显示的对话框确定如下:
-
如果“Run Without License File”设置为“True”并且 .NET Reactor 找不到许可证文件,或者许可证文件存在(无论“Run Without License File”是 true 还是 false)并且该许可证文件无效、损坏、不是运行应用程序的 PC 的硬件 ID,或由于某些其他原因无效,.NET Reactor 将显示“无效许可证文件”对话框;
-
如果应用程序已过期,.NET Reactor 将显示第一个锁的对话框,按以下顺序触发应用程序的过期:
- 截止日期
- 评估过期
-
超过使用次数
-
如果应用程序尚未过期,启用 Nag 屏幕,并且 XDAYS 设置为应显示 NAG 屏幕,则显示 NAG 屏幕。
许可证管理器
许可证管理器
.NET Reactor 许可系统允许您在没有许可文件的情况下分发程序集,前提是您已将“Run without license file”设置为 True。当您的客户购买许可证时,您可以使用许可证管理器构建许可证文件来解锁您的应用程序。许可证文件中的锁定设置始终覆盖内置锁定设置。
要创建有效的许可证文件,必须使用与保护应用程序相同的主密钥来创建许可证。这个主密钥是在您创建项目时生成的,必须保存它以保留原始密钥。否则您将无法创建有效的许可证文件。
评估、到期日期和使用次数锁的工作方式与内置锁完全相同,只是许可证文件中的设置会覆盖内置锁的设置。
个人许可行为选项是 .NET Reactor 许可系统的一项特别强大的功能。如果设置为真,对于评估期和使用次数锁定,指定的天数或使用次数特定于特定的许可证文件。例如,假设您的许可证文件启用了使用次数锁定并将使用次数设置为 10。将“Individual License Behaviour”设置为 True,当您向用户颁发第一个许可证时,他有 10 次使用软件可用。如果他随后购买启用了使用次数锁定且使用次数设置为 10 的另一个许可证,则他还有 10 次使用(总共 20 次)。如果“Individual License Behaviour”设置为 false,他总共只有 10 次使用(即 2 个许可文件中的 10 次使用是相同的 10 次使用)。颁发许可证时必须小心“
许可证文件还引入了一种新型锁 - 硬件锁。这允许您创建只能在特定 PC 上使用的许可证,基于标识该 PC 中特定硬件组合的硬件 ID。禁用硬件的许可证文件可以在任何 PC 上使用。使用硬件锁可以防止您的客户购买一个许可证文件并在多台 PC 上使用它。
要创建锁定到特定 PC 硬件的许可证,您必须启用“硬件锁定”并提供客户端 PC 的硬件 ID。您可以使用 .NET Reactor SDK 库在您的应用程序中显示硬件 ID(例如在“关于”对话框中),或者为您的客户提供一个将显示硬件 ID 的程序。
此时可以使用添加工具将附加信息添加到许可证文件中。您的应用程序可以使用 SDK 库中提供的函数访问此信息。
.NET 检查器
.NET 检查器
.NET Inspector 反映了来自主程序集的可提取信息。