|
|
发表于 2009-3-30 20:18:11
|
显示全部楼层
来自: 日本
我做过的比较复杂,vb6也能实现,不过读机器码,加密解密函数在vb6下实现比较麻烦,在.net下实现比较方便。
8 X# C: \- @" p5 [1 z0 W基本结构如下/ B, {0 D: R' p) D9 @' }
1读机器码函数。这个机器码显示给用户
8 W6 s9 J% H+ e Q; ]+ J2加密机器码函数。把机器码加密成另一个字符串,也就是注册码。
8 a: P. Z% b) b, Y, o4 ]3读写注册信息函数,从注册表或文件中读出或写入注册码。
2 O7 A5 e- w8 w/ I) L: r. P
: F5 w/ f; |7 O+ T, f/ r8 E) H6 [程序启动时首先检测注册表或文件中是否有注册信息,如果没有则显示给用户机器码。如果有则取得机器码并加密机器码,然后比较加密结果是否等于读入的注册码。
3 x: T; @. ?, i+ T+ C用户输入注册码时也是取得机器码并加密机器码,然后比较加密结果是否等于用户输入的注册码,如果等于则把注册码存到注册表或文件中。
7 }& O3 p. z! q" l* O# W4 y9 N" g& m' ]
以上只是最简单注册形式,这样做还有很多缺点,比如注册码明文直接用于比较,容易被Crack,明文直接保存在注册表中也不安全。Crack高手有可能直接跳过注册模块,这就需要在注册码中混入程序代码片段或是一些常量值,使得Crack者即使跳过注册模块也不能正常运行程序。这里涉及到加密策略,可以参考http://msdn.microsoft.com/zh-cn/library/93bskf9z.aspx。不过这个应该不是初级课题,不是很容易理解,但用起来也不算太难。 |
评分
-
查看全部评分
|