加密狗如何加密,怎樣解密加密狗
加密狗是一種用于軟件加密的小型外置硬件設(shè)備,常見的有并口與USB接口兩種類型,加密狗被廣泛應(yīng)用于各種軟件之中,軟件開發(fā)的技術(shù)人員,可以把實現(xiàn)此項功能的軟件模塊,加載到任何需要對用戶信息判斷的地方,進(jìn)行編譯連接,從而就能形成可以保護(hù)自身的軟件產(chǎn)品。
USB加密狗
加密狗是一種插在計算機(jī)上的軟硬件結(jié)合的加密產(chǎn)品,它是插在計算機(jī)接口上的軟硬件結(jié)合的軟件加密產(chǎn)品。一般有USB口和并口兩種,又稱USB加密狗和并口加密狗,目前流行的一般是USB加密狗,外形酷似U盤的一種硬件設(shè)備,正名加密鎖,后來發(fā)展成加密狗這個軟件保護(hù)行業(yè)的通俗名詞。
并口加密狗
加密狗一般都有幾十或幾百字節(jié)的非易失性存儲空間可供讀寫,現(xiàn)在較新的狗內(nèi)部還包含了單片機(jī)。軟件開發(fā)者可以通過接口函數(shù)和軟件狗進(jìn)行數(shù)據(jù)交換(即對軟件狗進(jìn)行讀寫),來檢查軟件狗是否插在接口上;或者直接用軟件狗附帶的工具加密自己EXE文件(俗稱”包殼”)。這樣,軟件開發(fā)者可以在軟件中設(shè)置多處軟件鎖,利用軟件狗做為鑰匙來打開這些鎖;如果沒插軟件狗或軟件狗不對應(yīng),軟件將不能正常執(zhí)行。
加密狗加密
加密狗通過在軟件執(zhí)行過程中和加密狗交換數(shù)據(jù)來實現(xiàn)加密的.加密狗內(nèi)置單片機(jī)電路(也稱CPU),使得加密狗具有判斷、分析的處理能力,增強(qiáng)了主動的反解密能力。這種加密產(chǎn)品稱它為”智能型”加密狗.加密狗內(nèi)置的單片機(jī)里包含有專用于加密的算法軟件,該軟件被寫入單片機(jī)后,就不能再被讀出。這樣,就保證了加密狗硬件不能被復(fù)制。同時,加密算法是不可預(yù)知、不可逆的。加密算法可以把一個數(shù)字或字符變換成一個整數(shù),如DogConvert(1)=12345、DogConvert(A)=43565。
加密狗是為軟件開發(fā)商提供的一種智能型的軟件保護(hù)工具,它包含一個安裝在計算機(jī)并行口或USB口上的硬件,及一套適用于各種語言的接口軟件和工具軟件。加密狗基于硬件保護(hù)技術(shù),其目的是通過對軟件與數(shù)據(jù)的保護(hù)防止知識產(chǎn)權(quán)被非法使用。以編程的思想來看,加密狗就是在一個小存儲工具里,添加了一個.KEY的文件,這樣,先要訪問KEY才能訪問某些東西。
加密狗破解就是通過底層調(diào)試技術(shù)去除軟件上的加密狗綁定限制,使原正版軟件可以在沒有狗的狀態(tài)下正常運行。加密狗破解后還可以二次加密即使用新狗重新加密,也可以使用軟件注冊的方式加密。加密狗破解也稱為加密鎖破解,目前市面上以USB加密狗和并口加密狗為主流,大部分加密狗均可以破解。
加密狗解密
軟解密加密狗
加密狗軟解密就是針對加密產(chǎn)品,一方面是利用軟件監(jiān)測分析軟件在運行時向加密點寫了什么數(shù)據(jù),從加密點返回了什么數(shù)據(jù),然后在運行軟件前先在內(nèi)存駐留自編程序監(jiān)視加密點,當(dāng)軟件向加密點寫數(shù)據(jù)時,軟件自動代替加密點并返回相應(yīng)數(shù)據(jù)。這用軟件模擬了加密產(chǎn)品。另一方面是從軟件著手,尋找軟件調(diào)用加密點函數(shù)部分,修改判斷加密點是否存在的語句,將程序直接跳轉(zhuǎn)到正常執(zhí)行的部分。此種方式的解密缺點是會造成軟件的穩(wěn)定性下降,并有可能解密不徹底而造成軟件運行出錯!
軟復(fù)制加密狗
加密狗軟復(fù)制就是針對加密產(chǎn)品,用相關(guān)的工具讀出原版狗的狗數(shù)據(jù),寫入到相同型號的加密狗中,同時修改軟件中與加密狗對應(yīng)的綁定數(shù)據(jù),而達(dá)到復(fù)制的目的。把軟件中的密碼改成自己手上的加密狗的密碼,就達(dá)到了軟復(fù)制的效果。此種方法的優(yōu)點是保持原版軟件的穩(wěn)定性,杜絕了解密不徹底的現(xiàn)象;缺點是不支持軟件的升級,軟件升級后需要重新手動修改軟件的特征數(shù)據(jù)。
硬復(fù)制加密狗
部分軟件開發(fā)商為了保護(hù)軟件不被隨意復(fù)制,對加密狗采用了硬件加密的方式,通常市面所見的有USB硬狗和并口硬狗兩種,通常這些加密狗無法直接讀取數(shù)據(jù),但是采用專門的設(shè)備如讀卡器,可以讀出硬狗里面的相應(yīng)加密數(shù)據(jù),并且是用寫卡器可以把數(shù)據(jù)完美的寫入空狗,從而實現(xiàn)完美復(fù)制的硬狗。當(dāng)然這僅僅適用部分硬狗,不能一概而論。另外的一種方法是利用軟件的方法來硬復(fù)制,有些品牌的加密狗為了生產(chǎn)方便,會留有某些后門來更改狗的數(shù)據(jù)的,因此可以利用軟件的辦法來對加密狗里面的內(nèi)容進(jìn)行讀出,修改相關(guān)的特征數(shù)據(jù)后再寫入到狗中,從而達(dá)到硬復(fù)制的目的。本站獨創(chuàng)的Rockey4硬復(fù)制技術(shù)正是利用此技術(shù)來達(dá)到硬復(fù)制的效果。
硬復(fù)制解密加密狗
硬模擬加密狗
硬模擬是針對于智能加密狗,由于智能狗內(nèi)的程序及數(shù)據(jù)文件無法讀取,因此通過分析軟件及結(jié)合原狗,將狗內(nèi)的程序算法推算出來,或者監(jiān)控軟件調(diào)用原狗的入口出口數(shù)據(jù),通過自己寫程序來模擬原狗返回給軟件的數(shù)據(jù),以達(dá)到復(fù)制的目的。此方法需要比較強(qiáng)的分析能力才能做到,因此市面上出現(xiàn)的此類加密狗硬復(fù)制狗,實際上是硬模擬,不是真正意義上的硬復(fù)制,因為狗的程序是無法獲取的,因此很多客戶很容易上當(dāng),以為是硬復(fù)制的加密狗。
虛擬狗代替加密狗
虛擬狗是加密狗復(fù)制里面的比較高級的軟模擬方法,虛擬狗是一種虛擬總線設(shè)備,通過特殊的內(nèi)核驅(qū)動程序與加密狗的驅(qū)動程序進(jìn)行通訊,可以形象地稱為虛擬狗是電腦上的加密狗,俗稱軟件狗。虛擬狗的好處是不需要修改軟件,不需要修改驅(qū)動程序,功能上和硬件狗完全一樣。編寫虛擬狗程序除了需要極高的軟件編程能力外,更是要對虛擬的狗的特性十分了解,才有可能編寫成虛擬狗,因此這類技術(shù)的技術(shù)含量非常之高,不是一般人能實現(xiàn)的。
加密狗模擬驅(qū)動
如大家所知,windows下軟件在調(diào)用硬件時要通過驅(qū)動程序來實現(xiàn)對硬件的操作,硬件對于軟件來說僅是驅(qū)動程序所提供的接口。此驅(qū)動的接口通常是由軟狗公司提供,而且一般是不改變的。而此接口具體如何實現(xiàn)軟件是看不到的。模擬驅(qū)動就是通過模擬此軟件和硬件之間的接口,而通過軟件編程來實現(xiàn)此接口的功能,將加密狗的數(shù)據(jù)硬件編碼在驅(qū)動程序內(nèi),將加密狗的算法移植到驅(qū)動程序內(nèi),如此對于軟件而言就好像在操作一個真正的硬件一樣。不管軟件版本如何變化,驅(qū)動的接口并不改變,由于驅(qū)動和軟件程序文件是分離的,不需要更改程序文件,實現(xiàn)模擬驅(qū)動和軟件的版本無關(guān)。
加密狗的破解大致可以分為三種方法,一種是通過硬件克隆或復(fù)制,一種是通過softice等debug工具調(diào)試跟蹤解密,一種是通過編寫攔截程序修改軟件和加密狗之間的通訊。目前加密鎖(加密狗)的解密破解工作主要集中在應(yīng)用程序與加密動態(tài)庫之間的通訊攔截。這類方法成本較低,也便于實現(xiàn),看待以單片機(jī)等芯片為焦點的加密鎖(加密狗)具有不錯的解密效驗。
硬件克隆復(fù)制主要針對國產(chǎn)芯片的加密狗,因為國產(chǎn)加密狗公司一般沒有焦點加密芯片的制造能力,是以有些使用了市場上通用的芯片,破解者分析出芯片電路以及芯片里寫的內(nèi)部實質(zhì)意義后,就可以立刻復(fù)制或克隆一個純粹相同的加密狗。不過國外的加密狗就無法使用這類方法,國外加密狗硬件使用的是安全性大好的自己研究制造研發(fā)的芯片,凡是很難舉行復(fù)制,并且現(xiàn)在國內(nèi)加密狗也在使用進(jìn)口的智能卡芯片,是以這類硬件克隆的解密方法用處越來越少。
對于debug調(diào)試破解,由于軟件的龐大度越來越高,編譯器產(chǎn)生的代碼也越來越多,通過反匯編等方法跟蹤調(diào)式破解的龐大度已經(jīng)變患上越來越高,破解成本也越來越高,目前已經(jīng)很少有人愿意破費大量精神舉行如此龐大的破解,錯非被破解的軟件具有極高的價值。
由于加密鎖(加密狗)的應(yīng)用程序接口(api)基本上都是公開的,是以從網(wǎng)上可以很容易下載到加密狗的編程接口api、用戶手冊、和其它相關(guān)資料,還可以相識加密狗技術(shù)的最新進(jìn)展。
部分加密狗,其全部編程資料就可以從網(wǎng)上獲取到,經(jīng)過對這些資料的分析,我們知道這個加密鎖(加密狗)有64個內(nèi)儲存單子元,此中5六個可以被用戶使用,這些單元中的每一個均可以被用為三種類型之一:算法、數(shù)據(jù)值和計數(shù)器。
數(shù)據(jù)值比較好理解,數(shù)據(jù)值是用戶存儲在可讀寫的單元中的數(shù)據(jù),就和存儲在硬盤里一樣,用戶可使用read函數(shù)讀出存儲單元里面的數(shù)據(jù),也可使用write函數(shù)保存自己的信息到存儲單元。
計數(shù)器是這樣一種單元,軟件研發(fā)商在其軟件中使用decrent函數(shù)可以把其值減一,當(dāng)計數(shù)器和某種活動的(active)算法接洽關(guān)系時,計數(shù)器為零則會封閉(deactive)這個算法。
算法單元較難理解一些,算法(algorithm)是這樣一種技術(shù),你用query(querydata)函數(shù)訪問它,此中querydata是查詢值,上述函數(shù)有一個返回值,被加密的程序知道一組這樣的查詢值/返回值對,在需要加密之處,用上述函數(shù)檢查狗的存在和真?zhèn)?。對于被指定為算法的單?軟件上是無法讀和修改的,縱然你是合法的用戶也是如此,我理解這類技術(shù)除了增加程序龐大性以外,主要為了對付使用模擬器技術(shù)的破解。
加密狗的所有api函數(shù)挪用都會有返回值,返回值為0的時候表示成功。用工具(如vb、vc等)重新編寫構(gòu)造一個和加密狗api一樣的dll動態(tài)庫文件,里面也包羅read、write等全部api中包羅的函數(shù),使用的參量及返回值和原來的函數(shù)一樣,所有函數(shù)返回零。然后對query、read函數(shù)舉行處置懲罰,返回覆用軟件需要的數(shù)值便可。這個新的dll文件編寫成功后,直接替代掉原來的dll文件,這時再運行應(yīng)用軟件,軟件訪問加密狗的操作就全部會被攔截,攔截程序永恒會返回不錯的數(shù)據(jù)給軟件,從而實現(xiàn)了模擬加密狗的運行。