加密狗複制(zhì)

如何複制(zhì)U盤接口的加密狗

U盤可(kě)讀可(kě)寫,而加密狗內(nèi)的數(shù)據是無法複制(zhì)和(hé)更改的. 加密狗也不是絕對不能複制(zhì),有(yǒu)些(xiē)人(rén)是專門(mén)從事加密狗破解的.但(dàn)肯定不能用U盤複制(zhì).因為(wèi)U盤和(hé)加密狗的構造是完全不同的. 因為(wèi)加密狗複制(zhì)不像好多(duō)人(rén)想象的那(nà)樣把加密狗中的數(shù)據讀出來(lái)再複制(zhì)到一個(gè)新的加密狗中,實際情況可(kě)不是這樣簡單,加密狗不像U盤,加密狗內(nèi)部其實是一部完整的計(jì)算(suàn)機,也有(yǒu)自己的cpu、內(nèi)存等,隻是計(jì)算(suàn)速度相對較慢而已,因此可(kě)以完成一些(xiē)簡單的任務,但(dàn)是即使是一些(xiē)簡單的任務對于我們來(lái)說也是非常複雜的,如果想從中獲取全部的數(shù)據困難程度可(kě)想而知。一般隻能分析加密狗和(hé)軟件之間(jiān)的通(tōng)訊數(shù)據。其實這一步就是破解加密狗,把有(yǒu)用的數(shù)據提取出來(lái),然後寫回空(kōng)的加密狗既是複制(zhì),如果用軟件模拟即為(wèi)破解。這樣兩者的工作(zuò)其實是一樣的,唯一不同的就是空(kōng)的加密狗也要錢(qián)來(lái)買的。 對于加密狗的破解大(dà)緻可(kě)以分為(wèi)三種方法,一種是通(tōng)過硬件克隆或者複制(zhì),一種是通(tōng)過SoftICEDebug工具調試跟蹤解密,一種是通(tōng)過編寫攔截程序修改軟件和(hé)加密狗之間(jiān)的通(tōng)訊。

硬件克隆複制(zhì)主要是針對國産芯片的加密狗,因為(wèi)國産加密狗公司一般沒有(yǒu)核心加密芯片的制(zhì)造能力,因此有(yǒu)些(xiē)使用了市場(chǎng)上(shàng)通(tōng)用的芯片,破解者分析出芯片電(diàn)路以及芯片裏寫的內(nèi)容後,就可(kě)以立刻複制(zhì)或克隆一個(gè)完全相同的加密狗。不過國外的加密狗就無法使用這種方法,國外加密狗硬件使用的是安全性很(hěn)好的自己研制(zhì)開(kāi)發的芯片,通(tōng)常很(hěn)難進行(xíng)複制(zhì),而且現在國內(nèi)加密狗也在使用進口的智能卡芯片,因此這種硬件克隆的解密方法用處越來(lái)越少(shǎo)。

對于Debug調試破解,由于軟件的複雜度越來(lái)越高(gāo),編譯器(qì)産生(shēng)的代碼也越來(lái)越多(duō),通(tōng)過反彙編等方法跟蹤調式破解的複雜度已經變得(de)越來(lái)越高(gāo),破解成本也越來(lái)越高(gāo),目前已經很(hěn)少(shǎo)有(yǒu)人(rén)願意花(huā)費大(dà)量精力進行(xíng)如此複雜的破解,除非被破解的軟件具有(yǒu)極高(gāo)的價值。

目前加密鎖(加密狗)的解密破解工作(zuò)主要集中在應用程序與加密動态庫之間(jiān)的通(tōng)訊攔截。這種方法成本較低(dī),也易于實現,對待以單片機等芯片為(wèi)核心的加密鎖(加密狗)具有(yǒu)不錯的解密效果。

由于加密鎖(加密狗)的應用程序接口(API)基本上(shàng)都是公開(kāi)的,因此從網上(shàng)可(kě)以很(hěn)容易下載到加密狗的編程接口API、用戶手冊、和(hé)其它相關資料,還(hái)可(kě)以了解加密狗技(jì)術(shù)的最新進展。

例如,某個(gè)國內(nèi)知名的美國加密狗提供商的一款很(hěn)有(yǒu)名的加密狗,其全部編程資料就可(kě)以從網上(shàng)獲取到,經過對這些(xiē)資料的分析,我們知道(dào)這個(gè)加密鎖(加密狗)有(yǒu)64個(gè)內(nèi)存單元,其中56個(gè)可(kě)以被用戶使用,這些(xiē)單元中的每一個(gè)都可(kě)以被用為(wèi)三種類型之一:算(suàn)法、數(shù)據值和(hé)計(jì)數(shù)器(qì)。

數(shù)據值比較好理(lǐ)解,數(shù)據值是用戶存儲在可(kě)讀寫的單元中的數(shù)據,就和(hé)存儲在硬盤裏一樣,用戶可(kě)以使用Read函數(shù)讀出存儲單元裏面的數(shù)據,也可(kě)以使用Write函數(shù)保存自己的信息到存儲單元。

計(jì)數(shù)器(qì)是這樣一種單元,軟件開(kāi)發商在其軟件中使用Decrement函數(shù)可(kě)以把其值減一,當計(jì)數(shù)器(qì)和(hé)某種活動的(active)算(suàn)法關聯時(shí),計(jì)數(shù)器(qì)為(wèi)零則會(huì)封閉(deactive)這個(gè)算(suàn)法。

算(suàn)法單元較難理(lǐ)解一些(xiē),算(suàn)法(algorithm)是這樣一種技(jì)術(shù),你(nǐ)用QueryqueryData)函數(shù)訪問它,其中queryData是查詢值,上(shàng)述函數(shù)有(yǒu)一個(gè)返回值,被加密的程序知道(dào)一組這樣的查詢值/返回值對,在需要加密的地方,用上(shàng)述函數(shù)檢查狗的存在和(hé)真僞。對于被指定為(wèi)算(suàn)法的單元,軟件上(shàng)是無法讀和(hé)修改的,即使你(nǐ)是合法的用戶也是如此,我理(lǐ)解這種技(jì)術(shù)除了增加程序複雜性以外,主要是為(wèi)了對付使用模拟器(qì)技(jì)術(shù)的破解。

此加密鎖(加密狗)的所有(yǒu)API函數(shù)調用都會(huì)有(yǒu)返回值,返回值為(wèi)0的時(shí)候表示成功。

因此,破解思路就出來(lái)了,就是使用我們自己的工具(如VBVC等)重新編寫構造一個(gè)和(hé)加密狗API一樣的DLL動态庫文件,裏面也包含ReadWrite等全部API中包含的函數(shù),使用的參量及返回值和(hé)原來(lái)的函數(shù)一樣,所有(yǒu)函數(shù)返回零。然後對QueryRead函數(shù)進行(xíng)處理(lǐ),返回應用軟件需要的數(shù)值即可(kě)。

這個(gè)新的DLL文件編寫成功後,直接替換掉原來(lái)的DLL文件,這時(shí)候再運行(xíng)應用軟件,軟件訪問加密狗的操作(zuò)就全部會(huì)被攔截,攔截程序永遠會(huì)返回正确的數(shù)據給軟件,從而實現了模拟加密狗的運行(xíng)。

以上(shàng)是目前破解軟件加密狗(加密鎖)的一些(xiē)常見思路,對于這種破解,軟件開(kāi)發者還(hái)是有(yǒu)相應的一些(xiē)對策的。




首頁

電(diàn)話(huà)

地址

到底了~