国产色频,国产网站精品,成人在线综合网,精品一区二区三区毛片,亚洲无卡视频,黄色av观看,亚洲福利影视

軟件的加密——注冊(cè)碼實(shí)現(xiàn)原理

2014-10-07 15:37:22 大云網(wǎng)  點(diǎn)擊量: 評(píng)論 (0)
摘 要:很多共享軟件有一定的試用期,試用期過后,需要注冊(cè)才能夠繼續(xù)使用。注冊(cè)時(shí)需要把使用軟件時(shí)出現(xiàn)的一個(gè)序列號(hào)給人家發(fā)過去,而后產(chǎn)權(quán)所有人給你注冊(cè)號(hào)碼。并且一機(jī)一個(gè)號(hào)碼,最大限度防止盜用別人的成果
摘 要:很多共享軟件有一定的試用期,試用期過后,需要注冊(cè)才能夠繼續(xù)使用。注冊(cè)時(shí)需要把使用軟件時(shí)出現(xiàn)的一個(gè)序列號(hào)給人家發(fā)過去,而后產(chǎn)權(quán)所有人給你注冊(cè)號(hào)碼。并且一機(jī)一個(gè)號(hào)碼,最大限度防止盜用別人的成果。下面介紹的就是在VB中獲取計(jì)算機(jī)的硬件信息,從而通過一定的算法給出注冊(cè)碼,實(shí)現(xiàn)軟件加密。
關(guān)鍵詞: 軟件加密 注冊(cè)碼 防盜


打開VB6.0新建一個(gè)工程,在窗體上放置兩個(gè)文體框控件text1和text2,放置一個(gè)命令控件command其caption屬性設(shè)為“注冊(cè)”。在通用­——聲明中建立如下代碼:
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
單擊“注冊(cè)”按鈕事件代碼如下:
Private Sub Command1_Click()
     If Text2 <> CStr(GetSerialNumber("C:")-123*9) Then //注冊(cè)碼算法
        MsgBox "注冊(cè)碼不正確,請(qǐng)認(rèn)真檢查輸入是否正確。"
     Else
        MsgBox "你已經(jīng)成功注冊(cè),請(qǐng)重新啟動(dòng)本軟件。"
        Unload Me
       Shell ("G:cxj技能測(cè)試Exercise.exe")  //執(zhí)行正常運(yùn)行的代碼
     End If
     End Sub
窗體激活代碼如下:
Private Sub Form_Activate()
     Text1.Text = GetSerialNumber("C:")
     End Sub
整個(gè)程序運(yùn)行后,出現(xiàn)兩個(gè)文本框和一個(gè)“注冊(cè)”按鈕,一個(gè)文本框顯示計(jì)算機(jī)硬盤序列號(hào),第二個(gè)文本框需輸入正確注冊(cè)號(hào),點(diǎn)“注冊(cè)”程序正常運(yùn)行,否則程序要求輸入正確序列號(hào)。
這個(gè)事例是以獲取硬盤序列號(hào)為機(jī)器碼從而算出注冊(cè)碼,也可獲取其它硬件信息作為機(jī)器碼,如CPU序列號(hào)、網(wǎng)卡MAC地址等,下面介紹用VB獲取CPU序列號(hào)。
打開VB6.0新建一個(gè)工程,在窗體上放置一個(gè)文體框控件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端口號(hào)  
          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)行后,文本框內(nèi)顯示的正是本機(jī)CPU的序列號(hào)。
上述事例均使用VB6.0,在WindowsXP下運(yùn)行通過。
大云網(wǎng)官方微信售電那點(diǎn)事兒

責(zé)任編輯:葉雨田

免責(zé)聲明:本文僅代表作者個(gè)人觀點(diǎn),與本站無(wú)關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請(qǐng)讀者僅作參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。
我要收藏
個(gè)贊
?