資源描述:
《如何防止軟件被破解.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、如何防止軟件被破解?1.注冊(cè)的加密算法越復(fù)雜好,這樣就不會(huì)很容易地被寫出注冊(cè)機(jī)。????2.即使加密算法很復(fù)雜,但對(duì)于破解高手來說,爆破也很容易。要防止被爆破,就要在程序運(yùn)行的過程中,經(jīng)常檢測(cè)主程序的精確大小,或主程序中某個(gè)位置是否是固定字符,如果不對(duì)就退出程序。當(dāng)然主程序要用aspack等軟件壓縮,檢測(cè)的也是壓縮后的程序大小。???3.不要用明文比較的方法比較注冊(cè)碼!否則,即使做好1、2兩點(diǎn),也是白搭!我的方法是,對(duì)注冊(cè)碼進(jìn)行加密變換,越復(fù)雜越好,最后對(duì)加密后的注冊(cè)碼進(jìn)行比較,相同則是合法用戶。???4.注冊(cè)碼不要一次就比較完,最好在程序中分多次比較。我的做法是:我的注冊(cè)碼是
2、12位,在開始時(shí)先比較前8位注冊(cè)碼,相同則暫時(shí)承認(rèn)是合法用戶。另4位則在程序的關(guān)鍵功能處進(jìn)行比較,而且不要馬上就比較,我是在程序試用期45天結(jié)束后再進(jìn)行比較,不對(duì)則重啟電腦。這一招比較有效,我的軟件在發(fā)布后,不斷有注冊(cè)機(jī)出來,但用注冊(cè)機(jī)后也只能使用45天,過后就有問題。當(dāng)然,世上沒有不被破解的軟件,我的新版本軟件在發(fā)布半年多后(不錯(cuò)了吧?),就在前幾天終于被一高手完全破解了!???不知其他朋友還有沒有補(bǔ)充的?1、先對(duì)程序進(jìn)行完整性校驗(yàn),采用MD5算法較好,確保執(zhí)行程序不會(huì)被修改,將MD5結(jié)果作為第一部分。???2、收集本機(jī)信息(網(wǎng)卡、硬盤、CPU信息、當(dāng)前日期,注冊(cè)用戶等信息)
3、,采用3DES算法加密,將加密結(jié)果作為第二部分進(jìn)行保存。???3、將兩部分結(jié)果進(jìn)行合并,通過網(wǎng)絡(luò)或者其他途徑傳送給服務(wù)器,服務(wù)器先判斷程序的完整性,如果完整,則解密客戶機(jī)信息,通過RSA算法使用私鑰進(jìn)行加密,將秘文發(fā)還給客戶。???4、客戶使用收到的秘文以及程序中包含的RSA算法的公鑰進(jìn)行解密并進(jìn)行本機(jī)校驗(yàn),如果信息正確則可以繼續(xù)運(yùn)行,否則失敗。????這個(gè)加密方法的特點(diǎn)是不怕用戶知道你的加密方法(當(dāng)然私鑰一定要藏好),并且加密強(qiáng)度相當(dāng)高,大約112位,一般的打狗方法是不能奏效的。上面提及的算法在網(wǎng)絡(luò)上都可以找到,會(huì)費(fèi)些心思。我是把注冊(cè)算法,實(shí)際代碼,無用的代碼寫在一起(不是調(diào)
4、用函數(shù)),然后注冊(cè)失敗也不提示,有上百個(gè)驗(yàn)證點(diǎn),也是直接寫在實(shí)際代碼中,算法到?jīng)]有什么就是特別長(zhǎng),等他把代碼看懂,至少要死掉一半腦細(xì)胞??偨Y(jié)??+??補(bǔ)充???1)用那些經(jīng)過全世界最優(yōu)秀的密碼分析學(xué)家們分析過也不能解密的算法?2)加上CRC校驗(yàn),一旦發(fā)現(xiàn)被修改,不要馬上提示最好幾天甚至幾星期后再不工作?3)無論注冊(cè)失敗或成功都不提示?4)實(shí)際代碼,無用的代碼寫在一起,??分多步驗(yàn)證?5)Write?emailtothe?webmasterofthecracksite?6)升級(jí)后改變算法[?!]?補(bǔ)充一點(diǎn),我想到的一個(gè)簡(jiǎn)單易行的辦法,可以加大破解難度?7)注冊(cè)碼的判斷分兩個(gè)函數(shù),
5、兩個(gè)標(biāo)志,在注冊(cè)碼的輸入窗體中,只判斷注冊(cè)碼的前一部分,使用Func1()判斷,注冊(cè)用戶輸入正確注冊(cè)碼時(shí)并不會(huì)感到異常,而破解者通常會(huì)在此窗口中追蹤代碼,就算破解了,在此出破解通過的只是一部分算法而已,但要讓他自以為成功了,通過后標(biāo)志1為真,About窗口顯示成功注冊(cè)了。然后在程序的另一部分使用完整的判斷函數(shù)Func2()判斷.這里不給出任何提示,如果對(duì)了才把標(biāo)志2設(shè)為真,也就是說用假的注冊(cè)碼可以注冊(cè)成功,但運(yùn)行到關(guān)鍵的地方就出問題了,程序重新啟動(dòng)時(shí)再用Func1()判斷,Cracker查看ABOUT,顯示成功注冊(cè)給xxx,但關(guān)鍵的地方就是不能用,嘿嘿,夠黑吧。注冊(cè)碼輸入框的最
6、大輸入長(zhǎng)度設(shè)為8位(但注冊(cè)碼長(zhǎng)度其實(shí)是從10位至40位不固定,視用戶機(jī)器碼而定)???注冊(cè)碼在輸入時(shí),每輸入一次,判斷已輸入的前N字符,是不是前N位都是正確的注冊(cè)碼值的前N位,如果不是,則將注冊(cè)碼輸入框的最大長(zhǎng)度鎖死在八位。???如果是粘貼上的注冊(cè)碼,采用剪切版內(nèi)容查看等方法進(jìn)行判斷。???注意最好不要逐字比較,要全文比較,否則好跟蹤。???然后有人會(huì)以為注冊(cè)碼是8位。???如果判斷輸入8位后,調(diào)用另外一個(gè)很復(fù)雜但沒用的算法(算法A),生成一個(gè)8位的注冊(cè)碼(注冊(cè)碼A)。????如果有人添入“注冊(cè)碼A”試圖注冊(cè),這個(gè)人肯定是破解者,而且破解成功了你的“算法A”,此時(shí),該怎么做你知
7、道了吧。