程序文件最为强大和最为复杂的保护机制。程序和保护的代码部分均为重新编译的机器语言(一种特殊的只能由Enigma Protector读懂的编程语言)。被保护后的代码几乎是不可能被逆向反编译的,更不用说修改其中代码的。
用于创建和验证注册密钥的舒适界面。您无需为如何为客户生成注册密钥寻找任何安全决策。 Enigma Protector可帮助您使用RSA等非常安全的算法创建密钥,密钥长度最高可达4096位!
特殊的Enigma API。 Enigma API是一组在模块和Enigma加载器之间进行通信的特殊函数。您可以获得有关注册密钥,当前试用参数等的完整信息。
执行,日期,日期,时间限制。共享软件模块的主要思想是“在购买之前先试试”。客户应了解应用程序的工作原理及其具有的功能,让我们展示这些功能,但不要忘记限制使用时间以增加购买应用程序的动力。
反调试器技巧。调试器是一种特殊工具,允许您反转已执行模块的源机器代码。所有逆向工程师都使用这些工具来了解模块的工作原理或模块保护的工作原理。使用此功能有助于避免使用调试工具同时执行受保护的模块。
控制和检查。控制和是特殊数据,有助于理解数据区域是否被修改。每个裂缝(去除保护等)都需要修改一些机器代码区域。 Enigma Protector能够检查源是否被修改并发出警报。 Enigma Protector不仅检查受保护模块的机器代码,还检查自己的源代码!
检查已执行的进程。此功能用于检查是否执行了某些文件/进程。它通过检查模块文件名,进程窗口文本或类来执行。如果执行任何调试器/ screencaptures / monitores,这可能有助于避免执行受保护的模块。
The Enigma Protector 有丰富的附加功能来保护文件,可以让您轻松添加自定义资源,如程序版本和详细内容。如果您的程序启动时间较长,您还可以添加启动画面来提醒用户。
如果您有自己的保护措施,您可以使用 Enigma Protector 的插件功能将其添加至被保护的程序中。该插件功能的原理是:您设计的动态库包含软件的安全功能,Enigma Protector 将其和程序一起打包保护,而动态库的功能可在被保护程序运行时候随时调用。
使用水印功能,您可以在受保护的文件里嵌入特定、隐藏的水印以分发给不同的用户。如果有用户故意泄漏软件,水印检测功可以帮助您检测出泄漏者信息。
使用帮助
一、开始使用
软件加密保护很重要的一点是实施正确的保护方案,如果您的保护方案有错误,即便再强的保护也有可能被破解。我们推荐您采纳以下建议,这样可以极大的增加软件的破解难道:
如果您使用注册密匙功能,我们强烈建议您使用加密宏来限制软件的可使用性。加密宏是最强的保护特性,只有当软件正确注册后,宏里的代码才会被解密,并且解密用的密匙信息仅存储在注册密匙中,所以,如果没有正确的注册密匙,软件是不可能被破解的;
软件开发者存在一个很大的误区是启用试用功能却没应用任何试用限制。请一定不要让试用版程序拥有全部功能,因为目前还没有绝对安全的方法可以确保试用限制不被破解,试用限制的保护只是增大软件破解的难度和成本,以减少您软件被破解的可能性;
只有演示版可以让破解者失去破解您软件的兴趣。演示版只含有软件的基本功能,并不提供高级的特别功能,这种版本因为不含有特别功能的代码,所以永远也不会被破解成完整版。
1、创建项目文件
创建保护项目文件是实施保护前的重要步骤,项目文件含有一系列保护参数和一些用来创建和验证注册密匙唯一的常量信息。这种唯一的常量信息是在每次项目文件创建时随机生成的,每个项目文件均不一样。
注意:
不要随同被 Enigma Protector 保护过的文件一起发布您的项目文件!项目文件可以可以被某些别有用心的人拿来创建注册密匙。
尽量备份您的项目文件!如果项目文件遗失,您将无法修复唯一的常量信息,并且无法为当前项目创注册密匙!
2、注册密匙特性
选择注册密匙的一些参数。Enigma Protector 支持为被保护文件创建注册密匙,这样您可以方便的创建共享软件,以及为客户分发注册密匙。注册密匙基于用户信息、用户硬件锁定(可选)、密匙创建时间、密匙过期日期(可选)和加密区段的名称(可选),这样就可以为您的软件提供灵活的试用限制保护。计算注册密匙使用了 RSA 512 位不对称加密算法,该算法为您的软件提供了非常高的保护,可以有效阻止对注册密匙的重建和逆向。为要保护的软件定义注册密匙的存储位置和硬件锁定参数是很必要的。(参见 程序预览 一节)
注册保护可以由以下两种方式实现:
使用文件存储注册信息。这是由注册信息的存储位置决定的,您可以将注册文件(用户需要执行该注册文件,以便将注册信息导入到注册表)或密匙文件(该文件含有注册信息,需要复制到在“注册信息存储”面板中定义的文件夹)发送给用户。
使用 Enigma 内部 API 函数检查、读取、保存和删除注册信息。这种方式需要您修改一下源代码,为用户提供输入注册信息的对话框,为软件提供检查和保存注册信息的功能。
3、试用限制
选择试用期参数。试用限制特性用来为用户未注册的软件版本提供一段有功能限制的试用期。Enigma Protector 支持以下类型的试用限制:试用次数限制,试用天数限制以及过期日期。所有的试用限制都可以通过 Enigma API 手动控制,这样您就可以完全控制试用次数并且方便作成改变(例如,您可以在试用期结束前的几天/几次时提醒您的用户注册)。如果您不使用 Enigma API,您还可以在“试用控制”面板手动定义试用类型。同时,Enigma Protector 还支持提醒消息(提示屏幕),提醒消息可以在软件运行过程中每隔一段时间出现,时间间隔可以手动定义。有的用户希望通过回拨系统时钟来恢复软件的功能,我们拥有检查系统时钟回拨的特性来阻止这类情况的发生。系统时钟检查与试用限制无关,所以软件注册后该功能也不会失效。
二、创建密钥
要为当前项目创建注册密钥,您可以使用 Enigma Protector 提供的服务组件 - 密钥生成器。密钥生成器可以使用 Enigma Protector 的内建菜单,也可以手动运行。
使用内置的“密钥生成器”来创建注册密钥。
请按以下步骤使用内置密钥生成器创建密钥:
在 注册特性-常规选项 版设置好内容;
打开The Enigma Protector选择主菜单-工具-密钥生成器。
填写“注册名称”文本框。注册名称是指为用来生成注册密钥的用户名,注册名称会和注册密钥一起发布给用户,所以不能为空。
"添加连字符" - 注册密钥中将自动添加“-”连字符。
密钥过期日期是指密钥不再有效的指定日期。要取得密钥过期日期,您可以使用 Enigma API 函数 EP_RegKeyExpirationDate 。该参数不是必需的。
硬件 ID 是针对某一计算机创建注册密钥唯一的硬件指纹信息字符串。要取得硬件 ID 您必须使用 Enigma API 函数 EP_RegHardwareID ,该函数允许您在用户计算机上取得唯一的硬件信息字符串(参见 硬件锁定 )。该参数不是必需的。
选择密钥将解密的加密区段(参见 加密标识 )。该参数不是必需的。
点击“创建”按钮。如果计算成功,注册密钥会显示在“注册密钥”文本框。
使用自定义注册机创建注册密钥
三、检查密钥
检查密钥的操作是和创建密钥在同一窗口(参加 创建密钥 )。填写“注册密钥”文本框并点击“验证”按钮来验证密钥的正确性。在“验证结果”一栏您就会看到密钥验证的结果。
例如:
注册密钥:
Vladimir
Registration key :
W3UH9K-L5EUT2-XUPUYJ-P8YYHR
Verifying results :
有效的注册密钥。
密钥信息:
注册信息:0x80DBC089
创建于:2007年4月17日
过期日期:2008年1月1日
已解锁加密的区段 #1
已解锁加密的区段 #7
已解锁加密的区段 #16
上述信息意味着该密钥对当前项目有效,包含有以下信息:
密钥创建日期:2007年4月17日;
密钥过期日期:2008年1月1日;
密钥已经解密了以下区段 #1, #7, #16.
四、CGI 密钥生成
CGI 注册密钥生成可以用来在服务器上计算生成。CGI密钥生成系统应放置在服务器上(有2种服务器方式,Windows系统和Linux服务器,您可在EnigmaSDK\CGI Keygen文件夹里找到)cgi-bin 文件夹中,并且有管理员权限来生成密钥文件。当您使用CGI密钥生成器来生成Key时,密钥生成器则可以通过GET或者POST的方式提交或者获取。
如何使用CGI密钥生成器:
1. 把密钥生成器放在您服务器上的 cgi-bin 文件夹里(请确认您的服务器支持类型)
2. 有权限使程序能获取注册文件("keygen" for Linux系统, "keygen.exe" for Windows 系统)
3. 设置一个注册密钥生成器链接:
以下可以使用在CGI密钥生成器:
GenerateKey - 生成 ansi* 型注册密钥;
GenerateKeyA - 复制注册码;
GenerateKeyW - 生成 unicode* (长字符) 型注册密钥;
GenerateKeyFromProject - 生成 ansi* 注册密钥, 生成的注册密钥属性来自原工程文件;
GenerateKeyFromProjectA - 从工程复制生成注册密钥;
GenerateKeyFromProjectW - 生成 unicode* (长字符)注册密钥,生成的注册密钥属性来自原工程文件.
* 请注意您的项目文件是仅设定 ansi 或者 仅设定 unicode 方案的授权文件。如果您激活 常规选项 即 常规选项 - 常规 面板, 则密钥生成器将生成对应的UNICODE或ANSI形式。
** 生成器属性 - 密钥模式,密钥大小,加密,公钥,私钥。
CGI 密钥生成器有以下属性:
激活 - 有以下函数定义来激活使用:
GenerateKey
GenerateKeyA
GenerateKeyW
GenerateKeyFromProject
GenerateKeyFromProjectA
GenerateKeyFromProjectW
文件名 - 项目工程文件名字。
注册名 - 在这里输入注册密钥的用户名。请注意这里的字符串将被加密显示(如 空格 将被翻译成 %20 而不是 " ");
密钥长度 - 定义生成的密钥长度,在您的Enigma项目文件里的 注册特性 -- 常规选项 面板里设置;
密钥输出方式 - 定义输出的注册密钥,在您的Enigma项目文件里的 注册特性 -- 常规选项 面板里设置;
连字符 - 选择是否在注册密钥中增加连接字符,如果增加,则输入1,否则跳过设置该属性;
硬件 - 硬件ID将锁定注册密钥;
过期时间 - 注册密钥过期时间*;
指定时间后注册 - 在指定时间后需要注册*;
指定时间前注册 - 在指定时间前需要注册*;
运行次数 - 注册密钥里限定程序运行的次数;
限制天数 - 注册密钥里限定使用天数;
运行时间 - 注册密钥里限定运行时间;
运行总时间 - 注册密钥里限定运行总时间;
区域 - 注册密钥里锁定运行区域;
区间 - 如果原程序选择需要加密区间,则选择这里进行解密区间
加密点 - 使用记事本打开您的Enigma项目工程文件以获取加密点
私钥 和 公钥 - 对应的值请参看Enigma的常规选项 -- 常规面板, 有公钥私钥的相关信息生成。
* 日期值将被定义成特定格式:2字节(日)+2字节(月)+2字节(年)。如2010年12月1日将被写成01122010字符串
五、导出注册机
Enigma Protector 允许对现有项目文件导出专属注册机,点击主菜单-工具-导出注册机,有以下步骤:
步骤1. 注册密钥中是否添加“-”连字符,如果不允许用户修改,则激活"Do not allow to change hyphens value"选项。
步骤 2. 解码哪个区段,如禁止用户修改,请激活"Do not allow to change sections value"。
步骤 3. 注册密钥里限制过期日期,如禁止用户修改,请激活 "Do not allow to change expiration date value"。
步骤 4. 注册密钥中限制的需在某个时间后注册,如不允许用户修改,请激活"Do not allow to change Register After date"。
步骤5. 注册密钥中限制某一个时间前必须注册,如不允许用户修改,请激活"Do not allow to change Register Before date"。
步骤 6. 限制程序进程数。如不允许用户修改,请激活"Do not allow to change Executions "。
步骤 7. 限制使用天数,如不允许用户修改,请激活 "Do not allow to change Days "。
步骤 8. 限制每次运行的时间(分钟),如不允许用户修改,请激活"Do not allow to change Run-time "。
步骤9. 限制程序运行的总时间,如不允许用户修改,请激活"Do not allow to change Global Time "。
步骤10. 限制用户区域,如不允许用户修改,请激活"Do not allow to change Country Lock "。
步骤 11. 点击“Finish”按钮,输入程序名字,导出存盘即可生成自定义注册机。