軟件的加密——注冊碼實(shí)現(xiàn)原理
摘 要:
摘 要:很多共享軟件有一定的試用期,試用期過后,需要注冊才能夠繼續(xù)使用。注冊時(shí)需要把使用軟件時(shí)出現(xiàn)的一個(gè)序列號(hào)給人家發(fā)過去,而后產(chǎn)權(quán)所有人給你注冊號(hào)碼。并且一機(jī)一個(gè)號(hào)碼,最大限度防止盜用別人的成果。下面介紹的就是在VB中獲取計(jì)算機(jī)的硬件信息,從而通過一定的算法給出注冊碼,實(shí)現(xiàn)軟件加密。
關(guān)鍵詞:
關(guān)鍵詞: 軟件加密 注冊碼 防盜
——聲明中建立如下代碼:
String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long,lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
新建一個(gè)函數(shù):
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 //注冊碼算法
Else
Unload Me
//執(zhí)行正常運(yùn)行的代碼
End If
End Sub
窗體激活代碼如下:
Private Sub Form_Activate()
Text1.Text = GetSerialNumber("C:")
End Sub
整個(gè)程序運(yùn)行后,出現(xiàn)兩個(gè)文本框和一個(gè)“注冊”按鈕,一個(gè)文本框顯示計(jì)算機(jī)硬盤序列號(hào),第二個(gè)文本框需輸入正確注冊號(hào),,點(diǎn)“注冊”程序正常運(yùn)行,否則程序要求輸入正確序列號(hào)。
序列號(hào)。
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
cmprName = String(255, 0)
len5 = 256
aa = GetComputerName(cmprName, len5)
cmprName = Left(cmprName, InStr(1, cmprName, Chr(0)) - 1)
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
下運(yùn)行通過。
本文編號(hào):14738
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/14738.html