如何在Windows应用程序中实现电子注册功能

如何在Windows应用程序中实现电子注册功能,第1张

如何在Windows应用程序中实现电子注册功能,第2张

目前国内软件销售过程中采用了一种新的方法:开发者根据电脑中不同的硬件配置标识,直接在应用程序中设置密钥,限制程序或某些高级功能的使用,然后将受限的应用程序免费提供给用户。试用一段时间后,如果用户觉得满意,可以将安装程序提取的硬件配置解密密钥或者已经收集了机器配置信息的应用程序提供给开发者,花少量的钱购买自己机器中的电子注册密钥,从而充分利用应用程序的所有功能。

利用电子注册来限制应用的部分功能,既可以让用户试用后再决定是否购买应用,又可以保护开发者的合法劳动成果,减少用户和开发者之间不必要的中间环节。开发者直接获得用户购买软件的成本,真正体现了开发者创造的价值;用户先试用软件再决定是否购买,让用户得到满意的、物超所值的软件。所以这种没有中间环节的销售方式降低了软件的成本,对开发者和用户都有好处。同时,这种方法也可以使开发者直接获得用户的反馈信息,鼓励开发者开发更多功能的应用。

然而,在应用程序中实现电子注册功能绝非易事,尤其是在Windows平台推出之后。要实现应用程序跨平台的电子注册功能,需要开发者具备丰富的编程技能、实践开发经验和广阔的开发视野。通过实践和探索,作者最终成功实现了跨越DOS、Windows 3的应用程序电子注册功能。x和Windows 95平台。下面将描述实现原理和技巧。

1.配准关键点的选择和生成

要实现应用程序的电子注册功能,关键问题是收集硬件配置中的关键点。在DOS系统中,硬盘的序列号可以直接通过硬盘端口1F6H和1F7H读取作为关键算法数据,因为每个硬盘的型号、版本号和序列号都不一样。只要用户提供上述内容,该方法生成的注册密钥在每台电脑中是不同的,从而实现电子注册的功能。CCED 5.18也采用了类似的方法。虽然这种方法在大多数情况下是有效的,即使是在Windows 3的兼容模式下。x系统和Windows 95系统,在带性能配置的Windows 95保护模式下不起作用。原因是Windows 95保护模式下不允许通过端口方式读取硬盘类型参数,用这种方法无法实现跨平台通用电子注册功能。

我仔细分析了电脑ROM区的F000H-FFFFH内容,发现里面有很多和硬件配置相关的信息(比如CMOS配置信息,主板名称,型号和序列号,主机logo字节和生产日期等。)记载在这一带。可以收集一个或几个原始数据作为注册密钥算法(如机器的ROM区中的F000H:FFF5H-F000H:FFFFH,依次存储主机出厂日期和主机标志字节的内容)。对于不同型号的计算机,这些特定于硬件的信息并不相同。所以可以作为注册密钥算法的原始数据,这些内容在DOS,Windows 3下是一样的。x和Windows 95。需要注意的是,在实际应用中如果真的将采集点作为算法的原始数据,那么F000:FFF0H的前五个字节是不应该包含在内的,因为这个地址在机器热启动的时候已经作为入口地址使用了。在DOS,Windows 3。x和Windows 95,对于热启动组合键Ctrl+Alt+Del的处理程序是不一样的,所以这里的内容在它们之间也是不一样的。读者应该记住这一点。

使用上述方法获得注册密钥算法的原始数据后,开发者可以确定自己的加密算法,这可以通过编程语言中丰富的比特运算函数来实现。然后在应用中需要限制的部分加入注册的加密算法,可以根据应用的实际需要和限制功能在很多地方任意设置,使得盗版者难以解密,从而有效保护开发者的成果。通过这种方法,即使机器中的多个应用程序使用相同的硬件配置信息收集点,也不存在任何加密冲突的可能性。即使使用相同算法的原始数据,由于算法不同,注册密钥也不会完全相同;即使解密器知道加密算法的原始数据,也很难解密,因为它无法知道加密算法,而且加密算法贯穿整个应用。因此,上述方法可以有效地实现跨DOS、Windows 3的电子注册功能。x和Windows 95平台。另外,由于ROM区的关键点的内容是不能改变的,所以即使将来推出新的操作系统平台,这种方法仍然会非常有效。

第二,使用解密密钥建立联系

应用程序的加密部分完成后,需要建立相应的解密密钥。所谓解密密钥,就是将加密算法的原始数据加密,然后直接显示给用户,并写入应用程序的相应位置。这样,用户不仅可以通过电话或计算机网络向开发者提供注册算法的原始数据,还可以将安装好的应用发送给开发者。加密密钥可以是ROM区的原始数据(不要按原样提供),也可以是原始数据经过一定转换后形成的新数据。所以开发者提供的应用中的加密算法应该包括两个部分:用解密密钥算法对机器ROM区的数据进行解密,然后用注册算法对解密密钥数据进行注册,形成注册密钥。

应用中注册密钥的算法、长度、显示或提供给开发者的方式可以自行确定,但解密密钥的长度和算法应与注册密钥完全一致。解密密钥不必如此复杂,只需简单处理即可实现。比如这个程序实现的方法就是简单的从rom中收集的数据中减去0x2020。

第三,电子注册密钥生成程序

在得到用户提供的原始解密密钥数据后,开发者需要使用专门的密钥生成器将其转换成注册密钥,并将注册密钥交给用户。注册密钥的算法应该与应用程序中判断注册密钥的加密算法程序完全相同。一般来说,程序应该有以下三种方式获取注册密钥算法的原始数据,以便于密钥处理。这个程序的名字叫READKEY.EXE,它的功能如下:

(1)当READKEY没有参数时,直接从当前机器获取注册码;

(2)当READKEY有参数时,从键盘输入解密密钥,得到注册密钥;

(3)当READKEY取EXE文件名参数时,从对应应用程序的特定位置获取解密密钥,生成注册密钥。

用户获得注册密钥后,重新安装应用程序或在需要的地方直接输入注册密钥,然后应用程序会自动将注册密钥存储在文件的特定位置。在应用程序被复制到其他机器之后,应用程序的功能或使用次数仍然受到限制,因为注册密钥因机器而异。如果您想在其他机器上使用该应用程序,您必须重新注册。

解密密钥和注册密钥在一个应用中的位置可以先用特殊字符识别,然后通过DEBUG等程序直接找到位置,再修改其他程序中读取或写入的数据的地址值。至于解密密钥的显示和注册密钥的输入,可以由开发者决定是安装程序还是直接在应用中处理。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 如何在Windows应用程序中实现电子注册功能

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情