漢語編程教程《易語言軟件加密技術(shù)》8月版_第1頁
漢語編程教程《易語言軟件加密技術(shù)》8月版_第2頁
漢語編程教程《易語言軟件加密技術(shù)》8月版_第3頁
漢語編程教程《易語言軟件加密技術(shù)》8月版_第4頁
漢語編程教程《易語言軟件加密技術(shù)》8月版_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

?易語言軟件加密技術(shù)?序感謝朋友們的留言,以下排名不分先后。何金:一定程度的防破是必要的。goomoo:收藏,謝謝?。iigo:這么經(jīng)典的文章竟然不署名,佩服!笨笨?。合仁詹兀瑧?yīng)該是好東西?;饍海夯藘蓚€多小時才看完……看完才發(fā)現(xiàn),自己的軟件根本屬于赤裸裸那型。icemanwd:世界上沒有破解不了的軟件,只能延遲破解的時間而已。走隨小月:易書空前的著作,收藏,消化吸收中……yjls:寫的太好,希望易公司今后發(fā)行易書里綁定。迪克:很好的文章,我已經(jīng)學(xué)了幾招。7620367:這個要反復(fù)學(xué)習(xí)。bbs171:真的不錯。雷鋒的四句名言是:對待同志要象春天般的溫暖〔我在幫助易友們提高易語言水平〕;對待工作要象夏天般的熾熱〔我是工作狂看我寫這么多就知道了〕;對待個人主義要象秋風(fēng)掃落葉一樣〔對支持破解的人要堅決反對〕;對待敵人要象嚴(yán)冬一樣殘酷無情〔打擊盜版是大家共同的責(zé)任〕。友情廣告位全中文全可視跨平臺編程軟件——中國共享軟件聯(lián)盟htt易語言學(xué)習(xí)園地QQ:10153314易容大師中時空網(wǎng)絡(luò)(://3cts)提供優(yōu)質(zhì)的虛擬主機效勞,杜雪QQ:2331096迪克條碼清心網(wǎng)站BBS171:新網(wǎng)互聯(lián)高級代理,CN可先注冊后付款!舍曼妮QQ:366221

前言本文為全中文編寫,不需要有PE文件格式知識,不需要掌握匯編或C語言的編程技巧,一些加密算法直接由易語言提供,特殊的加密算法大家可以翻譯C語言代碼、匯編代碼或VB代碼。本文中將“Cracker〞一詞翻譯為“奸人〞,意為“奸邪小人〞之義。本人對破解者一向深惡痛絕,有人說中國的軟件開展中破解者有一份功績,可我說這話不對,看看因盜版而產(chǎn)生的微軟對操作系統(tǒng)及軟件業(yè)的壟斷,國內(nèi)軟件業(yè)在盜版的夾縫中生存……,如此下去,軟件作者沒有收益,將不再會有優(yōu)秀的軟件推出。防止盜版,匹夫有責(zé),我想通過本書的推出可以加強易語言用戶的加密能力,將盜版殺死在大家共同的手中。本書集成了多位作者的公開著述,在此一并表示感謝。其中局部文字內(nèi)容根據(jù)易語言的特性作了修正。文中不署作者姓名,以防止奸人對他們的軟件的刻意破解。隨著采用易語言編制程序的人們越來越多,寫一個軟件易被奸人破解的情況也越來越多了,有個別用戶甚至于疑心易語言是否有平安性。從技術(shù)性上來說,我只能說加密技術(shù)與編程語言無關(guān),一個編程語言的平安性一般指所生成的機器碼是否穩(wěn)定、可靠,而不是防破解方面,如果想要很好地防止破解,那么掌握一門加密技術(shù)是非常必要的。本書考慮到使用易語言的用戶大局部對PE文件結(jié)構(gòu)不太熟悉,因此沒有采用很底層的方法去教學(xué),而是采用與易語言直接表達(dá)的方式試圖說明如何加密。本書根本上是按以下的順序進(jìn)行講解的:破解技術(shù)反破解技術(shù)1反破解技術(shù)2反破解技術(shù)3防改文件文件名驗證LOGO圖片驗證窗口標(biāo)題驗證防改文件大小暴破加殼后數(shù)據(jù)簽名驗證加殼后CRC驗證文件大小驗證防調(diào)試花指令反調(diào)試模塊反調(diào)試支持庫內(nèi)存注冊機不進(jìn)行判斷,用循環(huán)代替字符串打亂器及時清內(nèi)存算法注冊機RSA算法數(shù)值計算支持庫其他多處驗證點隨機驗證命名刻意隱蔽

目錄TOC\o"1-3"\h\z?易語言軟件加密技術(shù)? 1一.易語言程序加密的目的 51.保持軟件的完整性 52、保護軟件開發(fā)者的權(quán)益 5二.易語言程序加密的原那么 51.加密前要考慮周到且嚴(yán)密 52.需要加密的內(nèi)容要制定一個方案 63.加密時制作好文檔,以備以后的修改 64.發(fā)布前問一下是否可以正式發(fā)布軟件了 6三.防止程序內(nèi)容被更改 71.防止軟件名稱被更改 72.防止窗口標(biāo)題被更改 73.防止LOGO圖片被更改 8四.防止文件被暴破 81.常用加殼軟件介紹 82.加殼后文件大小驗證 123.加殼后數(shù)據(jù)簽名驗證 124.加殼后CRC驗證 13五.防調(diào)試方法 141.易語言的花指令 142.反調(diào)試模塊的使用 153.反調(diào)試支持庫的使用 154.通過檢查父進(jìn)程得知是否被調(diào)試了 165.使用多線程 17六.注冊機制作 171.簡單注冊原理 172.RSA算法注冊 183.?dāng)?shù)值計算支持庫 24七.給奸人一些教訓(xùn) 241.給破解者的教訓(xùn) 242.給破解版使用者的教訓(xùn) 273.行為不要過火 27八.網(wǎng)絡(luò)驗證法 271.實現(xiàn)的原理 272.存在的幾個問題 28九.加密狗加密 281.加密狗的選用 292.加密狗加殼法 303.加密狗寫存儲器法 30十.加密算法策略 311.易數(shù)據(jù)庫密碼怎么瀉露了 312.利用吳氏加密算法 343.海島挖寶 344.隨機驗證 355.不同權(quán)限驗證 366.忽悠型的垃圾驗證代碼 377.偽驗證技術(shù) 398.定時驗證、延時驗證、客戶數(shù)據(jù)集累驗證 409.驗證與專業(yè)知識相結(jié)合技術(shù) 4010.偽裝,用易語言寫自有支持庫 4011.絕妙的暗樁設(shè)置 4112.發(fā)布不完整版本 4113.自定義算法 4114.加密框圖 42附錄1加密已形成密碼學(xué) 43附錄2?如何用簡單方法防止破解? 44附錄3代碼與數(shù)據(jù)結(jié)合技術(shù) 45

〔正文〕一.易語言程序加密的目的在此有必要說明一下為何要為自己的程序進(jìn)行加密,初步認(rèn)為有以下兩點:1.保持軟件的完整性這里包括了文件名不被更改,文件版權(quán)信息不被更改,文件尺寸不被更改。很多時候有的奸人拿到您的軟件,他可以將文件名更改,將文件版權(quán)信息的字符串或圖片更改,然后放上自己的東西,如放上病毒可以對其他電腦造成破壞,如果放奸人的彈出廣告收益的是奸人,而不是作者。相反,使用這些軟件的用戶反而將作者痛罵一通,造成聲譽上的損失。因此處于保護自己的完整權(quán)益來說,也是有必要保護軟件的完整性。例如QQ軟件,曾出現(xiàn)過多款個人行為的補丁版,更改了QQ的一些信息與界面,為此QQ公司十分頭痛,以后的一些事大家也知道,現(xiàn)在看是破解QQ的很少了,而且在安裝QQ新版本時,它會檢查是否有破解補丁存在,如果存在就不運行。2、保護軟件開發(fā)者的權(quán)益也許你會說,一個不被破解的軟件一定是一個沒有加密的軟件,那么看看下文您就會知道,那只是一個理想中的事情,除非您是有錢了沒有事干的人,否那么您開發(fā)軟件的目的是什么我是很難知道的。無論是個人還是公司,如果生產(chǎn)一個軟件得不到收益,以及后繼開發(fā)資金的鼓勵,那么無疑這個軟件是很難再開發(fā)下去的。這樣的例子很多很多,我不想舉例,國內(nèi)已出現(xiàn)了很多軟件的破解版,而一旦出現(xiàn)了破解,那么所造成的損失是非常大的。二.易語言程序加密的原那么早先人們的加密方法是通過在軟盤上格式化一些非標(biāo)準(zhǔn)磁道,在這些磁道上寫入一些數(shù)據(jù),如軟件的解密密鑰等等。這種軟盤成為“鑰匙盤〞。軟件運行時用戶將軟盤插入,軟件讀取這些磁道中的數(shù)據(jù),判斷是否合法的“鑰匙盤〞。軟盤加密還有其它一些技術(shù),如弱位加密等等。隨著近年來軟盤的沒落,這種方法根本上退出了歷史舞臺。新的軟件加密技術(shù)也越來越多了。1.加密前要考慮周到且嚴(yán)密說實話,有很多人在易語言論壇上發(fā)貼,說自己用易語言編寫的軟件有了破解,還非??鞓?,有人用才會被破解,但我想,如果是很快樂的這樣子,除非你的軟件技術(shù)含量很低,或你是微軟,想被別人破解,您不應(yīng)該快樂,這有點象別人打了你一耳光,你還很快樂,你的知識產(chǎn)權(quán)或著作權(quán)已被奸人侵犯了,性質(zhì)很惡劣,后果很嚴(yán)重。除了拿起法律武器,勞命傷財,還有就是加強加密方式。如果被制作出注冊機,情況是最糟糕的,作者需要全部更換全部用戶的注冊KEY文件,工作量相當(dāng)?shù)叵喈?dāng)?shù)卮蟆R虼艘粋€好的軟件保護發(fā)布前必須考慮周到,而且是面面俱到,否那么出一個新版,發(fā)現(xiàn)一個破解,再出一個新版去修正,那樣的事情是極其弱智的。2.需要加密的內(nèi)容要制定一個方案一開始不明白如何加密的易語言用戶,一般就找一下論壇上關(guān)于注冊的例程套用到自己的程序中,認(rèn)為這樣就是加密了,實際上本節(jié)所要講的是制作一個學(xué)習(xí)方案,將所有需要用到的知識與軟件都收集到,這個方案就是一個加密方案,也是本書所要講述的。3.加密時制作好文檔,以備以后的修改在加密中有可能使用了多處加密,因此需要將文檔寫好,以防止以后忘記,實際上您可以在易語言中使用備注的方式作以說明,這些備注在編譯時是不會被編譯進(jìn)目標(biāo)EXE文件中的。節(jié)省了寫外部文檔的時間。4.發(fā)布前問一下是否可以正式發(fā)布軟件了制定一個風(fēng)險評估標(biāo)準(zhǔn),以考驗一下程序的風(fēng)險性,被破解的可能性,如果你是破解者,在不知道如何加密的情況下會如何去破解這個軟件。有一個參考的評估標(biāo)準(zhǔn)在下面。共享軟件注冊加密自我評測表評測方法:以下問題,假設(shè)答案為是加1分。是否加殼?是否采用兩種以上的不同的工具來對程序進(jìn)行加殼/壓縮?是否有軟件自身的完整性檢查功能?〔CRC校驗或其他〕與軟件保護相關(guān)的字符串是否有進(jìn)行加密處理?是否采用了比擬成熟的密碼學(xué)算法?是否有多處驗證點,調(diào)用多個不同函數(shù)或判斷多個不同全局標(biāo)志進(jìn)行注冊驗證?是否有隨機驗證的功能?是否采用了在線驗證功能?注冊過程中是否盡量少地給用戶提示信息?是否不依賴于GetLocalTime()、GetSystemTime()這樣眾所周知的函數(shù)來獲取系統(tǒng)時間?是否有偽破解功能?是否在軟件中嵌入了反跟蹤的代碼?是否對校驗函數(shù)命名做了刻意隱蔽?是否將注冊碼、安裝時間記錄在多個不同的地方?是否在校驗時成心參加冗余干擾代碼來誤導(dǎo)解密者?是否有自己獨特的防破解措施?建議:得分在6分以上才可以正式發(fā)布軟件!制中國共享軟件聯(lián)盟·lcraz三.防止程序內(nèi)容被更改從本節(jié)開始,已進(jìn)入講解加密的正題,但可能章節(jié)不必這樣劃分,即按加密/破解的方法來劃分,如防反調(diào)試,反跟蹤,反……。但筆者覺得,從一個一個小的知識點的進(jìn)入是非常重要的。下面的有些內(nèi)容是我請教了酒桶醉死的經(jīng)驗后總結(jié)的,在此表示感謝。1.防止軟件名稱被更改這里是極為簡單的方法:判斷〔到大寫〔取執(zhí)行文件名〔〕=“我的程序.EXE〞〕在上述中,為何使用到“判斷〞命令,而不是“如果〞命令呢,大家可以想一下,“判斷〞命令的代碼平安性要比“如果〞命令高,這里不會舉出一個匯編的例子,只要說明一下即可。即“判斷〞命令是多重分支結(jié)構(gòu),這樣就增加了被破解的難度,因此,大家一定要注意這樣一件事情,就是在進(jìn)行加密比擬時一定不要使用比擬的語句,那樣很容易被奸人使用破解工具下斷點,那么正確的做法應(yīng)該是如何的呢,請看下面代碼:計次循環(huán)首〔到數(shù)值〔是否注冊成功〔〕〕,〕全局_注冊成功=1計次循環(huán)尾〔〕通過上面的代碼可以看出,這里沒有使用判斷語句,而采用了一個循環(huán)命令去參與。其中“是否注冊成功〔〕〞確實是返回了一個邏輯值,但通過“到數(shù)值〔〕〞命令后就會被為0或1之間的一個數(shù)字,會用易語言的人都知道,一個循環(huán)命令中,如果循環(huán)數(shù)為1,會執(zhí)行循環(huán)中的命令,否那么為0不進(jìn)入循環(huán)。生成機器碼后,奸人會很難找到判斷的匯編碼,大大加強了保護性。上述的根本方法是有了,但請您將這個方法隱藏于您的程序代碼行的某一深處,實際上加密是各種方法的綜合,現(xiàn)在所教的只是其中的一種,大家要將多種加密方式用于一個軟件之中。這需要大量的時間學(xué)習(xí)與體會。加密第1定理:“如果〔〕〞語句一定不要出現(xiàn)在加密算法中。加密第2定理:用“循環(huán)〞類命令代替判斷語句。2.防止窗口標(biāo)題被更改窗口標(biāo)題是否被別人更改這個也可以通過與上述同樣的方法實現(xiàn)驗證。判斷〔_啟動窗口.標(biāo)題=“我的程序.EXE〞〕大家也許會說,這些好象沒有必要吧,誰會這么無聊,將軟件的名稱與窗口標(biāo)題更改呢,大家看這樣一個例子吧:有一個電腦培訓(xùn)班,采用了明倫五筆練習(xí)打字軟件進(jìn)行電腦培訓(xùn)班,他們破解了,且修改了明倫打字軟件的版權(quán)信息,改為自己電腦培訓(xùn)班的標(biāo)志,產(chǎn)生的教學(xué)效果即:學(xué)生認(rèn)為這家培訓(xùn)班的技術(shù)實力很強,自己可以開發(fā)打字軟件,而且經(jīng)常彈出電腦培訓(xùn)班的標(biāo)志與廣告,產(chǎn)生了很好的廣告效果,學(xué)生介紹學(xué)生,更多的學(xué)生參與進(jìn)來了。從上述事件看,很顯然明倫打字軟件的作者一點好處也沒有,全部被破解者侵占了。因此一個好的軟件保護必須是全面而且周到的。另外,我要提醒大家的是,這樣的語句也是非常不保險的,這樣的話很容易被奸人改了字符串,以致于字符串也被更改了,或很快能找到比擬的地方,從而輕松跳過去。較為理想的是將字符串打亂,即將“我的程序.EXE〞以“字符〔〕〞、“取代碼〔〕〞、“取反〔〕〞、“異或〔〕〞等命令用字符串相加的方法加在一起成為一個字串后再比擬。判斷〔取數(shù)據(jù)簽名〔_啟動窗口.標(biāo)題〕=取數(shù)據(jù)簽名〔“我的程序.EXE〞〕〕3.防止LOGO圖片被更改有的人怕程序信息被更改,采用了圖片顯示程序標(biāo)題的方式,這樣這種圖片較不易被奸人修改,但可能也有個別高手進(jìn)行修改,因此圖片的大小是知道的,這樣可以用以下語句進(jìn)行判斷:計次循環(huán)首〔到數(shù)值〔取字節(jié)集長度〔_啟動窗口。底圖〕=342488〕〕,〕其中上述的數(shù)字是您的圖片大小尺寸字節(jié)數(shù),而不是亂寫得來的。也可以將圖片放在易語言的資源中,直接進(jìn)行比擬。計次循環(huán)首〔到數(shù)值〔_啟動窗口。底圖〕=#圖片1〕,〕以上方法雖然軟件的體積大了一些,但帶來的直接好處是,程序量一大,為破解帶來了更大的困難,雖然損失了體積,但保證了平安。你的關(guān)于窗口也要這樣保護起來哦。使用數(shù)據(jù)操作支持庫中的“加密數(shù)據(jù)〔〕〞、“解密數(shù)據(jù)〔〕〞命令加密圖片后存放在圖片資源中,用時再解密顯示出來。例如您的一些口令就直接用這個加密就可以了。解密時注意直接放在一行代碼中比擬,不要存到一個變量中,這樣在內(nèi)存中是找不到明文的。四.防止文件被暴破暴破是指破解者在模擬算法失敗的情況下,惱羞成怒,狗急跳墻,一氣之下暴力破解,將軟件的殼脫掉,將要求注冊的局部直接跳過去,這樣直接產(chǎn)生的后果是文件大小被改變了。在此,先介紹一下常用的加殼軟件。1.常用加殼軟件介紹加殼軟件分為普通殼與加密殼。加殼可壓縮文件大小,并且將一些本來清晰的字串進(jìn)行了打亂的效果。普通殼的作用是壓縮資源,使文件尺寸變小,一般可使易語言縮小一半以上的尺寸,有的還可以減少系統(tǒng)資源占用。其他編程語言生成的EXE文件加殼后有可能變大,例如C語言生成的程序本來就小,壓縮不了尺寸,這時再加上一個殼,尺寸反而會變大。普通殼有:UPX,ASPACK,ASProtect,PKLITE,PECompact等。加密的殼有:幻影,軟件保護神等。加密的殼可以提供直接的注冊碼功能。加密的殼由于是公用殼,很多人都去購置使用,一般容易被奸人看中脫殼,靈活性也差。如果被破解了,那么后果是十分嚴(yán)重的。下列圖是UPXShellv3.10軟件的運行界面:下列圖是ASPACK軟件的運行界面:下列圖是PKLITE軟件的運行界面:下列圖是PECompact軟件的運行界面:下列圖是“幻影〞加殼軟件的運行界面:下列圖是“軟件保護神〞加殼軟件的運行界面:殼加完后,余下的工作就是防止脫殼了,一般來說,很多人都想要一個很強的殼,但一方面任何殼都有可能被破解,另一方面殼的兼容性就有很大的問題。如采用強殼的?系統(tǒng)管理?采用了一個國外出品的強殼,確實是很難脫掉的,但由于破解版的原因,在WIN98下運行時經(jīng)常會死機。正式版的價格也非常高,根本上要1000元RMB左右。而常用的普通殼雖然強度并不高,但通過易語言編程進(jìn)行校驗,可以保護您的殼不被輕易脫掉。加密第3定理:用最普通的殼,讓弱手們?nèi)ッ撁摽矗∥疫€有校驗等著呢。2.加殼后文件大小驗證加殼后一些數(shù)據(jù)平安得到了保證。這包括一些沒有加工過的字符串,例如:數(shù)據(jù)庫密碼,加密算法密碼。加壓縮殼后,易語言的EXE文件尺寸一般會變小,一般1.5MB的軟件會變小為800KB左右。那么最常用的文件大小驗證可以用如下易語言代碼:判斷〔取文件尺寸〔取執(zhí)行文件名〔〕〕=843674〕上述代碼中的數(shù)值是經(jīng)過查看編譯及加殼后文件屬性大小生成的,但由此造成兩種不方便的地方:一是由于易語言造成每次編譯后的文件大小是不一樣的,因此很難將這個數(shù)值取對,二是這個值放在哪里好,如果放在主程序中的話,那么每次生成的文件大小不一樣,就會造成取不準(zhǔn),比擬不了的現(xiàn)象。建議大家在比擬時可以將代碼寫成以下形式:判斷〔取文件尺寸〔取執(zhí)行文件名〔〕〕≥900000〕通過以上運算符的改變后,根本上可以知道是否被脫了殼了,因為脫了殼后程序的體積會增加很多。3.加殼后數(shù)據(jù)簽名驗證易語言自帶一個“數(shù)據(jù)操作支持庫〞,根本可以滿足平安加密的需要。如下列圖所示:這里較為常用的命令是“取數(shù)據(jù)摘要〔〕〞,這個命令是采用了MD5算法,不同數(shù)據(jù)的MD5碼都不一樣,因此本命令可以用作保證重要數(shù)據(jù)不會被篡改。對于不同的數(shù)據(jù),其得出的結(jié)果是不一樣的。如果奸人將您的軟件脫殼了、改動了,那么前后所取得的結(jié)果也是不一樣的?!叭?shù)據(jù)摘要〔〕〞得出的結(jié)果是返回一段字節(jié)集數(shù)據(jù)的MD5數(shù)據(jù)摘要編碼文本。一般是32位字節(jié)的數(shù)據(jù)。但這樣帶來了這樣一個問題:即我們?nèi)〉昧思託ず筌浖臄?shù)據(jù)摘要,但是放在軟件中后再編譯再加殼再取數(shù)據(jù)摘要后,本次取值與前面所取的值是不一致的。采取的方法一般是將數(shù)據(jù)摘要文本存放在外部。一般會采用以下的方式:第一種方式:加密后存放在一個文件中。第二種方式:加密后存放在DLL中。第一種方式可以直接存在一個文件中,也可以夾存在其他文件中,如圖片文件中,或音樂文件中,或DLL文件中〔硬寫在DLL段中〕。第二種方式可取得主程序的數(shù)據(jù)摘要后,直接在DLL程序的源程序中寫比擬代碼。然后編譯為DLL文件,由主程序調(diào)用此比擬DLL。這樣保證了主程序的數(shù)據(jù)摘要與主程序別離從而加強了主程序的平安性。4.加殼后CRC驗證我們很有必要給自己的軟件加上更好的保護。CRC校驗就是其中的一種不錯的方法。CRC是什么東西呢?其實我們大家都不應(yīng)該會對它陌生,回憶一下?你用過RAR和ZIP等壓縮軟件嗎?它們是不是常常會給你一個惱人的“CRC校驗錯誤〞信息呢?我想你應(yīng)該明白了吧,CRC就是塊數(shù)據(jù)的計算值,它的全稱是“CyclicRedundancyCheck〞,中文名是“循環(huán)冗余碼〞,“CRC校驗〞就是“循環(huán)冗余校驗〞。CRC有什么用呢?它的應(yīng)用范圍很廣泛,最常見的就是在網(wǎng)絡(luò)傳輸中進(jìn)行信息的校對。其實我們大可以把它應(yīng)用到軟件保護中去,因為它的計算是非常非常非常嚴(yán)格的。嚴(yán)格到什么程度呢?你的程序只要被改動了一個字節(jié)〔甚至只是大小寫的改動〕,它的值就會跟原來的不同。呵呵,是不是很厲害呢?所以只要給你的“原〞程序計算好CRC值,儲存在某個地方,然后在程序中隨機地再對文件進(jìn)行CRC校驗,接著跟第一次生成并保存好的CRC值進(jìn)行比擬,如果相等的話就說明你的程序沒有被修改/破解過,如果不等的話,那么很可能你的程序遭到了病毒的感染,或者被奸人用16進(jìn)制工具暴力破解過了。CRC的本質(zhì)是進(jìn)行XOR運算,運算的過程我們不用管它,因為運算過程對最后的結(jié)果沒有意義;我們真正感興趣的只是最終得到的余數(shù),這個余數(shù)就是CRC值。易語言用戶林子深提供了一個CRC32.EC的易模塊,這個模塊可以在論壇上或資源網(wǎng)上搜索到。大家可以直接拿過來用,導(dǎo)入易語言后如下列圖所示:調(diào)用方式可為如下代碼:其中上述的數(shù)字為主程序的CRC碼值。大家可以利用上述特性,即結(jié)果是數(shù)值的特性,不用進(jìn)行比擬,而是用加減法的方法得出前后兩個CRC驗的差值,如果為0,那說明兩個數(shù)字是相等的,主程序沒有被改動過。否那么就是被改正的。例如下述代碼:程序被改=1程序被改=0-跳出循環(huán)〔〕計次循環(huán)尾〔〕返回〔程序被改〕上述代碼中,“取絕對值〔〕〞是將負(fù)數(shù)也轉(zhuǎn)換為正數(shù),以方便進(jìn)行計次循環(huán)。上述代碼中,數(shù)值型變量“程序被改〞為1表示沒有被改動過,如果為0表示被改動過。返回的數(shù)值就可以進(jìn)行一些陷阱的計算了。我的方案的缺點分析:CRC-32的值其實可以由奸人自行計算得出后,重新寫入到程序驗證處。這樣的話,我們做的工作豈不是沒有意義了?其實解決的方法還是有的,我們可以在計算CRC-32值之前,對參與轉(zhuǎn)換的字符串加點手腳,例如對這個字符串進(jìn)行移位、xor等操作,或者把自己的生日等信息參加到字符串中,隨你的便什么都行,總之不是單純的文件的內(nèi)容就行了,然后在最后比擬的時候,也用同樣的方法反計算出CRC-32值。這樣得到的CRC-32就不是由文件的內(nèi)容計算出來的,相信對破解者的阻力也會加大不少??偨Y(jié):以上的方法大家都可以在軟件中采用,最好寫到一個DLL文件中,然后多放幾個需要驗證的子程序,隨時以備調(diào)用即可。五.防調(diào)試方法1.易語言的花指令加花指令的方法有通用性,即所有的反匯編器都可以用這種方法來抵擋。這種方法主要是利用不同的機器指令包含的字節(jié)數(shù)并不相同,有的是單字節(jié)指令,有的是多字節(jié)指令。對于多字節(jié)指令來說,反匯編軟件需要確定指令的第一個字節(jié)的起始位置,也就是操作碼的位置,這樣才能正確地反匯編這條指令,否那么它就可能反匯編成另外一條指令了。并且,多字節(jié),指令長度不定,使得反匯編器在錯誤譯碼一條指令后,接下來的許多條指令都會被錯誤譯碼。所以,這種方法是很有效的。易語言新版本中增加了自動插入花指令的功能,并且插入后雖然文件體積大了一些,但不會造成運行錯誤。大家可以點擊菜單“工具〞→“系統(tǒng)配置〞。彈出的窗口如下列圖所示。不采用花指令時,反編譯出來的代碼幾乎是跟源代碼一一對應(yīng)的,這樣一來我們的程序還有什么秘密可言呢?完全可以從反編譯的結(jié)果中理解程序的功能。其實花指令就是人為地構(gòu)造一些“陷阱〞和一些無用的字節(jié),起到迷惑破解者和隱藏信息的作用。在這里,易語言為你構(gòu)造了這些“陷阱〞。大家只要將上述配置項翻開就可以了。同時也提醒大家,在發(fā)布新版本時采用以下的方式:第一周發(fā)布的是花指令級別為1,第二周發(fā)布的是花指令級別為2,第三周發(fā)布的是花指令級別為3,第四周發(fā)布的是花指令級別為1……,周而復(fù)始,這樣破解者根本跟不上你變換的速度。加密第4定理:每周發(fā)布一個新版本,讓破解的速度趕不上發(fā)布的速度。2.反調(diào)試模塊的使用目前易語言論壇上出現(xiàn)了一些模塊或支持庫,帶有反調(diào)試的功能,當(dāng)啟用后,就會查看進(jìn)程中有無調(diào)試器,如SOFTICE等調(diào)試工具,對易語言的調(diào)試也同樣有效。由林子深提供的另一個模塊:“星光滅絕〞模塊大家也可以嘗試用一下,為何說是嘗試呢,這些模塊并不穩(wěn)定,并且極易造成WIN98下程序死機。并且翻開易語言也會認(rèn)為是調(diào)試器,從而會自動退出。大家自己在易語言論壇上搜索吧。不推薦大家使用。3.反調(diào)試支持庫的使用海洋的支持庫也提供了反調(diào)試的功能,具體是海洋增強支持庫。但要注意兼容性問題,一定要在多個操作系統(tǒng)下進(jìn)行嚴(yán)格的測試后才能發(fā)布。4.通過檢查父進(jìn)程得知是否被調(diào)試了一般情況下,運行的程序的父進(jìn)程是EXPLOER,在易語言中調(diào)試運行的父進(jìn)度是易語言,而在破解人手中運行的父進(jìn)程是用于破解的調(diào)試軟件。因此我們就有必要判斷程序的你進(jìn)程是否是EXPLOER或易語言,如果不是,非常有很大的可能是在奸人的調(diào)試軟件中被調(diào)用了,這時就好辦了。哈哈。易語言論壇的用戶“笨笨啊〞提供了一個取進(jìn)程與父進(jìn)程的模塊,并且有模塊源代碼,程序主要是由API取得進(jìn)程內(nèi)容。大家可以搜索易語言論壇,用戶名為“笨笨啊〞,或關(guān)鍵字為“父進(jìn)程〞可以找到這個源代碼。下列圖是在易語言中調(diào)試程序時,父進(jìn)程為易語言:下列圖是易語言編譯后運行,其父進(jìn)程是EXPLORER.EXE,編號為860:加密第5定理:一個正常EXE的父進(jìn)程是EXPLORER.EXE不過這里要注意的是:奸人有可能將調(diào)試程序的名稱改為EXPLORER.EXE,這樣可以偽裝一下嗎?不可以,你需要檢查一下名稱為EXPLORER.EXE的進(jìn)程有幾個,進(jìn)程ID是不是一樣的?如果有兩個不同的進(jìn)程ID,那么這時再判定就可以知道是不是被奸人調(diào)試了。5.使用多線程在Debug的手冊里可以看到Debug工具的局限:第一個局限是只能下4個內(nèi)存區(qū)域的斷點,每個斷點不能控制超過兩個字節(jié),這樣內(nèi)存斷點不能控制超過16個字節(jié)的區(qū)域;第二個局限是對多線程只能同時跟蹤一個線程。因此利用其的第二個弱點,大家可以多開幾個線程進(jìn)行來回驗證。多線程的編程方法參看易語言。一般開5-8個線程就夠奸人忙活的了。加密第6定理:使用5個以上多線程來回驗證注冊。六.注冊機制作1.簡單注冊原理在易語言安裝后的程序“\e\lib\krnln\samples\軟件注冊.e〞就是演示了軟件注冊的原理。其中有一個子程序是重復(fù)取硬件碼的,存在取硬件碼失敗的情況,因此要重復(fù)多取幾次,如果取失敗就用一個默認(rèn)的硬件碼代替。這個大家一定要看一看,注冊機的原理就是:用戶在使用過軟件一段時間后,認(rèn)為軟件較為理想,要求向作者注冊,而此軟件中提供了用戶本機上的硬件號,用戶將此硬件號發(fā)給作者,作者給出一個注冊碼,用戶拿到此注冊碼后填寫,軟件就注冊成功。注冊碼的計算是由硬件號產(chǎn)生的,計算過程只有作者知道。例如:用戶機器上的硬件號為34,作者返回的注冊碼為1904。用戶在注冊碼輸入欄中輸入1904,那么注冊成功。作者是這樣計算的,34X56=1904。那么軟件中也是這樣計算的。以上介紹的只是例子,大家也許會說,從1輸?shù)?999,總有一個會遇上的,但事實是硬件碼不會這樣簡單,可以是16進(jìn)制的,而計算也不會這么簡單,可能會用上矩陣也說不定,因此相比擬而言,靠猜想的方法去破解是愚蠢的。下面看一下易語言自帶例程中的程序代碼,此為要求用戶輸入注冊碼時的判斷語句:此為判斷語句調(diào)用的返回注冊碼的子程序:通過以上檢查是否輸入的硬件碼與注冊碼對映。而軟件作者手上有一個注冊機,可以生成此硬件代碼,大家可以在此例程上加一個按鈕,此按鈕的代碼如下:這樣作者就可以很輕松地得到注冊碼,然后將這個注冊碼發(fā)給用戶用于注冊了。上述只是在一個理想的狀態(tài)中實現(xiàn)的,即沒有奸人對你的軟件進(jìn)行破解。如果奸人看上了你的軟件,只靠這么簡單的方法,那么一定會吃大虧的。因此大家在注冊碼生成的計算上要想盡一切方法使之復(fù)雜化,如:采用位異,采用加上計算數(shù)值,采用……有些方法將在后面章節(jié)中進(jìn)行介紹。2.RSA算法注冊①RSA簡介使用RSA非對稱密鑰算法對指定字節(jié)集數(shù)據(jù)進(jìn)行簽署,支持32到4096之間任意合法的RSA位數(shù),返回簽署后的結(jié)果文本。說明一,電子簽名系統(tǒng)簡要實現(xiàn)方法:首先給所有具有簽署權(quán)利的人員授予不同的RSA鑰匙,RSA鑰匙由“公鑰〞、“私鑰〞、“公共模數(shù)〞三局部組成,為了生成符合要求的隨機密鑰,可以下載使用://dywt/RSATool2v14.rar第三方工具軟件〔內(nèi)有操作說明〕。然后將所有人員的“公鑰〞和“公共模數(shù)〞成對向外公布,“私鑰〞由被授予人員自行妥善保管。被授權(quán)人員使用“私鑰〞和“公共模數(shù)〞對指定數(shù)據(jù)進(jìn)行簽署,然后將簽署后的結(jié)果文本隨同被簽署數(shù)據(jù)一起發(fā)送,接收者收到后,使用該簽署者公開的“公鑰〞和“公共模數(shù)〞及簽署結(jié)果文本對被簽署數(shù)據(jù)進(jìn)行驗證,如驗證通過那么說明該數(shù)據(jù)必定是此簽署者所認(rèn)可的,且沒有經(jīng)過任何篡改。說明二,數(shù)字簽名用作軟件注冊系統(tǒng)的實現(xiàn)步驟:1、欲注冊用戶提供注冊信息〔如硬件代碼、用戶姓名等〕;2、軟件作者使用自己的私鑰對該注冊信息進(jìn)行數(shù)字簽署得到簽署結(jié)果文本;3、將此簽署結(jié)果文本作為注冊鑰匙文件發(fā)送給用戶;4、在用戶端的軟件使用相同的用戶信息、注冊鑰匙文件及軟件作者的公鑰進(jìn)行簽名驗證,如果通過說明已經(jīng)注冊,否那么表示未注冊。使用本方法在私鑰未泄露的前提下,可以絕對防止破解者做出軟件的注冊機。②RSA工具使用簡介RSATool工具運行界面如下列圖所示:有很多人說RSA工具不會用,其實RSA工具的使用方法吳濤已說明得非常清楚了。下面引用吳濤說明書的原文:吳濤寫的RSATool工具使用說明書如下:RSATool2.14工具軟件使用指南:〔軟件下載地址:://eyuyan/RSATool2v14.rar〕為了生成符合要求的隨機RSA密鑰,請類似如下操作:1、在“NumberBase〞組合框中選擇進(jìn)制為10;2、單擊“Start〞按鈕,然后隨意移動鼠標(biāo)直到提示信息框出現(xiàn),以獲取一個隨機數(shù)種子;3、在“KeySize(Bits)〞編輯框中輸入32;4、單擊“Generate〞按鈕生成;5、復(fù)制“Prime(P)〞編輯框中的內(nèi)容到“PublicExp.(E)〞編輯框;6、在“NumberBase〞組合框中選擇進(jìn)制為16;7、記錄下“Prime(P)〞編輯框中的十六進(jìn)制文本內(nèi)容。8、再次重復(fù)第2步;9、在“KeySize(Bits)〞編輯框中輸入您所希望的密鑰位數(shù),從32到4096,位數(shù)越多平安性也高,但運算速度越慢,一般選擇1024位足夠了;10、單擊“Generate〞按鈕生成;11、單擊“Test〞按鈕測試,在“Messagetoencrypt〞編輯框中隨意輸入一段文本,然后單擊“Encrypt〞按鈕加密,再單擊“Decrypt〞按鈕解密,看解密后的結(jié)果是否和所輸入的一致,如果一致表示所生成的RSA密鑰可用,否那么需要重新生成;12、到此生成完成,“PrivateExp.(D)〞編輯框中的內(nèi)容為私鑰,第7步所記錄的內(nèi)容為公鑰,“Modulus(N)〞編輯框中的內(nèi)容為公共模數(shù),請將上述三段十六進(jìn)制文本保存起來即可。③一個簡單的RSA注冊機例如:我們已通過上述RSA工具得到以下三個變量:公鑰:20063私鑰:7FC4638275AF6B27AFD040FED32A941D227154ECDE37ABFF73D72DB50F9FC70C75BC3AF0EC26016BC706D953A9C5D6831E0DDD27B42A182CB92A6E426693511E42EB0BF9D64459809D5EC305E13B2A85BA004BA934232305D3DA1205E7AD1D01744BBCF286B23D64CC68371FDD39DAA43861920DA3DE5F9335A77983BFD08A83公共模數(shù):CEB774FCCE9DB84A4452A0774264FC55F35A8D8AA9D1FC5EBD3E0880B7B62A4EF834FD6E855CD84A4D04F3BBDE32180FC3EE45AB5582C2320A6575C6ECF923A24EAF59F22F930631347E0E3B0477A89FCE22FE741F5053EC5320AAF6489CC407056361F01E031A02DB52CB0CBDFBB11F72C340354C6CAB78D97630EB8A6A5431初始化代碼如下:注冊窗口設(shè)計界面如下:注冊按鈕代碼如下:上面的程序窗口插在用戶的程序中,當(dāng)需要注冊時即彈出注冊。作者手中的注冊機軟件界面如下:〔注意保密〕生成按鈕代碼如下:〔注意保密〕上述程序已在易語言4.0中運行通過。運行抓圖如下所示:加密第7定理:RSA算法雖然很強,但弱在鑰匙文件如何保密上。④算法實現(xiàn)中的考前須知上述代碼中取硬件碼的命令沒有采用重復(fù)取,而只取了一次,在實際操作中需要正規(guī)地多取幾次,獲取硬件碼失敗也要作相應(yīng)的默認(rèn)處理。并且硬件碼好要轉(zhuǎn)換為另一串字符串。上述代碼中所有字串均未作分解處理,實際編程中需要分解,且分別隱藏到程序各處。最好也加上密。上述代碼中注冊碼文本較長,可直接讀取一個文本文件進(jìn)行比擬。即生成的注冊碼存在一個文本文件中,在點擊注冊按鈕后,直接找這個文本文件的內(nèi)容進(jìn)行比照。文本文件的文件名可以是硬件號的名稱。上述是根本算法演示,其中的注冊算法還可以再進(jìn)行加工,變得更復(fù)雜一些。上述中注有〔注意保密〕字樣的代碼與程序需要軟件作者嚴(yán)格保密,不對外公開。大家再看一個易語言大獎賽獲獎作品:“家電維修〞的例子,大家也可以在易語言新建窗口中找到這個程序,看看注冊窗口的代碼吧,如果您按這樣的做法去發(fā)布軟件,會有什么平安性可言呢。⑤設(shè)計RSA的變形算法重要提示:上述是對RSA整體進(jìn)行一次性驗證,雖說RSA是一個非常強的加密算法,但是這樣的算法太簡單,很容易被破解,那么需要通過以下的方法進(jìn)行變形。以下所舉的例子只是一個參考,你自己的方法越乖僻越變態(tài)越好。例如,可以采用分解RSA算法,每次只驗證一小局部,以保證在程序的各個地方進(jìn)行不同種類的驗證,返回的值有的可設(shè)計為數(shù)值型,有的可設(shè)計為邏輯形,以利于在程序中不同地方調(diào)用,調(diào)用后可以根據(jù)數(shù)據(jù)進(jìn)行運算,如果是破解版,那么使用破解版的人得出的結(jié)果一定是錯誤的。采用雙RSA密匙、多RSA碼也是個好方法,但最好兩者之間再混合一下,采用RSA與數(shù)值計算支持庫混合的方法可以加強加密強度。另外,密匙字串需要分開存放,全局變量中放一些,程序集變最中放一些,局部變量中放一些,常量中放一些,字符串一定要打亂,不可存為一個變量中,還可以RSA之上再加密,如RSA密鑰是加密格式的,驗證完后立即清變量……要注意的事項還是很多,一定要考慮周密一些,即要到達(dá)加密的目的,也不要太復(fù)雜了,以免自己也被搞糊涂了。如果有錯誤,誤將正版用戶當(dāng)盜版用戶對待就不太好了。⑥⑦⑧⑨⑩3.?dāng)?shù)值計算支持庫易語言提供的數(shù)值計算支持庫很有特色,其特點就是可以計算任意位數(shù),因此大家可以根據(jù)這個特性來制作加密算法,考慮到奸人如果制作一個注冊機就必須去研究易語言,及易語言的數(shù)值計算支持庫才能去破解,但即使這樣,也不能輕松就能寫出注冊機,試想一下,數(shù)值計算支持庫本身就花了很長時間寫出,因此奸人們是無論如何也是制造不出注冊機的。并且一般來說,奸人如果出注冊機,一般都希望文件小一些,從而也不會用易語言寫注冊機程序,一般采用C語言寫,即使寫了也要帶上很大的系統(tǒng)支持庫與數(shù)值計算支持庫,太累了吧,哈哈。在此建議的是將RSA算法與數(shù)值計算支持庫相結(jié)合的方法,這樣的注冊機根本上就不會再有了,只要防止內(nèi)存注冊機出現(xiàn)即可。內(nèi)存注冊機的防止可以通過不進(jìn)行判斷的方式解決。而防止暴力破解是通過對軟件加殼后,在外部CRC驗證保證程序完整性,程序內(nèi)部再多重檢查,加上幾個暗樁,這樣通過層層把關(guān),最終就可以確保萬無一失了。由于PE文件格式的局限性,任何加密程序都有可能被破解,我們所要做的僅僅是加強加密的復(fù)雜度,讓奸人知難而退,消耗他們的時間與精力,浪費他的時間就是在殺他。七.給奸人一些教訓(xùn)實際上,我們的用戶已區(qū)分為以下四種人:共享試用者、正版注冊者、破解使用者、破解版使用者。當(dāng)我們需要給破解者一些教訓(xùn)時,一定要將正常用戶區(qū)分開,否那么正常用戶有所損失,那么就根本不會來購置您的軟件,您的聲譽也會下降的。1.給破解者的教訓(xùn)有句名言:“軟件很生氣,后果很嚴(yán)重!〞。給破解者的教訓(xùn)要深刻一些,最好讓他刻骨銘心,永世不忘。對于一個破解新手來說,很草率地去破解一個成熟的軟件,對他來說是災(zāi)難的開始,給破解者制造麻煩,讓破解者知難而退是一件有樂趣的事。這事一定不要忘記做哦,否那么我這文章就白寫了。一個通常的教訓(xùn)如下:但如果你想變態(tài)地去教訓(xùn)奸人,那么我也沒有方法阻止你了,畢竟你已在授權(quán)文件中警告過他不要動你的東西了。哈哈。下面是將文件刪除到回收站,及清空回收站的代碼:2.給破解版使用者的教訓(xùn)上面是對于奸人的教訓(xùn),但對于一般破解使用者來說,也要給予配當(dāng)?shù)膽土P,但不能太過嚴(yán)厲,不能對他們的機器造成嚴(yán)重破壞。一般來說給予一次廣告時機,或設(shè)置一些小損失即可。常見的有以下,其他的請你根據(jù)你自己軟件的內(nèi)容進(jìn)行適當(dāng)?shù)膭?chuàng)意吧。第1種:建議發(fā)現(xiàn)是破解版使用者在用時,可為你的軟件加一些貼面廣告,這樣您會有一些收益,以補充你的一些損失。第2種:建議一段時間讓他正常用,這破解版使用者如果較多的內(nèi)容,說明他很在乎你這個軟件,并且認(rèn)為破解正常,已可以正常使用了,這時等他的數(shù)據(jù)量大時,將數(shù)據(jù)庫鎖定,他一定欲哭無淚,只好請你幫他解鎖,購置您的軟件了。易表的作者就是用這種方法實際上這是一種暗樁操作,即在發(fā)布幾個月后再檢查是否是正版,或在數(shù)據(jù)庫存儲到一定時間后再檢查是否是正版用戶,這樣的加密方法值得大家學(xué)習(xí)??赡苣苌鷼?,想讓破解版使用者得不到好的下場,最好不要刪除重要數(shù)據(jù)。且我個人是不建議大家這樣做的。加密第8定理:加密的結(jié)果是雙贏才行,用戶真正認(rèn)識到了來注冊,同時也能用上正版了。3.行為不要過火作者給奸人一些教訓(xùn)是正當(dāng)?shù)?,可是軟件會存在BUG,寫加密程序也會有BUG存在。如果將正版用戶的數(shù)據(jù)損壞了就不太好了,畢竟大家還是要靠口碑生存的。即使您是對的,但如果盜版用戶多,那么如果太嚴(yán)厲了,就沒有人更敢用你的軟件了。如江民事件,就是前車〔JU〕之鑒。如果您能搞出一個即讓破解者假象破解,為你作宜傳,而又能爭取到用戶,那樣是最皆大歡喜的了。易表就是一個例子,他的軟件外表上被破解了,但實際上還存在暗樁,結(jié)果用了一段時間后,用戶的重要數(shù)據(jù)被鎖定了,只能乖乖注冊。加密第9定理:口碑好的軟件才能傳播得更廣。八.網(wǎng)絡(luò)驗證法現(xiàn)在有的人說網(wǎng)絡(luò)驗證法是最可靠,且是從未被破解過的加密方法。確實這種方法很難破解,因為注冊碼始終是在作者手上的,這樣怎么去破解呀。加密第10定理:一個好的網(wǎng)絡(luò)驗證法至今沒有人能破解。1.實現(xiàn)的原理網(wǎng)絡(luò)驗證法有些類似于網(wǎng)絡(luò)游戲中的驗證。網(wǎng)絡(luò)驗證方法,即建立一個網(wǎng)絡(luò)效勞器程序,由軟件作者自己保管,運行于效勞器端,客戶端通過編程放在共享軟件中??蛻羲玫降墓蚕碥浖绦蛑袔в锌蛻舳顺绦?,當(dāng)需要驗證時,客戶端的硬件碼通過網(wǎng)絡(luò)傳送到效勞器中,效勞端程序?qū)⒓用芎蟮淖源a通過網(wǎng)絡(luò)傳回給客戶,客戶軟件中的客戶端組件接收到后,在內(nèi)存中解密進(jìn)行判定,如果注冊了就通過,否那么就失敗。作者的效勞器端上保存了用戶的注冊碼數(shù)據(jù)庫,隨時供驗證之用。在此可以防止以下被破解的事況:首先,通過網(wǎng)絡(luò)驗證即使奸人攔截到了注冊碼,也是加密過的,如果去解密也很困難,并且效勞器是由軟件作者保管的,這樣奸人可能始終接觸不到注冊碼?;蛘咚W(xué)習(xí)網(wǎng)絡(luò)攔截也說不定。其次可以預(yù)防暴力破解,軟件作者可將重要數(shù)據(jù)直接放在效勞器中,通過不停驗證取得數(shù)據(jù),從而被破解的客戶端被暴力破解后立即成為無效軟件。再次,即使軟件被破解了,軟件的作者也可以較輕松地升級客戶端程序,及升級效勞器端的注冊碼數(shù)據(jù)庫,從而減少破解造成的損失,讓破解者陰謀失敗。最后,軟件作者可以輕松看到監(jiān)視客戶端的使用情,如果發(fā)現(xiàn)有重復(fù)名稱的驗證,或不正常地取數(shù)據(jù),就可以立即停止客戶的使用。2.存在的幾個問題1.用戶的程序必須是需要通過上網(wǎng)才能使用的,不上網(wǎng),將不能驗證,也不能使用。2.軟件作者必須要保證效勞器的穩(wěn)定,如果效勞器死機或掉線,那么客戶機將不能使用,因此也要具備一定的防攻擊能力。效勞器維護人員技術(shù)要求較高,要有一定的效勞器反黑經(jīng)驗。3.網(wǎng)絡(luò)驗證也不能一次全部驗證,這樣并不保險,需要分段進(jìn)行驗證。并且給予暗樁的設(shè)計。4.可能存在客戶太多,一個效勞器接收不過來,需要兩個以上效勞器的情況,或就直接架設(shè)兩個以上效勞器,用于備用。現(xiàn)在的電信與網(wǎng)通經(jīng)常打架,可考慮一個接電信網(wǎng),一個架網(wǎng)通網(wǎng),以備不時之需。九.加密狗加密本文的目的是讓大家了解加密狗,它并不是那樣神密而可怕,大家一定要克服恐懼感哦。加密狗是個極其好用的工具,根本上如果用上一個好的型號的加密狗,可以為您省不少心,想想看吧,有一個技術(shù)團隊在身后做支持呢。易語言論壇上有人說:“不要花太多心思到加密上,而是要完善軟件功能!〞當(dāng)然將心思放在加密上我也不想,這都是拜小人所賜呀。因此如果您想節(jié)約時間的話,只要買個好狗,加一個殼就可以了。加密第11定理:如果您想不要花太多心思到加密上而想要一個很強的加密,加密狗是最好的選擇。說老實話,現(xiàn)在的狗都比以前好多了,以前還聽說有狗被防制或模擬了,現(xiàn)在的狗呀,越做越好了。總之,大家放心用吧。軟件狗是一種智能型加密工具。它是一個安裝在并口、串口等接口上的硬件電路,同時有一套使用于各種語言的接口軟件和工具軟件。當(dāng)被狗保護的軟件運行時,程序向插在計算機上的軟件狗發(fā)出查詢命令,軟件狗迅速計算查詢并給出響應(yīng),正確的響應(yīng)保證軟件繼續(xù)運行。如果沒有軟件狗,程序?qū)⒉荒苓\行,復(fù)雜的軟硬件技術(shù)結(jié)合在一起防止軟件盜版。真正有商業(yè)價值得軟件一般都用軟件狗來保護。平時常見的狗主要有“洋狗〞〔國外狗〕和“土狗〞〔國產(chǎn)狗〕。這里國外狗主要指美國的彩虹和以色列的HASP,國產(chǎn)狗主要有金天地〔現(xiàn)在與美國彩虹合資,叫“彩虹天地〞〕、深思、尖石。總的說來,加密狗在軟件接口、加殼、反跟蹤等方面技術(shù)較好,根本上復(fù)制很困難。1.加密狗的選用加密狗一般分為串口狗與USB加密狗。串口即打印口,為16針口可以同進(jìn)串接多個串口型加密狗。如下列圖所示:現(xiàn)在也已有一種微型加密狗的推出:USB口為直接插入USB接口,每個接口只能插一個。如下列圖所示:從目前的資料來看,一般加密狗產(chǎn)商都想淘汰并口型的加密狗,而主推USB口的加密狗。一只USB加密狗的批發(fā)價現(xiàn)在大50元左右。USB設(shè)備是專門為多設(shè)備連接而設(shè)計,有著嚴(yán)格的標(biāo)準(zhǔn),從接口本身就防止了設(shè)備間的沖突。所以USB狗不會與遵守USB標(biāo)準(zhǔn)的設(shè)備有任何沖突。而因為并口只是為單設(shè)備工作設(shè)計的,很多并口設(shè)備并沒有考慮與其它外設(shè)公用并口的情況,為降低本錢,往往獨占了并口資源,使得并口的其它設(shè)備不能正常工作。因此建議使用USB狗較好。USB接口本身具有電源線,可為外設(shè)提供穩(wěn)定的工作電源,從而對USB狗的工作電壓、功耗等要求大大降低,加密狗的工作條件得到很大改善。而并口本身沒有電源線,并口狗要依靠并口的信號線或數(shù)據(jù)線提供電源,所以在因并口負(fù)載能力低等情況下,并口狗的芯片因得不到正常供電很難保證正常工作。因此建議使用USB狗較好。2.加密狗加殼法一般的加密狗軟件都提供傻瓜加密工具:加殼工具。這種殼是針對加密狗進(jìn)行的。加密狗有內(nèi)嵌和外殼兩種加密方式。外殼加密就是對exe、exp、數(shù)據(jù)文件直接進(jìn)行加密的方式;內(nèi)嵌加密是在各個語言環(huán)境中直接以函數(shù)調(diào)用形式出現(xiàn)的加密方式。操作系統(tǒng)支持Dos16/32、Windows3x/9x/ME/NT/2000/XP的各種版本,如有的狗提供有37種內(nèi)嵌語言加密模塊,四種外殼加密工具。加殼式加密的軟件運行界面與前述的普通殼的加密界面是類似的,也是要提交需要加密的原文件,然后會生成加密后的新文件,這個大家不認(rèn)為太神密了。內(nèi)嵌一般采用供貨商提供DLL,就是API調(diào)用,以到達(dá)調(diào)用加密模塊的目的。各個狗的調(diào)用都不相同,一般會提供C語言或VB語言調(diào)用的實例,大家模仿這類程序即可。有論壇人士說:“心思放太多到反破解上也不是一件好事?。〃?,我覺得給別人破解了更不好,是吧!如果不想放太多心思在反破解上,建議還是采取加密狗加殼的方法,方便、快捷,其他時間就可以研究如何將軟件完善就行了。因為有一個加密的團隊在支持你呀。3.加密狗寫存儲器法有的加密狗帶有存儲器,大小不一,有的是1024字節(jié),這樣大家也可以將一些重要的信息放在這里面。實際上您也可以將RSA的一些數(shù)據(jù)放在這里,以供程序雙重檢查。同樣也是通過DLL調(diào)用的。十.加密算法策略本章所要講述的是:加密不要拘泥于一種形式,要懂得變化之道,這樣才能讓破解者無從下手,這是我的軟件加密之最精髓的一點。前文所說只是一些最根底的知識,大家還需要一點變通之法,加密方法越奇怪越好,變態(tài)一些也沒有關(guān)系??催^?倚天屠龍記?的話,可以想想張三豐教張無忌太極拳時的那段對話,哈哈。1.易數(shù)據(jù)庫密碼怎么瀉露了易語言論壇上個別用戶說自己的數(shù)據(jù)庫密碼被別人知道了,那么我們看一下他是如何加數(shù)據(jù)庫密碼的,代碼如下:翻開(取運行目錄()+“\工資庫.edb〞,,,,,“K39DKEKD944〞,)好了,我們編譯一下,編譯成一個EXE文件,然后改文件后綴為TXT,這樣我們就可以不用PE專業(yè)工具,而是直接用記事本翻開了。然后在記事本中搜索這個密碼,大家看到了什么?看下列圖中反白的局部:暈死,你這樣編程,當(dāng)然數(shù)據(jù)庫密碼會被別人知道了。將前述代碼改動一下,將密碼分解為假設(shè)干單個字符串,然后分別放于全局變量中定義一局部,再在程序集變量中放一局部,這樣就不會有問題了。如下面的試驗,只改動一小局部:口令=“K〞+到文本(13×3)+字符(68)+“K〞+“E〞+“K〞+“D〞+到文本(18÷2)+到文本(22+22)翻開(取運行目錄()+“\工資庫.edb〞,,,,,口令,)再按前述的查看方法,可以看到,數(shù)據(jù)庫前后的密碼被處理過的局部都看不到了,如下列圖所示:大家應(yīng)該明白了吧,如果上述代碼全部處理好的話,一定不會讓別人找到口令的。實際上,對于重要的加密口令來說,都需要分開存放,并且用取字符,位移或取反的方法,以及加減乘除的方法都可以得到一個隱藏很深的字符串。加密第12定理:相關(guān)加密的字符串一定要打亂加密。作業(yè)1:制作一個“字符串?dāng)噥y器〞,要求如下:輸入一字符串或其他類型的內(nèi)容,輸出為經(jīng)過“字符,取代碼,取反,位或,位與,加減乘除,平方,開方〞等命令隨機配合相加的易語言源代碼。界面根本如下:作業(yè)2:制作一個內(nèi)窺器,將你的密碼或加密字存入,它可以自動分解,在編譯好的EXE文件中查找是否有相同字符串。這是自己用易語言制作的一個工具,怎么樣,比專用的工具還要好用吧。作業(yè)3:為了不給奸人創(chuàng)造溫馨舒適的破解環(huán)境,我們要混亂我們的代碼,將軟件中所有的子程序名全部替換成隨機生成的子程序名然后加上正常的備注。例如Func_3dfsa_fs32zlfv()這個函數(shù)是什么意思?恐怕只有天知道了??梢杂靡渍Z言寫一個易語言“名稱混亂器〞,根本思路為:將易語言源代碼復(fù)制為文本,然后用混亂器將名稱一一對應(yīng)進(jìn)行混亂,然后粘貼回易語言中,這樣子程序名稱和變量名稱等都變?yōu)椴豢深A(yù)知的字符了,因此加強了保密性。但注意,只有當(dāng)你要發(fā)布軟件時才使用之,而且一定注意備份源代碼。否那么當(dāng)你看不懂你自己的代碼時可別怪我呀!字符串位置內(nèi)容是否在EXE中找到是否在資源駭客中找到組件名稱屬性可看到組件標(biāo)記屬性組件內(nèi)容屬性組件標(biāo)題屬性菜單名稱組件列表工程屬性可看到全局變量名稱看不到全局變量值內(nèi)容程序集變量名稱程序集變量值內(nèi)容局部變量名稱局部變量值內(nèi)容常量名稱常量值內(nèi)容可看到自定義數(shù)據(jù)類型名稱DLL命令名稱可看到DLL庫文件名在DLL庫中對應(yīng)命令名DLL參數(shù)名圖片資源名稱聲音資源名稱程序集名稱子程序名稱子程序參數(shù)名稱子程序變量名稱模塊引用名稱過濾器內(nèi)容可看到信息框文本可看到2.利用吳氏加密算法我們將吳濤在易語言中提供的自有加密算法稱之為吳氏算法。吳濤提供了兩種加自有加密算法:一種是易數(shù)據(jù)庫的加密。還有一種是配置菜單中的易語言源代碼口令保護。易語言的易用性就在這里了,大家一定要充分利用這些現(xiàn)成的東西。使用易語言自帶的易數(shù)據(jù)庫的加密功能目前是非??煽康模@是吳濤研制的自有算法,目前還沒有破解易數(shù)據(jù)庫的工具推出。這樣就使得一些重要的東西存放在加密后的易數(shù)據(jù)庫中十分平安。易語言源代碼口令保護也是一個吳濤自有算法,加密后的源代碼連易語言公司也不能解密。因此我一般用它保護注冊機和商業(yè)程序,所以我的注冊機和商業(yè)程序的源代碼在我用過的每臺電腦中都有,但口令只有我知道,沒有口令保證打不開,哈哈。下列圖為使用配置菜單后彈出的窗口,大家可以為易語言源代碼加上保護口令。3.海島挖寶聽過海盜船長的故事吧,故事中海盜將寶物分開存放,這樣即使找到一處其他地方也沒有損失,而且不僅如此,他們也將藏寶圖也分成一塊一塊的存放。金鹿鼎記的小說總看過吧,皇帝將藏寶圖分八冊存放,一一找到是非常困難的哦。韋小寶這個天才也花了兩三年的時間才找到全部哦。軟件中一些比擬重要的文本型字符的保護也是這樣,你可以分開位置存放,分段、分開類型存放,用時再轉(zhuǎn)換數(shù)據(jù)類型。分開存放是指分不同的全局變量、程序集變量與局部變量存放。加密第13定理:相關(guān)加密的局部一定要分開存放。對于RSA驗證也要這樣不要一次性地全部驗證了,這樣一點意義也沒有。應(yīng)該是軟件啟動時驗證一局部,在軟件運行中驗證一局部。在Debug的手冊里可以看到Debug工具的局限:第一個局限是只能下4個內(nèi)存區(qū)域的斷點,每個斷點不能控制超過兩個字節(jié),這樣內(nèi)存斷點不能控制超過16個字節(jié)的區(qū)域。假設(shè)你的注冊局部有300行,你可以分成30個子程序調(diào)用或重復(fù)的子程序。放一些垃圾代碼也不會損失什么。作業(yè):將RSA驗證的一次性驗證改為分三次驗證,并且每次返回不同的數(shù)據(jù)類型。4.隨機驗證隨機驗證很重要,例如你的一處驗證是一直存在的,奸人就很容易地下斷點跟蹤了。因此在軟件啟動時進(jìn)行一次正常驗證外,其他情況下的驗證最好是隨機的,在30分之一或50分之一的時機進(jìn)行驗證,這樣奸人會不停地試你的軟件在哪一處進(jìn)行了驗證,因此破解的時間會相當(dāng)?shù)亻L。加密第14定理:足夠多的隨機驗證足以上破解者累死。隨機驗證包括隨機進(jìn)入不同的驗證子程序?;螂S機最大數(shù)大一些,只有30分之一的時機驗證?;蛟诖翱谥蟹派弦恍╊伾c底圖一樣的圖片框,這樣奸人不一定會點擊這里,但用戶萬一點中了,就會觸發(fā)驗證。我們假設(shè)所有軟件都能被破解,包括易語言在內(nèi),那么如果他破解的速度跟不上你發(fā)布新軟件的速度,那么他永遠(yuǎn)在破最新版而累死?;蛘哒f他破解的時間比你寫一個軟件的代價大,這時還不如他直接寫這個軟件來得合算。反破解的任務(wù)之一就是讓奸人累死,或浪費他的生命。下面的方法也可以使用:你可以在讀到待驗證的注冊碼、公鑰、注冊文件后,通過定義10000個數(shù)組,存入上述同樣的內(nèi)容以備以后進(jìn)行驗證,這最多浪費一些內(nèi)存。驗證時隨機使用其中的一個進(jìn)行驗證,由于奸人不知你用的是數(shù)組中的哪一個進(jìn)行的比對,而且是隨機的,每次驗證的值都不一樣,不讓奸人吐血才怪呢。計次循環(huán)首〔10000,計次〕數(shù)組[計次]=“123456〞’復(fù)制一萬個公開注冊碼或公鑰,破解者知道也無所謂。計次循環(huán)尾數(shù)組[取隨機數(shù)〔1,10000〕]你不要立刻檢查注冊碼,10000份拷貝你只要以后隨機找一份用就行了,破解的人不知道你正在用的是那一個,同時你可以事先編好且運行時不斷使用一些假的讀取注冊碼數(shù)組的調(diào)用干擾破解者。這種方法對程序的性能影響微缺乏到,只是浪費一點內(nèi)存。因為Debug對內(nèi)存下斷點的局限,這種情況他要下斷點,累死的就是破解的人了。5.不同權(quán)限驗證在啟動時進(jìn)行一次驗證是非常必要的,這樣讓奸人知道確實是驗證了,以讓他心理放松警惕,而這次的驗證只是一局部驗證,并沒有完全驗證。還有的建議在啟動時將注冊信息讀入后不要進(jìn)行驗證,保不定在哪里進(jìn)行驗證,個人認(rèn)為這樣讓破解者提高了警惕性,會認(rèn)為軟件作者很有經(jīng)驗。麻痹敵人也很重要呀。例如,在啟動時驗證通過一次,驗證級別加強一級,然后再在其他的地方再進(jìn)行驗證就可以了。下面代碼是確認(rèn)了一個級別計次循環(huán)首(到數(shù)值〔驗證1〕,)已注冊=1計次循環(huán)尾〔〕…………在另一個觸發(fā)子程序中再通過這個級別再驗證:計次循環(huán)首〔已注冊〕計次循環(huán)首(到數(shù)值〔驗證2〕,)已注冊=2跳出循環(huán)〔〕計次循環(huán)尾〔〕跳出循環(huán)〔〕計次循環(huán)尾〔〕在其他觸發(fā)子程序中再通過這個級別再驗證:計次循環(huán)首〔已注冊〕計次循環(huán)首(到數(shù)值〔驗證3〕,)已注冊=3跳出循環(huán)〔〕計次循環(huán)尾〔〕跳出循環(huán)〔〕計次循環(huán)尾〔〕有時也可以將級別降一降,怎么降,當(dāng)然是不考慮級別直接驗證了:6.忽悠型的垃圾驗證代碼前面已講過花指令的原理,在程序中人為地再放一些垃圾代碼以忽悠奸人也是一個好方法。垃圾代碼就是一些假的驗證代碼,根本上是明文的,這樣的代碼上百上千,足以讓奸人累死。加密第15定理:大量添加垃圾代碼雖然是無奈之舉,但很管用。作業(yè)1:制作一個常量迷幻器要求:制作一個常量代碼自動生成器。可隨機生成成百上千個易語言源代碼形式,可直接拷貝到易語言中成為常量。變量也可以這樣制作。寫好這樣一個程序后,就可以自動生成垃圾代碼,然后復(fù)制,粘貼到易語言的常量表中即可。如下列圖所示:變量也可以這樣生成,不過生成的變量可以任意拷貝為全局變量,或程序集變量,或局部變量。制作時的名稱可以為中文名稱,直接編譯后不會在EXE文件中找到同名的中文名稱。因此您可以放心地將這些名稱定義為:“垃圾常量1〞、“垃圾變量1〞等等以示與正常代碼進(jìn)行區(qū)別。作業(yè)2:制作一個代碼迷亂器本次作業(yè)性質(zhì)同上,也是自動生成易語言的一些無用垃圾代碼,以迷亂奸人的破解,讓他找到的全是垃圾代碼,從而大大延長了破解時間。通過直接拷貝編輯框中的內(nèi)容,粘貼到您的代碼中,可自動完成任務(wù),如下列圖所示:上圖所生成的是一些明文的加密方法的垃圾代碼,讓奸人去研究這些垃圾吧。上述子程序名稱最好也有時調(diào)用一下,反正不會真正產(chǎn)生作用的,用多線程調(diào)用最好。或者您平時注意多收集一些別人用于加密時的子程序,拷貝到一個易語言程序中,保存,這樣的代碼作為垃圾代碼放在你有用的程序中,雖然增加了一些程序的體積,但平安性是大大提高了。并且根本上沒有犧牲軟件性能與穩(wěn)定性。7.偽驗證技術(shù)還是先舉一個例子說明吧,易表軟件在10.0版本前已發(fā)現(xiàn)有大量的注冊機存在,于是易表作者其后改變了加密方式,易表10.0推出后還是出現(xiàn)了注冊機,并且這種注冊機注冊過的軟件可以使用。于是有些用戶用注冊機取得的注冊碼使用了,過了一段時間,當(dāng)盜版用戶將重要數(shù)據(jù)存入易表后,突然有一天數(shù)據(jù)庫被鎖定了,于是只好注冊易表,并且讓易表作者為數(shù)據(jù)庫解鎖。從這里可以根本上判定易表新版本采用了偽驗證技術(shù),即在較為明顯的地方提供了一級驗證,這種驗證方式?jīng)]有經(jīng)過太強的加密,而二級驗證在一定的條件下才觸發(fā),而這個條件是檢查到了用戶輸入了重要的數(shù)據(jù),或大量的數(shù)據(jù),或使用次數(shù)較多。根本原理是注冊文件由前后兩個注冊碼拼接而成。一般情況下只進(jìn)行第一個注冊碼的驗證,而當(dāng)條件成熟時進(jìn)行第二個注冊碼驗證。這是一種雙贏的策略,易表作者即收到了注冊費,付費的人還會抱歉,并且感謝易表作者。哈哈,大家要學(xué)習(xí)這招哦。但本方法對于數(shù)據(jù)庫應(yīng)用及數(shù)據(jù)量大時檢查最好,而對于一些沒有生成數(shù)據(jù)的用戶無效。加密第16定理:偽驗證可以迷惑一般破解者,甚至自己發(fā)布一個偽注冊機。8.定時驗證、延時驗證、客戶數(shù)據(jù)集累驗證過一段時間后再驗證,如你在2005年1月發(fā)布一個軟件,那么就內(nèi)定2005年6月后觸發(fā)驗證時機?;蚰能浖且粋€數(shù)據(jù)庫產(chǎn)品,那么您可以在程序中設(shè)置如果數(shù)據(jù)庫大于5MB時就進(jìn)行驗證,并且最好您能確定這些數(shù)據(jù)是不重復(fù)的,刻意參加的。如易表設(shè)置了偽驗證,這時市場上出現(xiàn)了新的注冊機,當(dāng)用戶用這個注冊機后,提示是注冊成功了,但當(dāng)用戶輸入重要數(shù)據(jù)后的某個日子,突然打不開數(shù)據(jù)庫了,用戶很著急,因為以為是破解成功了,所以將重要的資料輸入了,只能拿錢向易表作者進(jìn)行注冊了。而且還千恩萬謝,懊悔自己不該用破解。哈哈,一舉兩得呀。這個方法對于數(shù)據(jù)庫應(yīng)用軟件來說是絕好的方法。作業(yè):制作一個算法程序放在你的數(shù)據(jù)庫軟件中,這個子程序可以統(tǒng)計你的數(shù)據(jù)庫軟件使用時,用戶輸入的是否是拷貝的東西,還是正常的數(shù)據(jù)。當(dāng)統(tǒng)計到1000時觸發(fā)驗證。方法思路為:可以通過查看用戶有沒有使用復(fù)制與粘貼快捷鍵,或資料進(jìn)行排序,如果有大量重復(fù)的,就說明是奸人在拷貝數(shù)據(jù)破解,否那么是一個資料一個資料的輸入的,說明是正常使用的重要資料,這時進(jìn)行比照就好了。本方法對有資料的破解使用者有極好的控制作用,通過第6條的偽驗證技術(shù)與本技術(shù)結(jié)合,那么就可以知道是不是正版用戶,并且可以鎖定數(shù)據(jù)庫,等他注冊后再給他解鎖。加密第17定理:加密的結(jié)果應(yīng)該是雙贏,偽驗證是一個上策。9.驗證與專業(yè)知識相結(jié)合技術(shù)將驗證與專業(yè)知識相結(jié)合,讓奸人必須學(xué)習(xí)專業(yè)知識后才能真正去破解,這樣所花的功夫比自己寫一個軟件的代價還要大,而有的專業(yè)知識不是專家是不知道的,因此是一個較好的加密方法。前述中采用了“到數(shù)值〔驗證1〔〕〕〞這樣的代碼返回的是0或1兩者之間的一個數(shù),可以用乘法進(jìn)行混合計算,如:音量=播放位置X到數(shù)值〔驗證1〔〕〕當(dāng)驗證正確時返回的是1,這時的結(jié)果是正確的,否那么返回0,這時的結(jié)果為0,是錯誤的。這樣的代碼可以混合到您的專業(yè)知識中,如:算命軟件可將天干地支、生辰八字中的某個地方進(jìn)行此類計算,計算類軟件可以將某種特殊的計算過程如此結(jié)合計算,繪圖類軟件可將繪圖中的算法局部參加此類計算,音響設(shè)計類、機床設(shè)計軟件……加密第18定理:你知道的專業(yè)知識,破解者不一定了解哦。讓專業(yè)知識與驗證相結(jié)合吧。10.偽裝,用易語言寫自有支持庫大家可以將DLL文件的擴展名改為易語言的支持庫文件FNE擴展名,這樣進(jìn)行非獨立編譯后,與其他FNE文件混合在一起,甚至您可以用易語言寫一個支持庫,將其中一局部作為驗證局部。易語言的支持庫文件FNE文件其實就是一個DLL文件,只不過擴展名改變了而已,用易語言寫支持庫的方法金眼睛已發(fā)過一篇貼子,進(jìn)行過說明,請大家在易語言論壇上搜索金眼睛的貼子就可以找到了。作業(yè):找到金眼睛關(guān)于用易語言寫支持庫的貼子,并且自己寫一個支持庫。11.絕妙的暗樁設(shè)置應(yīng)該想到的用代碼實現(xiàn)的暗樁前面都講了不少,下面是一些特別的暗樁供奸人品味的。大家可以在一些不起眼的地方再放一些暗樁,如:在窗口最小化事件中隨機驗證,如在某個組件鼠標(biāo)被移動事件中驗證,有時需要將數(shù)據(jù)完整性驗證放在更高一級的驗證中,不要一上來就檢查文件是否被更改。同一驗證可以使用屢次,這樣奸人認(rèn)為你已經(jīng)驗證過了,沒有必要會再驗證一次,而相反這時又產(chǎn)生了驗證,讓奸人防不勝防。如啟動時就立即檢查程序完整性,如果發(fā)現(xiàn)被更改,那就立即退出程序,而在一些子程序中也隨機放這樣的驗證。更多的暗樁大家自己設(shè)計最好。加密第19定理:加密重要的是暗樁的設(shè)置,破解不完全就是一個無效破解。12.發(fā)布不完整版本有的軟件作者在發(fā)布共享軟件時,放在外面的是不完整版本,將更多的數(shù)據(jù)資料在注冊后提供。這樣做也可以,只是麻煩一些而已。如有的圖形制作軟件,將圖片資源另外打包,用戶注冊后再給完全版的圖片。也有的將DLL文件中的驗證局部作了空處理,而在注冊后提供真正的注冊DLL文件及注冊碼。還有的直接將KEY文件放在了DLL文件中另外提供。加密第20定理:不要發(fā)布完整版本,以靜制動。13.自定義算法前面講過采用RSA與數(shù)值計算支持庫交叉計算的方法,這就是一種自有的算法,如果能用上數(shù)值計算支持庫中的矩陣、等高級功能就更好了。多重RSA交叉打亂:大家也可以多用一些RSA密鑰,如用5個,10個都無所謂,重要的是將這些注冊碼都

溫馨提示

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

評論

0/150

提交評論