摘要:人們在進行軟件開發(fā)的時候,都十分重視軟件的注冊碼和軟件的激活碼,沒有注冊碼的軟件用戶會被加上一些限制,這些限制將會影響軟件的正常使用。盡管這樣軟件的破解技術(shù)也日益強大,國內(nèi)外的大型軟件都具備自己的注冊機制,盡管這樣這些軟件仍然會被不斷地破解,國家的相關(guān)部門都在加大打擊不合法軟件的力度,同時采取各種各樣的措施來支持正版軟件,可是在實際實施的過程中并沒有達到預期的效果。為了確保自己的軟件能夠順利走向市場同時不被別人復制,許多軟件生產(chǎn)商為了保護自己的軟件,在軟件出廠時給這些軟件實施加密,大多數(shù)軟件都是運用加密技術(shù),常見的加密技術(shù)有兩種,分別是軟加密和硬加密。
關(guān)鍵詞:軟件;破解;保護
中圖分類號:TP311.53 文獻標識碼:A 文章編號:1007-9599 (2012) 21-0000-02
大型商業(yè)軟件在進行制造的過程中,為了防止別人復制和免費使用,往往給軟件進行加密,有的采用軟加密的方法,有的采用硬加密的方法,這樣就給軟件以有效的保護。但是隨著加密技術(shù)的不斷發(fā)展和進步,軟件的破解技術(shù)也不斷地強大起來,盡管國家已經(jīng)采取了各種各樣的方法,給不法軟件以打擊,借以保護和支持正版軟件,支持知識產(chǎn)權(quán),但是實踐表明效果并不是太明顯,因此我們有必要采用相應的軟件破解與保護方法,以保護軟件。本文就軟件的破解和保護進行了簡單的探索與分析。
1 經(jīng)常見到的軟件破解方法
1.1 常見的破解術(shù)語
1.1.1 斷點。我們經(jīng)常說到的斷點就是指軟件程序中被認為或不得不中斷的地方,這種情況大都是因為軟件在使用的過程中發(fā)生了一些事件,這些特殊事件對計算機會造成一定的影響,讓計算機停止正在制定的一些相關(guān)任務,然后去執(zhí)行一些其他任務,經(jīng)過一定時間的間隔又回到剛開始執(zhí)行的任務的一個過程。這個時候的破解過程就是計算機程序把操作人員輸入的注冊碼和計算機原有的程序注冊碼進行比較,在比較的過程中迫使計算機程序中斷,在這個過程中操作人員如果分析計算機程序的話,就能很容易找到正確的注冊碼。
1.1.2 應用程序編程接口。在專業(yè)術(shù)語中我們把計算機應用程序編程接口簡稱為API(Application Programming Interface),這是一個大的函數(shù)集合,這個函數(shù)集合是被系統(tǒng)定義了的,在這個集合中對操作系統(tǒng)特征提供了一定的訪問方法。在這個接口中包含了多種應用程序需要經(jīng)常用到的函數(shù),與操作系統(tǒng)相關(guān)的一切操作都必須用這些函數(shù)來執(zhí)行,這些操作包括內(nèi)存的分配、在屏幕上輸出或者創(chuàng)建窗口等。我們常用的微軟操作系統(tǒng)程序就是以API為技術(shù)的,通過它來實現(xiàn)系統(tǒng)和其他軟件之間的交流,我們常見的各種應用程序都是通過調(diào)用自己需要的API程序來實現(xiàn)自身的各種功能的。
1.2 常見的軟件破解方法
1.2.1 暴力破解法。計算機破解的方法有許多種,其中最常用和最簡單的破解方法就是暴力法,運用這種方法對程序進行破解的人員可以通過編輯工具把一些可執(zhí)行文件修改,這種方法其實就是運用改變可執(zhí)行程序源文件的屬性來進行軟件破解的方法。這種方法需要操作人員輸入相關(guān)的注冊碼信息,計算機源文件需要對操作人員輸入的注冊碼信息進行驗證,如果破解人員輸入的注冊碼信息和計算機通過運算獲得的注冊碼相等或者一模一樣,程序就可以破解。
1.2.2 通過算法注冊機進行破解。算法注冊機是一種對軟件的注冊碼算法進行分析的一種程序,這種程序通過分析后這種程序就能夠自動生成一些軟件的注冊碼,它主要利用的是軟件算法,因此我們在進行軟件制作時要重視軟件算法。我們經(jīng)常使用的軟件算法都是軟件作者自己編寫的,這樣就給軟件的使用和銷售帶來了便利,這種類型的軟件所使用的加密碼只可以在一臺電腦中運用,就好像是把軟件和計算機進行了綁定。在使用的過程中,應該先運行試用軟件,在對這些軟件進行運行的過程中,操作人員可以獲取想要破解的計算機的機器碼,當獲得軟件所在計算機的機器碼后,程序會運用算法注冊機進行運算,在運算的過程中程序可以獲取正確的注冊碼,獲取這些注冊碼后就在軟件中直接注冊。
1.2.3 利用內(nèi)存破解。內(nèi)存是數(shù)據(jù)必須經(jīng)過的一個關(guān)口,要想讓數(shù)據(jù)運行到程序就要先把數(shù)據(jù)加載到內(nèi)存中,這些數(shù)據(jù)需要經(jīng)過驗證碼的認證,所以我們要想辦法找到我們想要破解的軟件的注冊碼在內(nèi)存中的位置,這樣才能夠破解這些軟件。采用這種方法來破解軟件需要花費的時間較少花費的力氣也不是太大,這種方法能夠很容易地獲取軟件注冊碼信息,同時這種方法也能夠節(jié)約內(nèi)存注冊機編寫的時間。在采用這種破解方法的時候需要先加載內(nèi)存注冊機,然后通過它獲得軟件的注冊碼,這時可以對軟件中的一些數(shù)據(jù)進行修改,這樣就能夠通過內(nèi)存進行環(huán)境模擬的從而破解軟件的目的。
1.2.4 文件注冊法和補丁破解法。文件注冊法是一種把自己的軟件注冊內(nèi)容放到一定的地方,為自己何別人用到注冊內(nèi)容的時候提供方便,常見的文件注冊法有注冊文件和注冊表導入兩種方法。補丁破解法在破解的過程中需要采用相關(guān)的補丁程序,通過這些程序就能夠驗證軟件的注冊碼,有的時候是通過這些補丁程序修改軟件中的一些判斷語,這些判斷語包括軟件的試用時間等。在進行修改的時候可以把軟件原來的時間進行修改這樣就能夠延長軟件的試用期,這就能夠達到我們能夠長期使用該軟件的目的。
2 常用的軟件保護方法
2.1 注冊碼
在了解常用的軟件保護方法之前,我們需要了解注冊碼這個概念。所謂的注冊碼就是軟件在每臺機器上的單一注冊碼,一臺機器只能擁有一個獨一無二的注冊碼。那么怎么能夠?qū)崿F(xiàn)這個目標呢?首先我們應該查找出硬盤的卷標和電腦中央處理器(CPU)的序列號,生成機器碼,在這個過程中我們需要編寫相關(guān)的函數(shù),通過這些函數(shù)我們才能夠得到每臺計算機硬盤的一些卷標號,獲得這些硬盤的卷標號以后,我們再編寫獲取計算機中央處理器序列號的函數(shù),獲得這些號碼后,我們就可以生成機器碼,機器碼需要從相關(guān)的一些函數(shù)中獲得,通過機器碼再編寫相關(guān)的函數(shù)就能夠獲得注冊碼。獲得注冊碼后,需要先對這些注冊碼進行檢驗,沒有注冊的注冊碼可通過編寫private void CheckRegist0 Cpl函數(shù)來自定義試用天數(shù),延遲,未注冊畫面。
2.2 軟加密
在這里我們所說的軟加密指的是不通過硬件就達到保護軟件的目的。我們現(xiàn)在最常見的軟件加密方法都是這種方法。軟加密具有密碼法、硬件校驗法、鑰匙盤法等等。在當前形勢下使用軟加密最常用的就是加密殼,加密殼可以通過修改入口處的代碼,然后將這些代碼跳轉(zhuǎn)到加密殼代碼來執(zhí)行解密程序。加密殼代碼不是固定不變的,而是處于一種運動的狀態(tài),因此加密技術(shù)也是通過動態(tài)的形式來運行的。
2.3 硬加密
我們所說的硬加密就是采用加密狗或者加密鎖的方法對軟件進行加密。這些加密硬件需要安裝在需要軟件加密的計算機上,常用的接口是并口和USB口,在這兩種接口中,最常用的是后者,這種軟件加密技術(shù)是通過對硬件的保護對軟件或者數(shù)據(jù)進行加密,從而防止數(shù)據(jù)被別人盜取的一種技術(shù),這種技術(shù)是一種強大的技術(shù),它有效地保證了一些貴重軟件在市場中免受盜版危害的目的。在這些加密狗或加密鎖內(nèi)都保存有若干字節(jié)的不容易丟失的存儲空間,這些空間可支持讀寫。有的加密狗里面還帶有一定的單片機。計算機操作人員要想實現(xiàn)數(shù)據(jù)的交換,就必須知道軟件和軟件狗之間的接口函數(shù),接口函數(shù)可以檢測加密狗是否被插在了接口上。
3 結(jié)語
為了防自己的軟件不被別人復制,我們需要了解盜版者所使用的破解方法,進而研究好的加密方法,讓盜版者在破解密碼時付出巨大代價,耗費巨大精力,最終被迫放棄攻擊,最終達到保護軟件的目的。
參考文獻:
[1]李富云.試論軟件的破解與保護[J].中小企業(yè)管理與科技(下旬刊).2011(11).
[2]牟宗祺.永不再傳,經(jīng)典3式破解軟件[J].電腦愛好者,2010(08).
[3]軟件是如何“被破解”的?[J].電腦愛好者,2010(09).