加密狗破解原理和破解方法介绍
加密狗是目前流行的一種軟件加密工具。它是插在計算機接口上的軟硬件結(jié)合的軟件加密產(chǎn)品。一般有USB口和并口兩種,又稱USB加密狗和并口加密狗,目前流行的一般是USB加密狗,并口加密狗在前幾年的時候用得比較多。加密狗內(nèi)部一般都有幾十到幾十K字節(jié)的存儲空間可供讀寫,有的內(nèi)部還增添了一個單片機。軟件運行時通過向狗發(fā)送消息,判斷從接口返回密碼(簡單的就是返回0或1)數(shù)據(jù)正確與否來檢查加密狗是否存在。此種方式可以通過直接修改返回值,來達到破解的目的。另一種可以在加密狗內(nèi)寫入一些數(shù)據(jù),程序執(zhí)行時需要從加密狗內(nèi)讀取數(shù)據(jù),這種情況下,如果只是簡單的修改返回值,程序是肯定不能正常運行的,所以就有了復(fù)制加密狗的破解方法。加密狗技術(shù)實際上并不是很高深的技術(shù),因為主要的加密狗的芯片和內(nèi)部文件都有專業(yè)的黑客及廠家提供,軟件作者一般只是把數(shù)據(jù)文件用專用軟件寫入狗中,所以不存在技術(shù)先進不先進之分。這里只是簡單的分析了加密狗破解的一些常見思路,對于軟件作者來說,還是有相應(yīng)的策略的,這也就是矛與盾的關(guān)系,互相促進,互相提高。加密狗的破解大致可以分為三種方法,一種是通過硬件克隆或者復(fù)制,一種是通過SoftICE等Debug工具調(diào)試跟蹤解密,一種是通過編寫攔截程序修改軟件和加密狗之間的通訊。硬件克隆復(fù)制主要是針對國產(chǎn)芯片的加密狗,因為國產(chǎn)加密狗公司一般沒有核心加密芯片的制造能力,因此有些使用了市場上通用的芯片,破解者分析出芯片電路 以及芯片里寫的內(nèi)容后,就可以立刻復(fù)制或克隆一個完全相同的加密狗。不過國外的加密狗就無法使用這種方法,國外加密狗硬件使用的是安全性很好的自己研制開 發(fā)的芯片,通常很難進行復(fù)制,而且現(xiàn)在國內(nèi)加密狗也在使用進口的智能卡芯片,因此這種硬件克隆的解密方法用處越來越少。對于Debug調(diào)試破解,由于軟件的復(fù)雜度越來越高,編譯器產(chǎn)生的代碼也越來越多,通過反匯編等方法跟蹤調(diào)式破解的復(fù)雜度已經(jīng)變得越來越高,破解成本也越來越高,目前已經(jīng)很少有人愿意花費大量精力進行如此復(fù)雜的破解,除非被破解的軟件具有極高的價值。目前加密狗(加密狗)的解密破解工作主要集中在應(yīng)用程序與加密動態(tài)庫之間的通訊攔截。這種方法成本較低,也易于實現(xiàn),對待以單片機等芯片為核心的加密狗(加密狗)具有不錯的解密效果。由于加密狗的應(yīng)用程序接口(API)基本上都是公開的,因此從網(wǎng)上可以很容易下載到加密狗的編程接口API、用戶手冊、和其它相關(guān)資料,還可以了解加密狗技術(shù)的最新進展。例如,某個國內(nèi)知名的美國加密狗提供商的一款很有名的加密狗,其全部編程資料就可以從網(wǎng)上獲取到,經(jīng)過對這些資料的分析,我們知道這個加密狗(加密狗)有64個內(nèi)存單元,其中56個可以被用戶使用,這些單元中的每一個都可以被用為三種類型之一:算法、數(shù)據(jù)值和計數(shù)器。數(shù)據(jù)值比較好理解,數(shù)據(jù)值是用戶存儲在可讀寫的單元中的數(shù)據(jù),就和存儲在硬盤里一樣,用戶可以使用Read函數(shù)讀出存儲單元里面的數(shù)據(jù),也可以使用Write函數(shù)保存自己的信息到存儲單元。計數(shù)器是這樣一種單元,軟件開發(fā)商在其軟件中使用Decrement函數(shù)可以把其值減一,當(dāng)計數(shù)器和某種活動的(active)算法關(guān)聯(lián)時,計數(shù)器為零則會封閉(deactive)這個算法。算法單元較難理解一些,算法(algorithm)是這樣一種技術(shù),你用Query(queryData)函數(shù)訪問它,其中queryData是查詢 值,上述函數(shù)有一個返回值,被加密的程序知道一組這樣的查詢值/返回值對,在需要加密的地方,用上述函數(shù)檢查狗的存在和真?zhèn)巍τ诒恢付樗惴ǖ膯卧?#xff0c;軟 件上是無法讀和修改的,即使你是合法的用戶也是如此,我理解這種技術(shù)除了增加程序復(fù)雜性以外,主要是為了對付使用模擬器技術(shù)的破解。此加密狗(加密狗)的所有API函數(shù)調(diào)用都會有返回值,返回值為0的時候表示成功。因此,破解思路就出來了,就是使用我們自己的工具(如VB、VC等)重新編寫構(gòu)造一個和加密狗API一樣的DLL動態(tài)庫文件,里面也包含Read、 Write等全部API中包含的函數(shù),使用的參量及返回值和原來的函數(shù)一樣,所有函數(shù)返回零。然后對Query、Read函數(shù)進行處理,返回應(yīng)用軟件需要 的數(shù)值即可。這個新的DLL文件編寫成功后,直接替換掉原來的DLL文件,這時候再運行應(yīng)用軟件,軟件訪問加密狗的操作就全部會被攔截,攔截程序永遠會返回正確的數(shù)據(jù)給軟件,從而實現(xiàn)了模擬加密狗的運行。經(jīng)過上面的介紹大家可以基本了解到我們常見的加密狗的基本破解方法,而大家最常見的免加密狗補丁破解則就是屬于第三種破解方式。而大家購買加密狗常見的兩種所謂有驅(qū)加密和無驅(qū)加密狗則分別對應(yīng)第三種dll文件破解和復(fù)制狗破解,有驅(qū)狗的最大特點就是安裝完程序和必要的驅(qū)動(這個是官方驅(qū)動)后還需要打一個補丁,這個補丁名字繁多,什么所謂升級補丁、新版驅(qū)動等等,其實都是破解補丁而已,只不過經(jīng)過了二次加密需要驗證加密狗,當(dāng)然這也是為了促進銷售的舉措,實際上那個加密狗只是一個擺設(shè),僅僅驗證補丁的加密而已,所以價格極為低廉。無驅(qū)加密狗直接能夠使用正版程序,普遍都是和正版同樣加密狗芯的加密狗復(fù)制的。雖然平時大家看不出這兩種加密狗有什么問題,但是注意細節(jié)的可能已經(jīng)看到了,有驅(qū)加密狗其實就是不管你軟件發(fā)出任何請求,一律返回數(shù)字0給軟件,從而達到破解目的,試問,如果軟件開發(fā)者使壞偏偏需要返回1的話豈不是造成嚴重錯誤?所以購買結(jié)構(gòu)計算軟件應(yīng)當(dāng)以復(fù)制狗為主,除非沒有復(fù)制狗提供的才能考慮有驅(qū)狗。而僅僅是繪圖軟件施工資料等一般性軟件則不需要如此嚴格,有驅(qū)無驅(qū)都是一樣使用了,就沒必要追求過分的完美。
總結(jié)
以上是生活随笔為你收集整理的加密狗破解原理和破解方法介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试开发工程师面经
- 下一篇: matlab 函数教程,MATLAB函数