a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

為你的VB程序程序加密(VB新手)

2019-11-18 17:44:54
字體:
供稿:網(wǎng)友
VB的好處我就不多說了。VB初學(xué)者模仿能力很強(qiáng),總希望自己的程序看起來專業(yè)一點(diǎn),如用密碼登錄、制作限次版、限時(shí)版、強(qiáng)行啟動(dòng)等等,其實(shí)這些東西并不神秘,在VB里只要用少量代碼就可實(shí)現(xiàn)。
  1.最簡單的可執(zhí)行文件密碼登錄:
  在程序啟動(dòng)時(shí)加入以下代碼:
  PRivateSubForm_Load()
  DimaasVariant
  a=InputBox("請輸入密碼!")
  Ifa<>"****"ThenMsgBox"密碼錯(cuò)誤,您不能使用本軟件!":End注釋:****為預(yù)先設(shè)定的字符
  EndSub
  怎么樣,能唬人吧。什么?太爛!
  2.在硬盤上建立一個(gè)文件用于存放密碼,這樣就可以讀寫修改了
  OnErrorGoTosss
  注釋:若文件不存在,則捕獲該錯(cuò)誤,建立密碼
  Open("c:/abc.abc")ForInputAs#1
  注釋:文件存在,則打開文件
  Input#1,b注釋:將密碼讀入變量b
  Close#1
  a=InputBox("請輸入密碼!")
  Ifa<>bThenMsgBox"密碼錯(cuò)誤,您不能使用本軟件!":End
  ExitSub
  sss:
  a=InputBox("請建立密碼!")
  Open("c:/abc.abc")ForOutputAs#2注釋:在硬盤上建立存放密碼的文件
  Print#2,a
  Close#2
  MsgBox"建立密碼成功!"
  使用InputBox輸入密碼的缺點(diǎn)是密碼被顯示出來,大家可以另建一個(gè)窗體代替輸入對話框,加入一TextBox并將其PassWordChar屬性設(shè)為*就行了。文件abc.abc可用任何文本文件打開編輯,因此在你未學(xué)會(huì)加密算法之前可將文件命名為*.sys或*.dll,并放在windows或system目錄下,甚至將其屬性設(shè)為隱藏,哈哈,系統(tǒng)文件誰敢亂改!不過要小心不要覆蓋真正的系統(tǒng)文件。
  用啟動(dòng)登錄的方法加密會(huì)令用戶反感,最好只用在軟件中較重要的修改數(shù)據(jù)部分或用于多用戶登錄。如果你想制作共享軟件,那就先試試限次版吧。
  3.軟件限定使用次數(shù)說白了也是在硬盤中的某個(gè)地方作個(gè)標(biāo)記,每啟動(dòng)一次就記數(shù)一次,當(dāng)次數(shù)加到一定值時(shí)就不允許使用軟件。以上代碼稍加改動(dòng)也能實(shí)現(xiàn):
  PrivateSubForm_Load()
  OnErrorGoTosss
  注釋:若文件不存在,則建立文件
  Open("c:/abc.abc")ForInputAs#1
  注釋:文件存在,則打開文件
  Input#1,b注釋:將數(shù)值讀入變量b
  Close#1
  Ifb>100ThenMsgBox"對不起,您只能使用本軟件100次!":End
  注釋:提示用戶使用次數(shù)并退出程序
  c=b+1注釋:計(jì)數(shù)器加1
  Open("c:/abc.abc")ForOutputAs#3
  Print#3,c注釋:將加1后的數(shù)值寫入文件
  Close#3
  ExitSub
  sss:
  Open("c:/abc.abc")ForOutputAs#2
  Print#2,1注釋:建立文件,并寫入數(shù)值1
  Close#2
  EndSub
  4.大家一定對win.ini和system.ini文件很熟悉吧,它是一種專門用來保存應(yīng)用程序初始化信息和運(yùn)行環(huán)境信息的文本文件,Windows軟件的初始化參數(shù)的獲取與保存是通過讀取擴(kuò)展名為.ini的文本文件來實(shí)現(xiàn)的。目前很多軟件干脆就把軟件密碼保存在自己的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)鍵字對應(yīng)的設(shè)定值
  首先用WritePrivateProfileSection創(chuàng)建新的段名和關(guān)鍵字名:
  DeclareFunctionWritePrivateProfileSectionLib"kernel32"Alias"WritePrivateProfileSectionA"(ByVallpAppNameAsString,ByVallpStringAsString,ByVallpFileNameAsString)AsLong
  DeclareFunctionWritePrivateProfileStringLib"kernel32"Alias"WritePrivateProfileStringA"(ByVallpapplicationNameAsString,ByVallpKeyNameAsAny,ByVallpStringAsAny,ByVallpFileNameAsString)AsLong
  A=WritePrivateProfileSection("user","password","c:/windows/user.ini")
  在windows目錄下的user.ini文件中創(chuàng)建新段名user及該段名下的關(guān)鍵字password,如果目錄下沒有user.ini文件,則創(chuàng)建該文件
  B=WritePrivateProfileString("user","password","1234","c:/windows/user.ini"),設(shè)定關(guān)鍵字user的值為1234。這樣在你的user.ini文件就會(huì)多出一段:
  [user]
  password=1234
  利用GetPrivateProfileString函數(shù)可以讀出password的值:
  DeclareFunctionGetPrivateProfileStringLib"kernel32"Alias"GetPrivateProfileStringA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsAny,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsLong,ByVallpFileNameAsString)AsLong
  DimkeyasString*255
  c=GetPrivateProfileString("user","password","false",key,255,"c:/windows/user.ini")
  Ifkey="false"then
  MsgBox"文件不存在或沒有該字段"
  Else:Form1.Print"Thepasswordis";key
  該函數(shù)將文件user.ini中password的值(即你設(shè)定的密碼)賦予key,若發(fā)生錯(cuò)誤(文件不存在或沒有該段名)則key的值為“false”,注意一定要聲明變量key的長度并與函數(shù)中的值一致。這樣你就可以將key與登錄密碼進(jìn)行對照或直接處理key的值來決定是否繼續(xù)運(yùn)行程序。
  使用ini文件存儲(chǔ)密碼還有一個(gè)好處,就是設(shè)計(jì)者可以建立幾個(gè)段名來存儲(chǔ)不同的密碼,從而可實(shí)現(xiàn)多用戶登錄。
  5.在注冊表中標(biāo)記密碼可能是保護(hù)你的勞動(dòng)成果的最高境界了。主要方法是在注冊表中創(chuàng)建一個(gè)鍵名,在鍵值里存放你的密碼,以后運(yùn)行時(shí)則取出該數(shù)據(jù)進(jìn)行驗(yàn)證或處理,當(dāng)滿足條件時(shí)終止程序。可以認(rèn)為注冊表是"以亂取勝",只要你選擇到一個(gè)隱蔽的位置做標(biāo)記或存放數(shù)據(jù),不用做任何加密算法的處理都應(yīng)該是比較安全的。令人驚喜的是VB很容易利用API操作注冊表。這里只簡單介紹幾個(gè)API函數(shù),大家只要參照函數(shù)說明,正確引用變量傳遞數(shù)據(jù),不需要任何技巧就可操作注冊表。
  RegCreateKeyEx:創(chuàng)建關(guān)鍵字,如果關(guān)鍵字已存在,則將只簡單地將它打開
  RegOpenKey:用于打開某鍵
  RegSetValueEx:打開某鍵后,用于設(shè)置其鍵值
  RegQueryValueEx:查詢一個(gè)存在的值,如果此函數(shù)調(diào)用成功,會(huì)返回ERROR_SUCCESS標(biāo)志
  制作限時(shí)版只要會(huì)用幾個(gè)函數(shù)如day、month、year、date就行了。例如到了2001年就不能執(zhí)行程序:
  a=Year(Date)
  ifa>=2001thenMsgBox"對不起,該軟件已過期":End
  你還可以用前面的方法使條件滿足時(shí)在硬盤上作個(gè)標(biāo)記,而用戶通過修改系統(tǒng)時(shí)間、重新安裝也不能再使用軟件。
  怎么樣?學(xué)會(huì)了對硬盤的簡單讀寫操作,這些東東一點(diǎn)也不神秘了吧!雖然不是很高明,但很多軟件都確實(shí)使用這種方法進(jìn)行簡單加密;隨著解密手段越來越高明,單一加密方法已成為過去,一些軟件同時(shí)在ini文件和注冊表等地方做標(biāo)記,當(dāng)然不是簡單的把你輸入的保存起來,win9x撥號(hào)上網(wǎng)時(shí)如果選擇保存密碼也會(huì)在硬盤上生成user.pwl文件,不過該文件加了密,強(qiáng)行用文本編輯器打開時(shí)只會(huì)看到些亂碼。哈哈,又心癢癢想學(xué)其他招數(shù)了吧!->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 综合91| 爆操欧美 | 国产在线拍 | 国产一区二区三区在线免费观看 | 久久窝 | 国产精品视频一区二区三区不卡 | 忘忧草精品久久久久久久高清 | 91精品国产综合久久婷婷香蕉 | 午夜精品在线 | 综合中文字幕 | 亚洲人成人一区二区在线观看 | 国产福利一区二区三区在线观看 | 国产高清在线精品一区二区三区 | 五月网婷婷| 成人亚洲免费 | 久久99久久98精品免观看软件 | 日韩av电影免费 | 一区二区三区免费看 | 日本三级黄色录像 | 欧美日韩在线视频一区二区 | 日日撸夜夜操 | 欧美日韩成人在线 | 96久久久久久 | 九九综合 | 男人av网| 日本一区二区不卡 | 一区二区日韩在线观看 | 亚洲啊v| 欧美成人精品 | 欧美色图网站 | www.久久.com| 33eee在线视频免费观看 | 不卡在线视频 | 国产一区在线免费 | 无码日韩精品一区二区免费 | 日韩视频在线观看一区 | 黄色a在线观看 | www.99日本精品片com | 日日干天天干 | 99精品网站 | 91人人看 |