加密狗復(fù)制的基本常識

現(xiàn)在很多人想對自已使用的加密狗進行復(fù)制一個兩個,方便同辦公司的同事一起使用。要對加密狗復(fù)制不是那么簡單的一種事情,需要做的事情很多,而且還要懂得很多軟硬件知識,在這里簡單介紹一下加密狗復(fù)制的一點基本常識。

我們現(xiàn)在一般說的加密狗,一般都是硬件加密狗。是一種類似于u盤一樣的東西,是一種防盜版的方式。一般是把程序的一小部分或解密部分集合到加密狗的硬件中,防止軟件的盜版。 加密狗(dongle),經(jīng)常被認為是硬件保護,它是一個可被附加在計算機并口、串口或USB上的小插件,它包含廠家燒制的EPROM和定制的專用集成電路。

dongle保護的的原理

軟件開發(fā)者在程序里經(jīng)常檢查dongle中的單元(Cell)的并對比返回值,這種檢查可以是直接讀單元或者是使用某種內(nèi)部算法(此時單元受到保護無法直接讀)。既然破解不行我就說說復(fù)制由于加密鎖(加密狗)的應(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ù)可以把其值減一,當計數(shù)器和某種活動的(active)算法關(guān)聯(lián)時,計數(shù)器為零則會封閉(deactive)這個算法。 算法單元較難理解一些,算法(algorithm)是這樣一種技術(shù),你用Query(queryData)函數(shù)訪問它,其中queryData是查詢值,上述函數(shù)有一個返回值,被加密的程序知道一組這樣的查詢值/返回值對,在需要加密的地方,用上述函數(shù)檢查狗的存在和真?zhèn)巍τ诒恢付樗惴ǖ膯卧?,軟件上是無法讀和修改的,即使你是合法的用戶也是如此,我理解這種技術(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)了模擬加密狗的運行。

其實復(fù)制也算是一種破解吧,但兩者也有本質(zhì)的區(qū)別,相對來說復(fù)制比破解好得多,因為不破壞軟件的完整性,也不會存在什么缺點。希望通過以上一點常識能幫助一下想復(fù)制加密狗的朋友。