程序授权托管解决方案IntelliLock主面板功能介绍
IntelliLock是用于许可控制和应用程序的高级100%托管解决方案。.NET Reactor提供了基于本机代码保护的许可系统,而IntelliLock选择了100%托管方式来应用许可和保护功能。
IntelliLock主要功能特点:
- 创建软件的试用版
- 使用许可证文件轻松将您的试用版转换为完全许可版
- 全面的许可证管理
- 软件开发工具包
- 强RSA加密
- 装配合并/打包功能
- 组装保护
- 自动化加载项集成Visual Studio
IntelliLock UI由菜单/栏系统和主面板组成。菜单系统提供对所有功能和工具的访问。主面板提供对IntelliLock项目的分类功能的访问。本文是关于主面板的介绍。
主面板包括5页。每个页面旨在完成一系列特殊的任务和设置。
装配体:在“程序集”页面中,您可以指定多个程序集以及IntelliLock输出的目标路径。装配体列表中的第一个装配体是主装配体。如果定义多个部件,则可以选择合并它们或分别锁定/保护它们。使用“属性”按钮,可以分别为每个程序集设置强名称或数字证书设置。
锁定设定:通过使用各种评估锁,IntelliLock使您能够以多种方式控制组件的使用-试用版,软件租赁,自定义锁,软件即服务-都可以使用IntelliLock锁进行,并且都无需任何修改到您的源代码。建议您花一些时间来了解这些许可证执行选项,因为花在这样做上的时间将是很值得的。
在“锁定设置”页面中,可以指定要在保护时将IntelliLock内置到程序集中的许可控制。这些锁由IntelliLock包括在受保护程序集中的其他代码实现,不需要更改程序集源代码即可实现。IntelliLock许可的强大功能之一是,可以通过向客户提供许可文件来覆盖内置于程序集中的设置,这意味着您无需提供程序的单独许可版本-试用版和完整版完全相同,唯一的不同是您提供给付费客户的许可证文件。
- 到期天数——应用程序将在计算机上首次安装之日起指定的天数内运行。
- 失效日期——失效日期锁使您可以指定程序集应失效的确切日期。例如,对于Beta测试版和软件租赁而言,这很有用(可以在其中将到期日期指定为客户为使用软件付费的最后日期之后的第二天)。
- 执行——此锁(如果启用)使您的应用程序在指定的执行次数后过期。
- 运行时——用户可以无限制地运行该程序集,但是每次运行指定时间后,该附件将关闭。
- 全局时间——此选项设置程序集可以保留在内存中的确切总分钟数。
- 实例——此锁(如果启用)允许您指定允许用户同时运行的应用程序的最大副本数。请注意,超过指定数量的实例不会导致您的应用程序过期。
- 自定义——此锁(如果启用)将启用试用模式,而无需使用上述锁。如果您想使用自己的试用限制,这将非常有用。要确定当前许可证状态,请使用InteliLock SDK。
-
过期行为
- 启用后,仅当所有其他启用的锁都已过期时,才导致程序集过期。
- 禁用后,如果其中一个锁到期,则程序集也会到期。这是一个非常强大的选项,使您能够(例如)实施30天或50次使用的试用期。值得花一点时间考虑此选项提供的灵活性。
- 不带许可证文件运行——设置为false要求有效的许可证才能进行操作。如果为true,则启用启用的Inbuild Locks。如果找到有效的许可证文件,则锁定设置将被许可证文件设置覆盖。要使用此选项,必须至少启用一个试用锁或自定义锁。
- 到期后关闭进程——到期时终止正在运行的进程。
- 在嵌入式资源中搜索——启用此选项可在调用程序集的嵌入式资源中搜索许可证文件。
- 在HDD上搜索——启用此选项可在锁定的程序集中的位置搜索许可证文件。如果您想直接加载许可证,请使用IntelliLock SDK。
- 异步许可证检查——选中此选项可缩短启动时间,因为在后台检查了许可证状态。许可证检查完成后,将立即引发事件EvaluationMonitor.LicenseCheckFinished(IntelliLock.Licensing.dll)。如果启用了此选项,则在引发EvaluationMonitor.LicenseCheckFinished之前,请勿检查许可证状态或调用HardwareID.GetHardwareID(...)。
- 对话框——在这里可以指定根据许可证状态显示的各种对话框。可能出现的对话框数量似乎很大,并且您可能担心当锁到期时客户会看到大量对话框。事实并非如此,IntelliLock许可系统只会向您的用户显示一个对话框。IntelliLock确定哪个是最重要的对话框,并仅显示该对话框。导航屏幕-我们都熟悉应用程序中的导航屏幕,提醒我们在试用期到期之前购买产品。再次使用此选项,您可以指定是否向用户显示导航屏幕,而无需再次修改程序集的源代码。
- 许可证名称——指定许可证文件名称或扩展名(* .myextension)。为避免与扩展许可证行为的可选方法冲突,二进制IntelliLock许可证不使用保留给.NET许可证类的.LIC扩展名。
- 硬件ID——请定义硬件ID生成算法。SDK方法HardwareID.GetHardwareID(...)自动使用该算法。
- 试用ID——更改试用ID以忽略以前的试用并开始新的试用期。如果您要发布软件的新版本并允许用户开始新的试用期,这将很有用。
- 主密钥——要创建有效的许可证文件,必须使用与产生IntelliLock锁定输出相同的主密钥进行许可证创建。创建项目时将生成此主密钥,必须保存该主密钥以保留原始密钥。切勿将万能钥匙交给任何人!
许可证生成器:ntelliLock许可证系统允许在没有许可证文件的情况下分发程序集,前提是已将“无有效许可证运行”设置为True。客户购买许可证时,可以使用许可证生成器或SDK生成许可证文件来解锁程序集。许可证文件中的锁定设置始终会覆盖程序集中存储的设置。
要创建有效的许可证文件,必须使用与锁定程序集相同的主密钥来创建许可证。创建项目时会生成此主密钥,必须保存该主密钥以保留原始密钥,否则将无法生成有效的许可证文件。
- 硬件锁定许可证——这个选项允许你创建许可证,它只能在特定的PC上使用,基于一个硬件ID,它可以识别特定的硬件组合在该PC上。有硬件禁用的许可证文件可以在任何PC上使用。使用硬件锁可以防止客户购买一个许可证文件并在多台pc上使用它。要创建被锁定到特定PC的硬件的许可证,您必须启用“硬件锁定”并提供客户端PC的硬件ID。请使用SDK功能在你的程序集中显示硬件ID(例如在“关于”对话框中)。
- 公差级别——公差级别表示在锁定的程序集将硬件ID识别为无效之前允许更改的硬件组件的数量。
- 只在设计时检查硬件ID——将设计时的使用限制在特定的机器上。对组件库很有用。
- 运行时许可证——生成的许可证在运行时有效。
- 设计时许可——生成的许可在视觉设计器或编译器的设计期间有效。
- 版本锁定——检查此选项以确保许可证仅对特定程序集版本有效。使用星号(*)来定义版本号的哪些部分应该被忽略。在“许可信息”列表上单击鼠标右键,定义进一步的装配限制。
-
应用试用限制到许可证文件——这个选项锁定许可证文件与设置设置在标签“锁定设置”。使用它来延长试用期,完成订阅/基于时间的许可证过期等…
- 作为试用版本——如果您选中这个选项,创建的许可证文件将试用限制(基于您在选项卡“锁定设置”中设置的设置)应用到您的程序集。适用于或延长试用期。
- 作为完整版本——如果选中此选项,则创建的许可证文件将使用在“锁定设置”选项卡中设置的设置将有时间限制的完整版本应用于您的部件。
- 新期间——如果您选中此选项,则创建的许可证文件将使用独立的数据插槽来存储超出天数等。请取消选中此复选框以重复使用已超过天数的ect。
- 强制许可服务器验证——如果您想首先通过服务器验证许可文件,然后才能将其识别为有效的许可文件,您可以在这里将地址设置为相应的web服务。使用菜单/栏项“许可证管理”->NET管理/激活”来创建相应的服务。
- 浮动许可证/并发用户——如果你想要一个浮动许可证,它通过一个全局服务器控制或完全运行在内部网,你可以在这里设置地址为相应的服务。
- 许可信息——您可以在License文件中添加自定义的License信息。定制许可信息允许灵活的许可模式、模块化许可等。您的程序集可以使用SDK库中提供的函数访问这些信息。使用鼠标右键添加程序集属性信息。锁定的程序集会自动将此特殊信息与调用程序集的属性进行比较。只有具有匹配属性的程序集才允许访问锁定的程序集。
保护设置:ntelliLock许可证系统允许在没有许可证文件的情况下分发程序集,前提是已将“无有效许可证运行”设置为True。客户购买许可证时,可以使用许可证生成器或SDK生成许可证文件来解锁程序集。许可证文件中的锁定设置始终会覆盖程序集中存储的设置。
“保护设置”页面允许您启用各种保护选项。
-
模糊处理——IntelliLock提供了彻底的类、类型和变量混淆。混淆是使您的源代码更难(但不是不可能)被人类理解的过程。混淆的工作原理是将您分配给类、方法、属性和变量的有意义的名称替换为无意义的名称。例如,它可能会用
"A4DF3CV89G "替换 "counter "的变量名--对人类来说,这些混淆的名字令人困惑,难以记忆,但对.NET
Framework解释器没有影响。
- 使用不可打印的字符——使用不可打印的字符串来混淆类型和成员名称,但如果您的汇编必须作为安全代码运行,则不能使用。
- Generate Short Strings——启用此选项为您的混淆类和成员名生成短字符串。这可以减少文件的大小。
- Incremental Obfuscation——如果您希望IntelliLock总是为类型和成员名生成相同的混淆字符串,您需要启用这个选项。
- Create Mapping File——创建一个文件,将未混淆的名称与混淆的名称进行交叉引用,该文件将被 Stack Trace Deobfuscator 使用。
- Ignore InternalVisibleTo——启用该选项可以混淆内部类和成员,即使使用了InternalsVisibleTo集合属性。
- Exclusions——如果您想阻止特定类型或成员的混淆,您可以在这里启用相应的选项。请注意,IntelliLock也提供声明式混淆。
- Inclusions——如果您想混淆所有类型或成员(包括公共类型),您需要在这里启用相应的选项。
- 字符串加密 - 掩盖内部化的文本。这种加密使黑客试图对你的程序集进行代码补丁的难度大大增加,因为他将无法识别消息的文本或其他有用的字符串,从而更难确定在哪里对你的代码进行补丁。
- 高级字符串加密 - 除了上面的标准字符串加密,这个选项还增加了特殊的防篡改代码。任何黑客工具对您的代码进行重新编译的尝试都将失败。
- Code Patch Protection - 启用此选项以防止您的源代码被黑客工具篡改。
- 抑制ILDASM - 启用该选项可以抑制使用ILDASM.exe工具反汇编成IL。
- Strong Name Removal Protection - 这个选项可以防止受保护的程序集被黑客工具篡改。
- 加密IL代码 - 启用该选项可以加密你的方法的源代码。在运行时,源代码将在内存中被解密。
- 注入无效元数据 - 注入无效的元数据。大多数工具都无法读取含有无效元数据的程序集。当然,您的程序集对.NET运行时仍然是完全正常的。
- 控制流混淆--混淆程序流,使人眼很难跟踪程序逻辑。第9级代表了最强的控制流混淆。
审定:“完成”页面显示IntelliLock处理程序集时的当前锁定/保护进度。