软件的加密——注册码实现原理
摘 要:很多共享软件有一定的试用期,试用期过后,需要注册才能够继续使用。注册时需要把使用软件时出现的一个序列号给人家发过去,而后产权所有人给你注册号码。并且一机一个号码,最大限度防止盗用别人的成果
摘 要:很多共享软件有一定的试用期,试用期过后,需要注册才能够继续使用。注册时需要把使用软件时出现的一个序列号给人家发过去,而后产权所有人给你注册号码。并且一机一个号码,最大限度防止盗用别人的成果。下面介绍的就是在VB中获取计算机的硬件信息,从而通过一定的算法给出注册码,实现软件加密。
关键词: 软件加密 注册码 防盗
打开VB6.0新建一个工程,在窗体上放置两个文体框控件text1和text2,放置一个命令控件command其caption属性设为“注册”。在通用——声明中建立如下代码:
String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long,lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
新建一个函数:
Function GetSerialNumber(strDrive As String) As Long
Dim SerialNum As Long
Dim Res As Long
Dim Temp1 As String
Dim Temp2 As String
Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
Res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2))
GetSerialNumber = SerialNum
End Function
单击“注册”按钮事件代码如下:
Private Sub Command1_Click()
If Text2 <> CStr(GetSerialNumber("C:")-123*9) Then //注册码算法
MsgBox "注册码不正确,请认真检查输入是否正确。"
Else
MsgBox "你已经成功注册,请重新启动本软件。"
Unload Me
Shell ("G:cxj技能测试Exercise.exe") //执行正常运行的代码
End If
End Sub
窗体激活代码如下:
Private Sub Form_Activate()
Text1.Text = GetSerialNumber("C:")
End Sub
整个程序运行后,出现两个文本框和一个“注册”按钮,一个文本框显示计算机硬盘序列号,第二个文本框需输入正确注册号,点“注册”程序正常运行,否则程序要求输入正确序列号。
这个事例是以获取硬盘序列号为机器码从而算出注册码,也可获取其它硬件信息作为机器码,如CPU序列号、网卡MAC地址等,下面介绍用VB获取CPU序列号。
打开VB6.0新建一个工程,在窗体上放置一个文体框控件text1。通用——声明中建立如下代码:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32s = 0
窗体激活代码如下:
Private Sub Form_Activate()
Dim len5 As Long, aa As Long
Dim cmprName As String
Dim osver As OSVERSIONINFO
'取得Computer Name
cmprName = String(255, 0)
len5 = 256
aa = GetComputerName(cmprName, len5)
cmprName = Left(cmprName, InStr(1, cmprName, Chr(0)) - 1)
Computer = cmprName '取得CPU端口号
Set CPUs = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & Computer & "rootcimv2").ExecQuery("select * from Win32_Processor")
For Each mycpu In CPUs
Text1.Text = mycpu.ProcessorId
Next
End Sub
程序运行后,文本框内显示的正是本机CPU的序列号。
上述事例均使用VB6.0,在WindowsXP下运行通过。
关键词: 软件加密 注册码 防盗
打开VB6.0新建一个工程,在窗体上放置两个文体框控件text1和text2,放置一个命令控件command其caption属性设为“注册”。在通用——声明中建立如下代码:
String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long,lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
新建一个函数:
Function GetSerialNumber(strDrive As String) As Long
Dim SerialNum As Long
Dim Res As Long
Dim Temp1 As String
Dim Temp2 As String
Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
Res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2))
GetSerialNumber = SerialNum
End Function
单击“注册”按钮事件代码如下:
Private Sub Command1_Click()
If Text2 <> CStr(GetSerialNumber("C:")-123*9) Then //注册码算法
MsgBox "注册码不正确,请认真检查输入是否正确。"
Else
MsgBox "你已经成功注册,请重新启动本软件。"
Unload Me
Shell ("G:cxj技能测试Exercise.exe") //执行正常运行的代码
End If
End Sub
窗体激活代码如下:
Private Sub Form_Activate()
Text1.Text = GetSerialNumber("C:")
End Sub
整个程序运行后,出现两个文本框和一个“注册”按钮,一个文本框显示计算机硬盘序列号,第二个文本框需输入正确注册号,点“注册”程序正常运行,否则程序要求输入正确序列号。
这个事例是以获取硬盘序列号为机器码从而算出注册码,也可获取其它硬件信息作为机器码,如CPU序列号、网卡MAC地址等,下面介绍用VB获取CPU序列号。
打开VB6.0新建一个工程,在窗体上放置一个文体框控件text1。通用——声明中建立如下代码:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32s = 0
窗体激活代码如下:
Private Sub Form_Activate()
Dim len5 As Long, aa As Long
Dim cmprName As String
Dim osver As OSVERSIONINFO
'取得Computer Name
cmprName = String(255, 0)
len5 = 256
aa = GetComputerName(cmprName, len5)
cmprName = Left(cmprName, InStr(1, cmprName, Chr(0)) - 1)
Computer = cmprName '取得CPU端口号
Set CPUs = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & Computer & "rootcimv2").ExecQuery("select * from Win32_Processor")
For Each mycpu In CPUs
Text1.Text = mycpu.ProcessorId
Next
End Sub
程序运行后,文本框内显示的正是本机CPU的序列号。
上述事例均使用VB6.0,在WindowsXP下运行通过。
责任编辑:叶雨田
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞
-
现货模式下谷电用户价值再评估
2020-10-10电力现货市场,电力交易,电力用户 -
PPT | 高校综合能源服务有哪些解决方案?
2020-10-09综合能源服务,清洁供热,多能互补 -
深度文章 | “十三五”以来电力消费增长原因分析及中长期展望
2020-09-27电力需求,用电量,全社会用电量
-
PPT | 高校综合能源服务有哪些解决方案?
2020-10-09综合能源服务,清洁供热,多能互补 -
深度文章 | “十三五”以来电力消费增长原因分析及中长期展望
2020-09-27电力需求,用电量,全社会用电量 -
我国电力改革涉及的电价问题
-
贵州职称论文发表选择泛亚,论文发表有保障
2019-02-20贵州职称论文发表 -
《电力设备管理》杂志首届全国电力工业 特约专家征文
2019-01-05电力设备管理杂志 -
国内首座蜂窝型集束煤仓管理创新与实践
-
人力资源和社会保障部:电线电缆制造工国家职业技能标准
-
人力资源和社会保障部:变压器互感器制造工国家职业技能标准
-
《低压微电网并网一体化装置技术规范》T/CEC 150
2019-01-02低压微电网技术规范
-
现货模式下谷电用户价值再评估
2020-10-10电力现货市场,电力交易,电力用户 -
建议收藏 | 中国电价全景图
2020-09-16电价,全景图,电力 -
一张图读懂我国销售电价附加
2020-03-05销售电价附加
-
电气工程学科排行榜发布!华北电力大学排名第二
-
国家电网61家单位招聘毕业生
2019-03-12国家电网招聘毕业生 -
《电力设备管理》杂志读者俱乐部会员招募
2018-10-16电力设备管理杂志