給VB程序加密_第1頁(yè)
給VB程序加密_第2頁(yè)
給VB程序加密_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、前很多軟件干脆就把軟件密碼保存在自己的ini文件中。VB只要利用API的GetPrivateProfileString和WritePrivateProfileString兩個(gè)函數(shù)就可以很方便地讀寫ini文件,從而可以保存、讀出和驗(yàn)證密碼。首先認(rèn)識(shí)一下ini文件。 ini文件的形式為: section1 keyword1=value1 keyword2=value2 section2 keyword1=value1 keyword2=value2 section是段名,keyword是關(guān)鍵字名,value為關(guān)鍵字對(duì)應(yīng)的設(shè)定值 首先用WritePrivateProfileSection創(chuàng)建新的段名

2、和關(guān)鍵字名: Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String,ByVal lpString As String, ByVal lpFileName As String As Long Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePriva

3、teProfileStringA" (ByVal lpApplicationName As String,ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String As Long A=WritePrivateProfileSection ("user","password","c:windowsuser.ini" 在windows目錄下的user.ini文件中創(chuàng)建新段名user及該段名下的關(guān)鍵字password,如果目錄下沒(méi)有user.

4、ini文件,則創(chuàng)建該文件 B=WritePrivateProfileString ("user","password","1234","c:windowsuser.ini",設(shè)定關(guān)鍵字user的值為1234。這樣在你的user.ini文件就會(huì)多出一段: user password=1234 利用GetPrivateProfileString函數(shù)可以讀出password的值: Declare Function GetPrivateProfileString Lib "kernel32" Alias

5、 "GetPrivateProfileStringA" (ByVal lpApplicationName As String,ByVal lpKeyName As Any,ByVal lpDefault As String,ByVal lpReturnedString As String,ByVal nSize As Long,ByVal lpFileName As String As Long Dim key as String255 c=GetPrivateProfileString("user","password","

6、;false",key,255,"c:windowsuser.ini" If key="false" then MsgBox"文件不存在或沒(méi)有該字段" Else: Form1.Print"The password is "key 該函數(shù)將文件user.ini中password的值(即你設(shè)定的密碼)賦予key,若發(fā)生錯(cuò)誤(文件不存在或沒(méi)有該段名)則key的值為“false”,注意一定要聲明變量key的長(zhǎng)度并與函數(shù)中的值一致。這樣你就可以將key與登錄密碼進(jìn)行對(duì)照或直接處理key的值來(lái)決定是否繼續(xù)運(yùn)行程序。

7、使用ini文件存儲(chǔ)密碼還有一個(gè)好處,就是設(shè)計(jì)者可以建立幾個(gè)段名來(lái)存儲(chǔ)不同的密碼,從而可實(shí)現(xiàn)多用戶登錄。 5.在注冊(cè)表中標(biāo)記密碼可能是保護(hù)你的勞動(dòng)成果的最高境界了。主要方法是在注冊(cè)表中創(chuàng)建一個(gè)鍵名,在鍵值里存放你的密碼,以后運(yùn)行時(shí)則取出該數(shù)據(jù)進(jìn)行驗(yàn)證或處理,當(dāng)滿足條件時(shí)終止程序。可以認(rèn)為注冊(cè)表是"以亂取勝",只要你選擇到一個(gè)隱蔽的位置做標(biāo)記或存放數(shù)據(jù),不用做任何加密算法的處理都應(yīng)該是比較安 全的。令人驚喜的是VB很容易利用API操作注冊(cè)表。這里只簡(jiǎn)單介紹幾個(gè)API函數(shù),大家只要參照函數(shù)說(shuō)明,正確引用變量傳遞數(shù)據(jù),不需要任何技巧就可操作注冊(cè)表。 RegCreateKeyEx:創(chuàng)

8、建關(guān)鍵字,如果關(guān)鍵字已存在,則將只簡(jiǎn)單地將它打開(kāi) RegOpenKey:用于打開(kāi)某鍵 RegSetValueEx:打開(kāi)某鍵后,用于設(shè)置其鍵值 RegQueryValueEx:查詢一個(gè)存在的值,如果此函數(shù)調(diào)用成功,會(huì)返回ERROR_SUCCESS標(biāo)志 制作限時(shí)版只要會(huì)用幾個(gè)函數(shù)如day、month、year、date就行了。例如到了2001年就不能執(zhí)行程序: a=Year(Date if a>=2001 then MsgBox"對(duì)不起,該軟件已過(guò)期":End 你還可以用前面的方法使條件滿足時(shí)在硬盤上作個(gè)標(biāo)記,而用戶通過(guò)修改系統(tǒng)時(shí)間、重新安裝也不能再使用軟件。 怎么樣?學(xué)

9、會(huì)了對(duì)硬盤的簡(jiǎn)單讀寫操作,這些東東一點(diǎn)也不神秘了吧!雖然不是很高明,但很多軟件都確實(shí)使用這種方法進(jìn)行簡(jiǎn)單加密;隨著解密手段越來(lái)越高明,單一加密方法已成為過(guò)去,一些軟件同時(shí)在ini文件和注冊(cè)表等地方做標(biāo)記,當(dāng)然不是簡(jiǎn)單的把你輸入的保存起來(lái),win9x撥號(hào)上網(wǎng)時(shí)如果選擇保存密碼也會(huì)在硬盤上生成user.pwl文件,不過(guò)該文件加了密,強(qiáng)行用文本編輯器打開(kāi)時(shí)只會(huì)看到些亂碼。哈哈,又心癢癢想學(xué)其他招數(shù)了吧! * 讓軟件只能在軟盤上運(yùn)行 利用App對(duì)象的Path屬性返回可執(zhí)行文件的路徑進(jìn)行判斷。 Private Sub Form_Load( Dim a As String Dim b as String

10、a=App.Path 獲得可執(zhí)行文件的路徑 b=Left(a,1 取出第一個(gè)字符If b<>"A" Then MsgBox "本軟件只能在軟盤運(yùn)行!":End End Sub * 這種加密的原理是:程序運(yùn)行時(shí)在預(yù)定的路徑下尋找特定的文件,如果沒(méi)找到讓程序中止運(yùn)行。這種加密一般要配合安裝程序進(jìn)行,在軟件的安裝過(guò)程中埋設(shè)這一特定文件(特定文件內(nèi)容隨意),這樣,沒(méi)有軟件安裝程序的用戶直接用拷貝的方法得到你的軟件將不能運(yùn)行。這里給出的示例用到的特定文件為 winu.ocx 埋設(shè)在 windows 的系統(tǒng)目錄下。 本示例在VB60中調(diào)試通過(guò)。 '

11、;首先在啟動(dòng)窗體加入API私有聲明GetSystemDirectory, Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long As Long Private Sub Form_Load( Dim a, b As Integer Dim SysDIR As String * 100 Dim SYSDIR1 As String Form1.Show '得到windows系統(tǒng)目錄SYSDIR1 a = GetSystemDirectory(SysDIR, 100 SysDIR = Left(SysDIR, a a = Len(SysDIR b = 1 Do While b <= a If Mid(SysDIR, b, 1 = " " Then Ex it Do b = b + 1 Loop SYSDIR1 = Mid(SysDIR, 1,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論