日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义VB程序加密方案

發布時間:2024/8/1 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义VB程序加密方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

第一步,獲取電腦唯一性標志

第二步,編密文

第三步,封裝Dll

第四步,編客戶端和注冊機

注冊

C盤序列號

電腦名

第五步,應用程序引用


?


第一步,獲取電腦標志

? ? 每一臺電腦的標志有哪些?

? ? 1、硬盤序列號

? ? 2、電腦名

? ? 3、IP地址

? ? 想到的就這些了,本案列以C盤序列號和電腦名為電腦的識別依據,以闡述加密算法

? ? 獲取C盤序列號代碼:

? ? Dim DriveID
? ? Set DriveID = CreateObject("Scripting.FileSystemObject")
? ? mySerial = DriveID.GetDrive("C").SerialNumber

? ? 獲取電腦名代碼:

? ? dim?PcName as string? '電腦名
? ??Set a = CreateObject("Wscript.Network")
? ? PcName =? a.ComputerName ??

? ? OK,如果要給另一臺電腦使用權限,限定識別時間,使用期限,加上試用次數
? ? 差不多了。比如:

? ? 信息大概這樣寫:2018/9/6_10_-2070513827_DESKTOP-NS7FOVN_2019/3/9

? ? 解釋下:日期(后續程序可以自定義保留5天)_試用次數_未注冊或者注冊信息錯誤但格式正確,提取該數字每次打開“-1”,? ? ? _C盤序列號_電腦名_到期日期(可設定為固定字段,然后封裝到程序內,即便含義依然很難破解算法【dll封】)

第二步,編密文

第一步的注冊信息基本完備,如上圖,如果就這樣給用戶使用程序,注冊碼隨便編一個也可,辛苦敲定的程序就成了做貢獻了,別吃飯了,但是我們如何讓用戶看不懂注冊碼呢——加密算法??纯磩e個的算法介紹:

https://blog.csdn.net/ddffr/article/details/77153127

看了算法原理介紹以后(其實想多了),個人這幾個渣渣小程序還沒那么大的影響力,稍微秀一下小算法,簡單點你破解依然很困難,除非你知道我的dll里面寫的什么。來吧,我也來介紹下我的算法思路,算法相同,隨便改改參數你都很難破解,而且為了這點成本花這么大力氣破解這么簡單的算法是沒有必要的,我想。

2018/9/6_10_-2070513827_DESKTOP-NS7FOVN_2019/3/9,將每一個字符轉化為2個字符

假定字符x,char(97)=a? ,? ASC(a)=97? , 則ASC(x)=yy 或則 ASC(x)=zzz

大家知道,ascii碼集中在33-126間,那么我減去某個數或則加上某個數那么這群數字就全是yy,或者zzz了

我在逆向算法時按字段長度取出來就是了,正向算法時不足加上某個特定字符就可以了

以下就是編譯之后的注冊碼了,大哥們,誰有興趣為小程序破譯這個算法

1、注冊有時限

2、試用有次數限制

3、指定使用階段,本參數在dll里面,怎么破

4、限定使用時間

5、針對你的C盤序列號和電腦名僅此一份

本程序針對封閉式工程研發小程序,基本不予外網連接,困難點就是輸入注冊碼較多,比較麻煩,但是實現原理簡單

不想麻煩那就用參考鏈接里面的大數因式分解吧,以后研究,我還沒考慮好該如何將這幾個信息變成大數呢,各位歡迎評論
?

第三步,封裝Dll

繼承第二部,我們需要將理論的算法付諸實踐

在該類模塊插入以下代碼,Change1是類Certif20的一個方法(正向編譯成數字),其余程序就可以引用了——封裝為dll。

Public Function Change1(ByVal Str1 As String) As String
? ? Dim Str_B As String
? ? For i = 1 To Len(Str1)
? ? ? ? tt = Mid(Str1, i, 1)
? ? ? ? Str_B = Str_B & (Asc(tt) - 30)
? ? Next
? ? Change1 = Str_B
End Function

逆向編譯段

Public Function Change2(ByVal Str1 As String) As String
? ? Dim State01 As Boolean
? ? State01 = False
? ? For i = 1 To Len(Str1) / 2
? ? ? ? tt = Mid(Str1, i * 2 - 1, 2)
? ? ? ? Str_C = Str_C & Chr(CInt(tt) + 30)
? ? Next
? ? Change2 = Str_C
End Function

以上代碼是兩位的,如果要弄成3位的也可,參數做一下修改

最后生成dll即可。

?

第四步,編客戶端和注冊機

圖一圖二分別是客戶端和注冊機界面,原理大家一看便知,便不多說了,直接上代碼

注冊

Private Sub Command1_Click()
? ? Rem 獲取C盤序列號
? ? Dim C_str, CName, Str1 As String
? ? Dim DriveID
? ? Set DriveID = CreateObject("Scripting.FileSystemObject")
? ? C_str = DriveID.GetDrive("C").SerialNumber
? ? Set a = CreateObject("Wscript.Network")
? ? CName = a.ComputerName
? ??
? ? Dim Cer1 As
Certif20
? ? Set Cer1 = New Certif20
? ? Str1 = Cer1.Change2(Text3.Text)
? ? Dim Arr1
? ? Arr1 = Split(Str1, "CQVB")
? ? If UBound(Arr1) <> 2 Then
? ? ? ? MsgBox "注冊信息有誤" & Chr(10) & "聯系郵箱:510265404@qq.com", , "注冊失敗"
? ? ? ? Exit Sub
? ? End If
? ? If Arr1(1) <> CStr(C_str) Then
? ? ? ? MsgBox "序列號不匹配" & Chr(10) & "聯系郵箱:510265404@qq.com", , "注冊失敗"
? ? ElseIf InStr(Arr1(2), CName) <> 1 Then
? ? ? ? MsgBox "電腦名不匹配" & Chr(10) & "聯系郵箱:510265404@qq.com", , "注冊失敗"
? ? Else
? ? ? ? Dim date2 As Date
? ? ? ? date2 = right(Arr1(2), Len(Arr1(2)) - Len(CName))
? ? ? ? MsgBox "恭喜恭喜!" & Chr(10) & "有效期至: " & date2, , "注冊成功"
? ? ? ? Rem 創建記錄 ? ? ? ?*******************************************************
? ? ? ? Rem 判斷有無緩存記錄(txt),無則創建一個空值
? ? ? ? Dim fso As Object, blnExist As Boolean
? ? ? ? Set fso = CreateObject("Scripting.FileSystemObject")
? ? ? ? blnExist = fso.FileExists("D:\MSFus_1.0\Setting\Certif\licence.txt")
? ? ? ? If blnExist = False Then
? ? ? ? Dim sFile As Object
? ? ? ? Set sFile = fso.CreateTextFile("D:\MSFus_1.0\Setting\Certif\licence.txt", True)
? ? ? ? End If
? ? ? ? Rem 讀取TXT
? ? ? ? Const ForWriting = 2
? ? ? ? Set sFile = fso.OpenTextFile("D:\MSFus_1.0\Setting\Certif\licence.txt", 2, TristateFalse)
? ? ? ? sFile.Write Text3.Text
? ? ? ? sFile.Close
? ? ? ? Set fso = Nothing
? ? ? ? Set sFile = Nothing
? ? End If
End Sub

C盤序列號

Private Sub Command2_Click()
? ? Rem 獲取C盤序列號
? ? Dim DriveID
? ? Set DriveID = CreateObject("Scripting.FileSystemObject")
? ? Text1.Text = DriveID.GetDrive("C").SerialNumber
End Sub

電腦名

Private Sub Command3_Click()
? ? Set a = CreateObject("Wscript.Network")
? ? Text2.Text = a.ComputerName
End Sub

第五步,應用程序引用

按上面描述的,實現以下幾個功能

1、注冊有時限

2、試用有次數限制

3、指定使用階段,本參數在dll里面

4、限定使用時間

5、針對你的C盤序列號和電腦名僅此一份

列:2018/9/6_10_-2070513827_DESKTOP-NS7FOVN_2019/3/9

1、逆向解析為上面信息串(使用dll的Change2)

2、獲取生成序列號的日期,與當前日期比較10天內可以注冊,其余時間不予注冊

3、解析與本機不符的,但格式正確,將試用次數(-1),直至次數小于1程序提示不能使用,請注冊

4、注冊成功的,試用次數直接至零,判斷使用末期與注冊日期是否符合指定階段,不是不給運行

5、判斷當前日期是否比使用末期小,否則不予運行

OK了,代碼后續跟上……感謝各位支持。

?

?

參考資源:

https://blog.csdn.net/ddffr/article/details/77153127

https://baike.baidu.com/item/DES/210508?fr=aladdin

總結

以上是生活随笔為你收集整理的自定义VB程序加密方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。