❶ 加密狗復制1個多少錢
可能大家都會以為加密狗復制就像U盤數據拷貝一樣簡單,其實加密狗復制不像好客戶想像的那樣把加密狗中的數據讀出來再復制到一個新的加密狗中,實際情況可不是這樣簡單,加密狗不像U盤,加密狗內部其實是一部完整的計算機,也有自己的cpu、內存等,只是計算速度相對較慢而已,因此可以完成一些簡單的任務,但是即使是一些簡單的任務對於我們(逆向開發技術網)來說也是非常復雜的,如果想從中獲取全部的數據困難程度可想而知。一般只能分析加密狗和軟體之間的通訊數據。其實這一步就是破解加密狗,把有用的數據提取出來,然後寫回空的加密狗既是復制,如果用軟體模擬即為「破解」。
軟體加密狗反向開發分為2種:
1、加密狗破解/解密:主要是通過技術手段截取軟體和加密狗直接的數據記錄,分析加密狗的演算法,模擬模擬加密狗內部單片機晶元程序,攔截程序修改軟體和加密狗之間的通訊。破解成功後技術方會開發一個寫狗工具,客戶可以使用寫狗工具自己不限量燒寫加密狗。(這等於是技術方把軟體技術一起出售了,讓不懂技術的客戶可以傻瓜式的開發軟體,加密狗破解價格比較高一般都在5000元以上)
2、加密狗復制/克隆:和加密狗破解一樣,只是沒有寫狗工具,客戶不能自己寫狗。技術方會按照客戶所需加密狗的數量定價,數量越多越便宜,一般100-500/個。
❷ 怎麼破解USB加密狗
hasp 系列加密狗破解有的朋友認為很難,其實不然,只要有足夠的耐心和技術基礎。是沒有問題的。
--------------------------------------------------------------------------------------------------------
004015FF |. 8D95 ACFBFFFF lea edx,[local.277]
00401605 |. 52 push edx
00401606 |. 8B85 F8FBFFFF mov eax,[local.258]
0040160C |. 50 push eax
0040160D |. 8B8D A8FBFFFF mov ecx,[local.278]
00401613 |. 51 push ecx
00401614 |. 68 D4E54000 push APP.0040E5D4 ; ASCII "EN"
00401619 |. 8B55 E8 mov edx,[local.6]
0040161C |. 52 push edx
0040161D |. E8 8E230000 call <jmp.&user_dll.sui_In> ;這個CALL只要一執行,就死掉,所以必須跟進
00401622 |. 8945 EC mov [local.5],eax
00401625 |. 8B45 EC mov eax,[local.5]
00401628 |> 8B4D F4 mov ecx,[local.3]
0040162B |. 64:890D 00000000 mov fs:[0],ecx
00401632 |. 8B4D E4 mov ecx,[local.7]
00401635 |. E8 C72D0000 call APP.00404401
0040163A |. 8BE5 mov esp,ebp
0040163C |. 5D pop ebp
0040163D \. C3 retn
--------------------------------------------------------------------------------------------------------
6、跟進後出現一下代碼,看第一行,就是0040161D 處調用的函數,再看右面的注釋,心跳加快,InitSystem,從名字上你都能猜想它會干什麼,對,讀狗的相關代碼就應該在這兒初始化(當然還要初始化其他信息),繼續跟進
--------------------------------------------------------------------------------------------------------
004039B0 $- FF25 C8554000 jmp ds:[<&user_In>] ; InitSystem
004039B6 $- FF25 C4554000 jmp ds:[<&user_Star>] ; StartProgram
004039BC $- FF25 C0554000 jmp ds:[<&user_Mai>]
004039C2 $- FF25 AC544000 jmp ds:[<&XXX_DLL.#3>]
004039C8 $- FF25 A8544000 jmp ds:[<&XXX_DLL.#47>]
--------------------------------------------------------------------------------------------------------
7、跟進後,代碼是一系列的IsBadReadPtr,由此判斷該處是初始化內存工作,離讀狗還用有一段距離。部分代碼如下,還有更多的IsBadReadPtr,沒必要就不貼了,貼一點提示思路即可。
一直按F8,痛苦的是這段代碼中有個循環,要循環20多次,稍不留神就結束循環,立刻進入另一個關鍵CALL,程序又死掉。所以在這兒又費了我很多時間。
--------------------------------------------------------------------------------------------------------
00EF5940 > 55 push ebp ;InitSystem函數
00EF5941 8BEC mov ebp,esp
00EF5943 81EC 280C0000 sub esp,0C28
00EF5949 A1 6C2EF100 mov eax,ds:[F12E6C]
00EF594E 8945 E0 mov ss:[ebp-20],eax
00EF5951 57 push edi
00EF5952 8B45 0C mov eax,ss:[ebp+C]
00EF5955 50 push eax
00EF5956 68 6848F100 push user_dll.00F14868
00EF595B E8 34F70000 call <jmp.&MSVCR71.strcpy>
00EF5960 83C4 08 add esp,8
00EF5963 B9 583AF100 mov ecx,user_dll.00F13A58
00EF5968 85C9 test ecx,ecx
00EF596A 74 46 je short user_dll.00EF59B2
00EF596C 6A 01 push 1
00EF596E 68 583AF100 push user_dll.00F13A58
00EF5973 FF15 1072F000 call ds:[<&KERNEL32.IsBadWritePtr>] ; kernel32.IsBadWritePtr
00EF5979 85C0 test eax,eax
00EF597B 75 35 jnz short user_dll.00EF59B2
00EF597D 837D 10 00 cmp dword ptr ss:[ebp+10],0
00EF5981 74 26 je short user_dll.00EF59A9
00EF5983 6A 01 push 1
00EF5985 8B55 10 mov edx,ss:[ebp+10]
00EF5988 52 push edx
00EF5989 FF15 1472F000 call ds:[<&KERNEL32.IsBadReadPtr>] ; kernel32.IsBadReadPtr
00EF598F 85C0 test eax,eax
00EF5991 75 16 jnz short user_dll.00EF59A9
00EF5993 68 04010000 push 104
00EF5998 8B45 10 mov eax,ss:[ebp+10]
00EF599B 50 push eax
00EF599C 68 583AF100 push user_dll.00F13A58
00EF59A1 FF15 1872F000 call ds:[<&KERNEL32.lstrcpynW>] ; kernel32.lstrcpynW
--------------------------------------------------------------------------------------------------------
8、上面代碼執行結束後迅速來到下面代碼,注釋處的CALL執行就死,跟進
--------------------------------------------------------------------------------------------------------
00EF5D8A 6A 03 push 3
00EF5D8C 68 10000100 push 10010
00EF5D91 8B15 9C3EF100 mov edx,ds:[F13E9C]
00EF5D97 83C2 12 add edx,12
00EF5D9A 52 push edx
00EF5D9B 68 D80CF100 push user_dll.00F10CD8
00EF5DA0 A1 9C3EF100 mov eax,ds:[F13E9C]
00EF5DA5 8B88 2C0F0000 mov ecx,ds:[eax+F2C]
00EF5DAB 51 push ecx
00EF5DAC E8 45E70000 call <jmp.&XXX_dll.#66_UserMessage>
00EF5DB1 EB 15 jmp short user_dll.00EF5DC8
00EF5DB3 E8 580B0000 call user_dll.00EF6910 ;該CALL執行就死掉,讀狗函數在這里
00EF5DB8 85C0 test eax,eax
00EF5DBA 74 0C je short user_dll.00EF5DC8
--------------------------------------------------------------------------------------------------------
9、跟進後一直按F8,遇到CALL user_dll.00XXXXXX字樣的要格外小心,果然執行到某個CALL的時候死掉,只好記住地址,重設斷點,重新來,繼續跟進死掉的CALL。由於這兒一直是尋找讀狗函數,所以不再貼代碼了,大家只看思路,無用代碼太多,會擾亂思路.
10、不厭其煩的重復上述過程突然發現下面代碼,相信僅僅函數名足以讓你興奮
-------------------------------------------------------------------------------------------------------
00EF6EB8 51 push ecx
00EF6EB9 68 680AF100 push user_dll.00F10A68
00EF6EBE 8B15 9C3EF100 mov edx,ds:[F13E9C]
00EF6EC4 83C2 12 add edx,12
00EF6EC7 52 push edx
00EF6EC8 E8 85D70000 call <jmp.&HLK_dll.#13_hlk_LogIn> ;LogIn,登錄狗
00EF6ECD 85C0 test eax,eax ;判斷返回值,如是0
00EF6ECF 0F84 B2000000 je user_dll.00EF6F87 ;跳走,死掉
00EF6ED5 C705 6C3EF100 01000000 mov dword ptr ds:[F13E6C],1
00EF6EDF E8 5CD70000 call <jmp.&HLK_dll.#10_hlk_Avail> ;讀另一個數據,為ReadDong做准備,雖然
00EF6EE4 85C0 test eax,eax ;不知道讀什麼,但返回值如是0
00EF6EE6 0F84 9B000000 je user_dll.00EF6F87 ;跳走,死掉
00EF6EEC 8D85 5CFFFFFF lea eax,ss:[ebp-A4]
00EF6EF2 50 push eax
00EF6EF3 E8 54D70000 call <jmp.&HLK_dll.#15_hlk_ReadDong> ;再讀
00EF6EF8 85C0 test eax,eax ;判斷返回值,如是0
00EF6EFA 0F84 87000000 je user_dll.00EF6F87 ;OVER
00EF6F00 B9 2848F100 mov ecx,user_dll.00F14828 ;判斷ECX是否為0,跟蹤發現該值是狗的編號
00EF6F05 85C9 test ecx,ecx ;是0與否,不影響程序運行
00EF6F07 74 2B je short user_dll.00EF6F34
00EF6F09 8D55 98 lea edx,ss:[ebp-68] ;該地址存放狗的編號
00EF6F0C 85D2 test edx,edx
00EF6F0E 74 16 je short user_dll.00EF6F26
00EF6F10 6A 06 push 6
00EF6F12 8D45 98 lea eax,ss:[ebp-68]
00EF6F15 50 push eax
00EF6F16 68 2848F100 push user_dll.00F14828
00EF6F1B FF15 E875F000 call ds:[<&MSVCR71.strncpy>] ; MSVCR71.strncpy
--------------------------------------------------------------------------------------------------------
11、聰明的你肯定知道該做什麼了,對,只要把00EF6ECF、00EF6EE6、00EF6EFA三處的je改為jne即可跳過狗的檢查。我毫不猶豫的就改了,運行,然而並沒有出現預想的興奮的事情。出現一個錯誤提示「沒有發現可選文件」。
12、「可選文件」是什麼意思,到軟體安裝目錄查看,有個OPTION文件夾,裡面有很多文件,用UltraEdit打開,看不懂呵呵
13、將改文件夾中的文件所有文件刪除,帶狗運行,出現和11步同樣的提示;恢復文件,運行正常。由此可見,解密那些文件需要狗中的數據,大家知道HASP狗用的是AES,難道狗中存放著AES密碼??帶著這樣的疑問跟蹤程序,來到下面代碼
--------------------------------------------------------------------------------------------------------00EF723F 8B8D 68F6FFFF mov ecx,ss:[ebp-998] ;壓入的三個參數意義就不說明了,因為沒必要
00EF7245 51 push ecx
00EF7246 8D95 64F8FFFF lea edx,ss:[ebp-79C]
00EF724C 52 push edx
00EF724D 8D85 BCFAFFFF lea eax,ss:[ebp-544]
00EF7253 50 push eax
00EF7254 E8 47180000 call user_dll.00EF8AA0 ;該函數執行完後,EDX會出現一些明碼,明碼信息
大概為APPLICAITON=XXX;OPTION=XXX.....是不是很像文件啟動需要檢查的選項?所以要弄懂解密演算法,必須跟進
--------------------------------------------------------------------------------------------------------
14、跟進後,部分代碼如下,這部分代碼很關鍵,所以貼的比較多。但是有很多是內核函數,很容易讀懂。
--------------------------------------------------------------------------------------------------------
00EF8B30 8D8D 68FDFFFF lea ecx,ss:[ebp-298]
00EF8B36 51 push ecx
00EF8B37 8B55 0C mov edx,ss:[ebp+C]
00EF8B3A 83C2 2C add edx,2C
00EF8B3D 52 push edx
00EF8B3E 68 5038F100 push user_dll.00F13850
00EF8B43 E8 14BD0000 call <jmp.&XXX_DLL.#100_ExtendPathName> ; 獲取文件完整路徑
00EF8B48 6A 00 push 0
00EF8B4A 8D85 70FFFFFF lea eax,ss:[ebp-90]
00EF8B50 50 push eax
00EF8B51 8D8D 68FDFFFF lea ecx,ss:[ebp-298]
00EF8B57 51 push ecx
00EF8B58 E8 63BC0000 call <jmp.&XXX_DLL.#47_MakeSString>
00EF8B5D 50 push eax
00EF8B5E FF15 0872F000 call ds:[<&KERNEL32.OpenFile>] ; 打開文件
00EF8B64 8985 54FDFFFF mov ss:[ebp-2AC],eax
00EF8B6A 83BD 54FDFFFF FF cmp dword ptr ss:[ebp-2AC],-1
00EF8B71 74 55 je short user_dll.00EF8BC8
00EF8B73 8B95 50FDFFFF mov edx,ss:[ebp-2B0]
00EF8B79 52 push edx
00EF8B7A 8B85 60FDFFFF mov eax,ss:[ebp-2A0] ;存放讀入數據的緩沖區,關鍵(後面破解用上)
00EF8B80 50 push eax
00EF8B81 8B8D 54FDFFFF mov ecx,ss:[ebp-2AC]
00EF8B87 51 push ecx
00EF8B88 FF15 F071F000 call ds:[<&KERNEL32._hread>] ; 讀文件,ebp-2A0為存放讀入數據的緩沖區
00EF8B8E 3B85 50FDFFFF cmp eax,ss:[ebp-2B0]
00EF8B94 75 19 jnz short user_dll.00EF8BAF
00EF8B96 8B55 10 mov edx,ss:[ebp+10]
00EF8B99 52 push edx
00EF8B9A 8B85 64FDFFFF mov eax,ss:[ebp-29C]
00EF8BA0 50 push eax
00EF8BA1 8B8D 60FDFFFF mov ecx,ss:[ebp-2A0] ;存放解密後的數據,和讀入緩沖區地址相同
00EF8BA7 51 push ecx
00EF8BA8 E8 B1BA0000 call <jmp.&HLK_dll.#12_hlk_Crypt> ;對讀入的數據進行解密,須弄懂演算法
00EF8BAD EB 0A jmp short user_dll.00EF8BB9
00EF8BAF C785 64FDFFFF 00000000 mov dword ptr ss:[ebp-29C],0
00EF8BB9 8B95 54FDFFFF mov edx,ss:[ebp-2AC]
00EF8BBF 52 push edx
00EF8BC0 FF15 F471F000 call ds:[<&KERNEL32._lclose>] ; 關閉文件
00EF8BC6 EB 0A jmp short user_dll.00EF8BD2
00EF8BC8 C785 64FDFFFF 00000000 mov dword ptr ss:[ebp-29C],0 ;後面的函數不做解釋了,只需知道解密後的
00EF8BD2 8B85 60FDFFFF mov eax,ss:[ebp-2A0] ;數據存放在ebp-2A0
00EF8BD8 0385 64FDFFFF add eax,ss:[ebp-29C]
00EF8BDE C600 00 mov byte ptr ds:[eax],0
00EF8BE1 8B4D 08 mov ecx,ss:[ebp+8]
00EF8BE4 8B95 60FDFFFF mov edx,ss:[ebp-2A0]
00EF8BEA 8911 mov ds:[ecx],edx
00EF8BEC 8B85 64FDFFFF mov eax,ss:[ebp-29C]
00EF8BF2 8B4D FC mov ecx,ss:[ebp-4]
00EF8BF5 E8 E8C30000 call user_dll.00F04FE2
00EF8BFA 8BE5 mov esp,ebp
00EF8BFC 5D pop ebp
00EF8BFD C3 retn
--------------------------------------------------------------------------------------------------------
15、為了得到解密後的數據,跟進00EF8BA8處的call <jmp.&HLK_dll.#12_hlk_Crypt>,看看到底是什麼演算法。可是樂觀的情緒又受打擊,該函數有大量的花指令,菜鳥階段,不懂如何去除花指令,研究肯定不是一天兩天的事。所以不能在一棵樹上弔死,換個思維,為什麼不能用程序本身的代碼進行解密呢!!!
對,就讓程序自身幫我們幹活!說干就干,在步驟13的00EF723F處設斷,反復運行程序,每執行一次查看ebp-2A0處的值,並mp出來,另存為16進制文件,這些文件就是解密過的文件,將其覆蓋原來的加密文件。剩下要做的就是跳過上面代碼中的解密模塊(_hlk_Crypt)。
這個很簡單,來到00EF8B8E 處,即程序剛進行完_hread之後,將該處的代碼cmp eax,ss:[ebp-2B0]改為jmp 00EF8BB9然後匯編。由於_hread函數和_hlk_Crypt函數用的是同一個緩沖區,所以_hread函數執行完畢後,ebp-2A0處的已解密數據就可順利為後續程序使用了。
16、經過上面修改後,F9,程序順利啟動!!!!
【繼續完善】
17、程序運行一段時間後,彈出對話框,通知確定狗的存在!!看來程序啟動中還是要定時檢查的。
第一個念頭:查找SetTimer函數,果然找到,且只有一次調用,心想就是這個函數在作怪了,該函數的uElapsed值為1秒,我將其該為9A7EC800,即30天。運行,可是仍然定時檢查狗的存在
第二個念頭:查找其他有關時間的函數,但感覺有點費勁,進而轉第三個念頭
第三個念頭:以其他的函數設斷點,如大家常用的CreateFile、DeviceIoControl等,但沒用過,感覺肯定不是跟蹤一兩句代碼就可搞定的事情,進而轉第四個念頭
第四個念頭:一勞永逸的想法,從源頭解決問題。為什麼不直接修改讀狗函數的返回值?這樣程序無論何時檢查狗都無所謂。
重新跟進hlk_LogIn、hlk_Avail、hlk_ReadDong三個函數,發現這三個函數返回前都有共同的代碼:
--------------------------------------------------------------------------------------------------------
00B5126C 837D FC 00 cmp dword ptr ss:[ebp-4],0 ;看ebp-4是否為0
00B51270 0F94C0 sete al ;是,則eax=1,有狗
00B51273 8B4D F4 mov ecx,ss:[ebp-C]
00B51276 E8 C6640400 call HLK_dll.00B97741 ;該CALL並不是真正函數,經驗證不影響上面的EAX值
00B5127B 8BE5 mov esp,ebp
00B5127D 5D pop ebp
00B5127E C2 0C00 retn 0C
-----------------------------------------------------------------------------------------------------
不插狗的情況下[ebp-4] = 9,因此eax = 0,無狗,因此只需將 sete al改為 setne al,匯編,即可。
至此,打狗結束,程序非常正常。將修改後的文件另存到可執行文件,做為補丁,覆蓋原文件,狗解除。
❸ 加密狗是什麼,它有什麼作用,和優盤作用一樣么
加密狗是外形酷似u盤的一種硬體設備,正名加密鎖,後來發展成如今的一個軟體保護的通俗行業名詞,"加密狗"是一種插在計算機並行口上的軟硬體結合的加密產品(新型加密狗也有usb口的)。一般都有幾十或幾百位元組的非易失性存儲空間可供讀寫,現在較新的狗內部還包含了單片機。軟體開發者可以通過介面函數和軟體狗進行數據交換(即對軟體狗進行讀寫),來檢查軟體狗是否插在介面上;或者直接用軟體狗附帶的工具加密自己exe文件(俗稱"包殼")。這樣,軟體開發者可以在軟體中設置多處軟體鎖,利用軟體狗做為鑰匙來打開這些鎖;如果沒插軟體狗或軟體狗不對應,軟體將不能正常執行。
加密狗通過在軟體執行過程中和加密狗交換數據來實現加密的.加密狗內置單片機電路(也稱cpu),使得加密狗具有判斷、分析的處理能力,增強了主動的反解密能力。這種加密產品稱它為"智能型"加密狗.加密狗內置的單片機里包含有專用於加密的演算法軟體,該軟體被寫入單片機後,就不能再被讀出。這樣,就保證了加密狗硬體不能被復制。同時,加密演算法是不可預知、不可逆的。加密演算法可以把一個數字或字元變換成一個整數,如dogconvert(1)=12345、dogconvert(a)=43565。
加密狗是為軟體開發商提供的一種智能型的軟體保護工具,它包含一個安裝在計算機並行口或
usb
口上的硬體,及一套適用於各種語言的介面軟體和工具軟體。加密狗基於硬體保護技術,其目的是通過對軟體與數據的保護防止知識產權被非法使用。
❹ 問一個有關軟體加密狗的問題
我們公司前兩天剛剛出現了一個問題:
有一台的加密狗被人給順手拿走了, 沒辦法所以將另外一台機器的加密狗拿過來直接插上去,就可以用了。
所以如果您的兩台電腦程序是一起買的,廠家說是一樣的應該可以用程序覆蓋, 如果不行,那一台的整套軟體就廢了,記住加密狗是不能復制的,廠家也沒辦法做到, 網上說的可以復制等都是忽悠人的。
加密狗是外形酷似U盤的一種硬體設備,正名加密鎖,後來發展成如今的一個軟體保護的通俗行業名詞,"加密狗"是一種插在計算機並行口上的軟硬體結合的加密產品(新型加密狗也有usb口的)。一般都有幾十或幾百位元組的非易失性存儲空間可供讀寫,現在較新的狗內部還包含了單片機。軟體開發者可以通過介面函數和軟體狗進行數據交換(即對軟體狗進行讀寫),來檢查軟體狗是否插在介面上;或者直接用軟體狗附帶的工具加密自己EXE文件(俗稱"包殼")。這樣,軟體開發者可以在軟體中設置多處軟體鎖,利用軟體狗做為鑰匙來打開這些鎖;如果沒插軟體狗或軟體狗不對應,軟體將不能正常執行。 加密狗通過在軟體執行過程中和加密狗交換數據來實現加密的.加密狗內置單片機電路(也稱CPU),使得加密狗具有判斷、分析的處理能力,增強了主動的反解密能力。這種加密產品稱它為"智能型"加密狗.加密狗內置的單片機里包含有專用於加密的演算法軟體,該軟體被寫入單片機後,就不能再被讀出。這樣,就保證了加密狗硬體不能被復制。同時,加密演算法是不可預知、不可逆的。加密演算法可以把一個數字或字元變換成一個整數,如DogConvert(1)=12345、DogConvert(A)=43565。 加密狗是為軟體開發商提供的一種智能型的軟體保護工具,它包含一個安裝在計算機並行口或 USB 口上的硬體,及一套適用於各種語言的介面軟體和工具軟體。加密狗基於硬體保護技術,其目的是通過對軟體與數據的保護防止知識產權被非法使用。
❺ C# 讀取加密狗信息的問題
一般出廠的加密狗都是空狗,如果你需要進行讀寫操作,那麼,需要先寫入你需要的一些校驗內容,如軟體作者的電話號碼等,然後在軟體中進行讀狗來校驗狗內數據是否正確。(註:寫狗操作不要放在代碼中,那樣就烏龍了)
❻ 加密狗主要有哪些不同種類
加密狗主要都是跟優盤差不多的設備,大部分為usb口,wibu也有sd卡和cf卡,主板usb擴展口等介面的加密狗,用來防止軟體盜版。
❼ 同望加密狗問題
首先判斷加密狗是否與軟體相對應的,然後重新更新一下最新的加密狗驅動。。你的機器無法識別加密狗而別的機器能識別,證明狗是完好的,很大程度上在於你的機器還沒有相應的驅動信息,重新更新一下加密狗的驅動,就可以解決啦~如有問題,可聯系0571-88821285 QQ:1069665028 提供加密狗以及信息安全解決方案,杭州旺財信息技術有限公司盡可能的幫助你。