軟件的加密——注冊碼實現(xiàn)原理
摘 要:很多共享軟件有一定的試用期,試用期過后,需要注冊才能夠繼續(xù)使用。注冊時需要把使用軟件時出現(xiàn)的一個序列號給人家發(fā)過去,而后產(chǎn)權(quán)所有人給你注冊號碼。并且一機一個號碼,最大限度防止盜用別人的成果
摘 要:很多共享軟件有一定的試用期,試用期過后,需要注冊才能夠繼續(xù)使用。注冊時需要把使用軟件時出現(xiàn)的一個序列號給人家發(fā)過去,而后產(chǎn)權(quán)所有人給你注冊號碼。并且一機一個號碼,最大限度防止盜用別人的成果。下面介紹的就是在VB中獲取計算機的硬件信息,從而通過一定的算法給出注冊碼,實現(xiàn)軟件加密。
關(guān)鍵詞: 軟件加密 注冊碼 防盜
打開VB6.0新建一個工程,在窗體上放置兩個文體框控件text1和text2,放置一個命令控件command其caption屬性設(shè)為“注冊”。在通用——聲明中建立如下代碼:
String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long,lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
新建一個函數(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 //注冊碼算法
MsgBox "注冊碼不正確,請認真檢查輸入是否正確。"
Else
MsgBox "你已經(jīng)成功注冊,請重新啟動本軟件。"
Unload Me
Shell ("G:cxj技能測試Exercise.exe") //執(zhí)行正常運行的代碼
End If
End Sub
窗體激活代碼如下:
Private Sub Form_Activate()
Text1.Text = GetSerialNumber("C:")
End Sub
整個程序運行后,出現(xiàn)兩個文本框和一個“注冊”按鈕,一個文本框顯示計算機硬盤序列號,第二個文本框需輸入正確注冊號,點“注冊”程序正常運行,否則程序要求輸入正確序列號。
這個事例是以獲取硬盤序列號為機器碼從而算出注冊碼,也可獲取其它硬件信息作為機器碼,如CPU序列號、網(wǎng)卡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
程序運行后,文本框內(nèi)顯示的正是本機CPU的序列號。
上述事例均使用VB6.0,在WindowsXP下運行通過。
關(guān)鍵詞: 軟件加密 注冊碼 防盜
打開VB6.0新建一個工程,在窗體上放置兩個文體框控件text1和text2,放置一個命令控件command其caption屬性設(shè)為“注冊”。在通用——聲明中建立如下代碼:
String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long,lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
新建一個函數(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 //注冊碼算法
MsgBox "注冊碼不正確,請認真檢查輸入是否正確。"
Else
MsgBox "你已經(jīng)成功注冊,請重新啟動本軟件。"
Unload Me
Shell ("G:cxj技能測試Exercise.exe") //執(zhí)行正常運行的代碼
End If
End Sub
窗體激活代碼如下:
Private Sub Form_Activate()
Text1.Text = GetSerialNumber("C:")
End Sub
整個程序運行后,出現(xiàn)兩個文本框和一個“注冊”按鈕,一個文本框顯示計算機硬盤序列號,第二個文本框需輸入正確注冊號,點“注冊”程序正常運行,否則程序要求輸入正確序列號。
這個事例是以獲取硬盤序列號為機器碼從而算出注冊碼,也可獲取其它硬件信息作為機器碼,如CPU序列號、網(wǎng)卡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
程序運行后,文本框內(nèi)顯示的正是本機CPU的序列號。
上述事例均使用VB6.0,在WindowsXP下運行通過。

責(zé)任編輯:葉雨田
免責(zé)聲明:本文僅代表作者個人觀點,與本站無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關(guān)內(nèi)容。
我要收藏
個贊
-
現(xiàn)貨模式下谷電用戶價值再評估
2020-10-10電力現(xiàn)貨市場,電力交易,電力用戶 -
PPT | 高校綜合能源服務(wù)有哪些解決方案?
2020-10-09綜合能源服務(wù),清潔供熱,多能互補 -
深度文章 | “十三五”以來電力消費增長原因分析及中長期展望
2020-09-27電力需求,用電量,全社會用電量
-
PPT | 高校綜合能源服務(wù)有哪些解決方案?
2020-10-09綜合能源服務(wù),清潔供熱,多能互補 -
深度文章 | “十三五”以來電力消費增長原因分析及中長期展望
2020-09-27電力需求,用電量,全社會用電量 -
我國電力改革涉及的電價問題
-
電化學(xué)儲能應(yīng)用現(xiàn)狀及對策研究
2019-08-14電化學(xué)儲能應(yīng)用 -
《能源監(jiān)測與評價》——能源系統(tǒng)工程之預(yù)測和規(guī)劃
-
《能源監(jiān)測與評價》——能源系統(tǒng)工程之基本方法
-
貴州職稱論文發(fā)表選擇泛亞,論文發(fā)表有保障
2019-02-20貴州職稱論文發(fā)表 -
《電力設(shè)備管理》雜志首屆全國電力工業(yè) 特約專家征文
2019-01-05電力設(shè)備管理雜志 -
國內(nèi)首座蜂窩型集束煤倉管理創(chuàng)新與實踐
-
人力資源和社會保障部:電線電纜制造工國家職業(yè)技能標(biāo)準(zhǔn)
-
人力資源和社會保障部:變壓器互感器制造工國家職業(yè)技能標(biāo)準(zhǔn)
-
《低壓微電網(wǎng)并網(wǎng)一體化裝置技術(shù)規(guī)范》T/CEC 150
2019-01-02低壓微電網(wǎng)技術(shù)規(guī)范
-
現(xiàn)貨模式下谷電用戶價值再評估
2020-10-10電力現(xiàn)貨市場,電力交易,電力用戶 -
建議收藏 | 中國電價全景圖
2020-09-16電價,全景圖,電力 -
一張圖讀懂我國銷售電價附加
2020-03-05銷售電價附加