破解《速達3000 Pro》 正式版的加密狗 (16千字)
破解《速達3000 Pro》 正式版的加密狗
【宣告】
我寫這篇文章是以技術交流為主,希望大家在轉載時能保持文章的完整性。
【前言】
看過牧童兄的《小牧童放牛趕“狗“笨笨招(上)》後,一直想找個加密狗軟體學習研究一下。恰好小弟所在公司為了實現會計電算化。購買了正版的《速達3000
pro》進銷存財務軟體。小弟正好拿來練練手,在小弟的軟硬兼施外加一頓肯德基的誘惑下公司財務部的MM,終於肯將軟體和加密狗借給我一觀。
這是小弟第一次破解加密狗的軟體,功力有限。如有不足之處,請各位大俠指點。
軟體簡介:《速達3000 PRO》軟體是非常著名的進銷存財務軟體。
破解工具:
(1)Soft-ICE v4.01 //及各種補丁Frogsice
1.08、icepatch 、si_bd.zip
(2)wmldr.zip、 //讓Soft-ICE能夠在Win
ME下執行的補丁。
(3)IceDump 6.015
(4)Trw2000 1.22
(5)UltraEdit-32 v7.10b
(6)CodeFusion Wizard V3.00 //補丁製作工具
在破解之前,我們需要對軟體有一個基本的瞭解。 在沒有安裝加密狗之前,在啟動軟體時會彈出“未檢測到本軟體使用的軟體狗,本軟體將工作試驗版狀態”對話方塊。在軟體的啟動畫面中醒目的有紅色“試用版”三個字。就進入了“選擇公司帳套”。在進入軟體後。在
“關於速達3000 PRO”中同樣有紅色“試用版”三個字。
首先,取出我們的打狗棒Soft-ICE,在 LPT1上設定了最常用破狗斷點: BPIO -H 378 R。 停在了這兒:
EAX=CA51033F EBX=C17CDB9C ECX=CA51CCBC EDX=CA510378
ESI=CA51CE64
EDI=C17CDBB0 EBP=CA51CB6C ESP=CA51CB5C EIP=C17CB061
o d I S z a p c
CS=0028 DS=0030 SS=0030 ES=0030 FS=0078 GS=0030
SS:CA51CB68=CB88
==================================================byte==============PROT==?0)==
0030:00000000 CC 00 FF 2F 2B 04 70 00-C3 E2 00 F0 2B 04 70 00 .../+.p.....+.p.
0030:00000010 2B 04 70 00 54 FF 00 F0-08 80 00 F0 6F EF 00 F0 +.p.T.......o...
0030:00000020 00 00 00 C8 87 E9 00 F0-6F EF 00 F0 6F EF 00 F0 ........o...o...
0030:00000030 6F EF 00 F0 6F EF 00 F0-57 EF 00 F0 6F EF 00 F0 o...o...W...o...
==========================================================================ROT32==
0028:C17CB060 IN AL,DX
0028:C17CB061 MOV [EBP-04],AX <<--游標停在了這兒
0028:C17CB065 MOV AX,[EBP-04]
0028:C17CB069 JMP C17CB06E
0028:C17CB06E POP EDI
0028:C17CB06F POP ESI
0028:C17CB070 POP EBX
0028:C17CB071 LEAVE
0028:C17CB072 RET
0028:C17CB073 PUSH EBP
0028:C17CB074 MOV EBP,ESP
0028:C17CB076 PUSH EBX
0028:C17CB077 PUSH ESI
0028:C17CB078 PUSH EDI
0028:C17CB079 MOV AL,[EBP+0C]
0028:C17CB07C MOV DX,[EBP+08]
0028:C17CB080 OUT DX,AL
0028:C17CB081 POP EDI
0028:C17CB082 POP ESI
0028:C17CB083 POP EBX
0028:C17CB084 LEAVE
0028:C17CB085 RET
0028:C17CB086 PUSH EBP
0028:C17CB087 MOV EBP,ESP
0028:C17CB089 SUB ESP,1C
====================================TDSD(01)+3060==============================
:CLS
:pagein n 1.txt
從上面的資訊可以推斷出這是一個TDSD狗加密的軟體(可能是彩虹DJ系列的狗),我對狗認識不多,請指正。在按了幾次F12後,就跳到了Sd3000的領空。但我無從這該死的SD3000領空中出來!按住
F12,可是什麼都沒有變!使我陷入困境了。
在這裡我發現一個奇怪的現象。在SD3000的領空時,用Soft-ICE跟蹤時按F10程式碼會隨機改變。而Trw2000 1.22則沒有這樣的現象發生。我懷疑加密狗防Soft-ICE造成。但是在給Soft-ICE打上Frogsice
1.08、icepatch 、si_bd.zip等補丁後,還是有這樣的情況發生。不知是什麼問題。有那位大蝦知道請告知!! 小弟先行謝謝了。
第一次解狗,我不可能解加密狗的硬體,我看過的一些解狗的教程中有提到,“狗保護的弱點一般都是在軟體的本身!”也就是說要在軟體本身下手。對了,軟體在啟動時有對話方塊。我們就從這個點進行突破。
下指令bpx createwindowex 攔截軟體的對話方塊。
來到cc3250mt.dll的領空。
......................
016F:3257DBC9 INC EBX
016F:3257DBCA JMP SHORT 3257DBCD
016F:3257DBCC INC EBX
016F:3257DBCD MOV AL,[EBX]
016F:3257DBCF TEST AL,AL
016F:3257DBD1 JZ 3257DBD7
016F:3257DBD3 CMP AL,20
016F:3257DBD5 JZ 3257DBCC
016F:3257DBD7 CMP AL,09
016F:3257DBD9 JZ 3257DBCC
016F:3257DBDB CALL 3257DC24
016F:3257DBE0 PUSH EAX
016F:3257DBE1 PUSH EBX
016F:3257DBE2 PUSH BYTE +00
016F:3257DBE4 PUSH BYTE +00
016F:3257DBE6 CALL `KERNEL32!GetModuleHandleA`
016F:3257DBEB PUSH EAX
016F:3257DBEC CALL NEAR [ESI+18]
<<---關鍵! ! !
016F:3257DBEF ADD ESP,BYTE +10
016F:3257DBF2 PUSH EAX
016F:3257DBF3 CALL `CC3250MT!_exit`
016F:3257DBF8 POP ECX
016F:3257DBF9 JMP SHORT 3257DC1C
016F:3257DBFB MOV EDX,[325AD400]
016F:3257DC01 PUSH EDX
016F:3257DC02 MOV ECX,[325AD3FC]
016F:3257DC08 PUSH ECX
......................
當走到016F:3257DBEC CALL NEAR [ESI+18]時,按F10帶過此處時,軟體彈出“未檢測到本軟體使用的軟體狗,本軟體將工作試驗版狀態”對話方塊。估計在016F:3257DBEC
CALL NEAR [ESI+18]此處有重大嫌疑,重新在此處下中斷點。按F8進入此CAll。來到了SD3000的領空,就真正進入的軟體檢查加密的核心。
.................
016F:004017F4 55 PUSH
EBP
016F:004017F5 8BEC MOV
EBP,ESP
016F:004017F7 83C4C0 ADD
ESP,BYTE -40
016F:004017FA 53 PUSH
EBX
016F:004017FB 56 PUSH
ESI
016F:004017FC 57 PUSH
EDI
016F:004017FD B8D8C97500 MOV EAX,0075C9D8
016F:00401802 E8AD782800 CALL 006890B4
016F:00401807 6A00 PUSH
BYTE +00
016F:00401809 680EC97500 PUSH DWORD 0075C90E
016F:0040180E E853933500 CALL `USER32!FindWindowA`
016F:00401813 8945C0 MOV
[EBP-40],EAX
016F:00401816 837DC000 CMP
DWORD [EBP-40],BYTE +00
016F:0040181A 7622 JNA
0040183E
016F:0040181C 6A00 PUSH
BYTE +00
016F:0040181E 6A00 PUSH
BYTE +00
016F:00401820 68B9080000 PUSH DWORD 08B9
016F:00401825 FF75C0 PUSH DWORD
[EBP-40]
016F:00401828 E841943500 CALL `USER32!PostMessageA`
016F:0040182D 33C0 XOR
EAX,EAX
016F:0040182F 8B55C4 MOV
EDX,[EBP-3C]
016F:00401832 64891500000000 MOV `DOSMGR_BackFill_Allowed`,EDX
016F:00401839 E9F0030000 JMP 00401C2E
016F:0040183E C6050056890000 MOV BYTE [00895600],00
016F:00401845 803D0056890000 CMP BYTE [00895600],00
016F:0040184C 0F852B010000 JNZ NEAR 0040197D
016F:00401852 C6050056890001 MOV BYTE [00895600],01
016F:00401859 66C745D41400 MOV WORD [EBP-2C],14
016F:0040185F 8D45F8 LEA
EAX,[EBP-08]
016F:00401862 E8D1030000 CALL 00401C38
016F:00401867 FF45E0 INC
DWORD [EBP-20]
016F:0040186A E86D353500 CALL `SD3000!@Dogtestpro@_ManCheckDlgDan$qqrv`
016F:0040186F 66C745D40800 MOV WORD [EBP-2C],08
016F:00401875 66C745D42000 MOV WORD [EBP-2C],20
016F:0040187B BA1FC97500 MOV EDX,0075C91F
016F:00401880 8D45F4 LEA
EAX,[EBP-0C]
016F:00401883 E8EC3D3500 CALL 00755674
016F:00401888 FF45E0 INC
DWORD [EBP-20]
016F:0040188B 8D55F4 LEA
EDX,[EBP-0C]
016F:0040188E 8D45F8 LEA
EAX,[EBP-08]
016F:00401891 E856413500 CALL 007559EC
016F:00401896 50 PUSH
EAX
016F:00401897 FF4DE0 DEC
DWORD [EBP-20]
016F:0040189A 8D45F4 LEA
EAX,[EBP-0C]
016F:0040189D BA02000000 MOV EDX,02
016F:004018A2 E861403500 CALL 00755908
016F:004018A7 59 POP
ECX
016F:004018A8 84C9 TEST
CL,CL
016F:004018AA 7412 JZ
004018BE
016F:004018AC E83F373500 CALL `SD3000!@Dogtestpro@_GoldenSoftCheckdlgDan$qqrv`
016F:004018B1 84C0 TEST
AL,AL
016F:004018B3 7457 JZ
0040190C
016F:004018B5 C6050056890000 MOV BYTE [00895600],00
016F:004018BC EB4E JMP
SHORT 0040190C
016F:004018BE 66C745D42C00 MOV WORD [EBP-2C],2C
016F:004018C4 BA21C97500 MOV EDX,0075C921
016F:004018C9 8D45F0 LEA
EAX,[EBP-10]
016F:004018CC E8A33D3500 CALL 00755674
016F:004018D1 FF45E0 INC
DWORD [EBP-20]
016F:004018D4 8D55F0 LEA
EDX,[EBP-10]
016F:004018D7 8D45F8 LEA
EAX,[EBP-08]
016F:004018DA E80D413500 CALL 007559EC
016F:004018DF 50 PUSH
EAX
016F:004018E0 FF4DE0 DEC
DWORD [EBP-20]
016F:004018E3 8D45F0 LEA
EAX,[EBP-10]
016F:004018E6 BA02000000 MOV EDX,02
016F:004018EB E818403500 CALL 00755908
016F:004018F0 59 POP
ECX
016F:004018F1 84C9 TEST
CL,CL
016F:004018F3 7417 JZ
0040190C
016F:004018F5 33C0 XOR
EAX,EAX
016F:004018F7 E820BB0100 CALL 0041D41C
016F:004018FC 84C0 TEST
AL,AL
016F:004018FE 740C JZ
0040190C
016F:00401900 E8833B3500 CALL `SD3000!@Dogtestpro@WriteNewInfo$qqrv`
016F:00401905 C6050056890000 MOV BYTE [00895600],00
016F:0040190C 803D0056890000 CMP BYTE [00895600],00
016F:00401913 7452 JZ
00401967
016F:00401915 BADEC87500 MOV EDX,0075C8DE
016F:0040191A 8D45E8 LEA
EAX,[EBP-18]
016F:0040191D E8523D3500 CALL 00755674
016F:00401922 FF45E0 INC
DWORD [EBP-20]
016F:00401925 FF30 PUSH
DWORD [EAX]
016F:00401927 66C745D43800 MOV WORD [EBP-2C],38
016F:0040192D BA23C97500 MOV EDX,0075C923
016F:00401932 8D45EC LEA
EAX,[EBP-14]
016F:00401935 E83A3D3500 CALL 00755674
016F:0040193A FF45E0 INC
DWORD [EBP-20]
016F:0040193D 8B00 MOV
EAX,[EAX]
016F:0040193F 33C9 XOR
ECX,ECX
016F:00401941 5A POP
EDX
016F:00401942 E849E50100 CALL 0041FE90
//走到這兒。對話方塊跳出來了。
016F:00401947 FF4DE0 DEC
DWORD [EBP-20]
016F:0040194A 8D45E8 LEA
EAX,[EBP-18]
016F:0040194D BA02000000 MOV EDX,02
016F:00401952 E8B13F3500 CALL 00755908
016F:00401957 FF4DE0 DEC
DWORD [EBP-20]
016F:0040195A 8D45EC LEA
EAX,[EBP-14]
016F:0040195D BA02000000 MOV EDX,02
016F:00401962 E8A13F3500 CALL 00755908
016F:00401967 FF4DE0 DEC
DWORD [EBP-20]
016F:0040196A 8D45F8 LEA
EAX,[EBP-08]
016F:0040196D BA02000000 MOV EDX,02
.................
不知道,大家看了上面的程式碼,有什麼感覺。給我的第一個感覺就是[00895600]地址有問題。眼睛尖的朋友會注意到,程式在很多地方都呼叫了[00895600]這個地址的數值。而且在[00895600]這個地址後面幾乎都有比較、跳轉指令。難道這個[00895600]這個地址真有問題?為了證明我的想法是正確的。這需要來透過除錯來驗證。
首先,看一下什麼地方可以跳過016F:00401942 E849E50100 CALL
0041FE90 子程式。向上找發現最近一處在:
016F:0040190C 803D0056890000 CMP BYTE [00895600],00
//比較[00895600]和00的值
016F:00401913 7452 JZ
00401967 //改為jnz.
可以跳過016F:00401942 E849E50100 CALL 。
透過修改,程式在啟動時。對話方塊不見了 ,但是在啟動畫面中還有“試用版”三個字。這是一個不錯的現象哦!雖然,我跳過了對話方塊,可以估計軟體其他地方還需要呼叫加密狗的標記,因為我是用強制手段跳過檢查加密狗對話方塊的,所以還有“試用版”的文字。
在看看016F:0040190C 803D0056890000 CMP BYTE
[00895600],00 是比較[00895600]和00的值.
實際上00895600=1。同00不相等,用 E 命令強制把00895600=1改為=0。走到016F:00401913 7452
JZ 00401967 時自然就跳過016F:00401942 E849E50100
CALL處。按X鍵退出除錯狀態。透過以上修改,程式在啟動時,不但對話方塊不不見了,連啟動畫面中的“試用版”三個字也不見了。如果我沒有猜錯的話,00895600=0應該是軟體檢查已經安裝加密狗的標記。
下面我們來分析軟體是如何加解密的過程吧。
第一步:鎖住加密的軟體。
...........
016F:0040183E C6050056890000 MOV BYTE [00895600],00
//將00傳送008995600地址中。
016F:00401845 803D0056890000 CMP BYTE [00895600],00
//比較00和008995600的值。
016F:0040184C 0F852B010000 JNZ NEAR 0040197D
//不相等就跳。
016F:00401852 C6050056890001 MOV BYTE [00895600],01
//將01傳送008995600地址中。
. .
. .
用狗鎖住軟體。
. .
. .
第二步:呼叫子程式檢查是否安裝了加密狗。
016F:004018A2 E861403500 CALL 00755908
//檢查狗。
016F:004018A7 59 POP
ECX
//出棧。
016F:004018A8 84C9 TEST
CL,CL //CL是否等於1。<CL=1表示安裝了狗>
016F:004018AA 7412 JZ
004018BE //沒安狗,跳到004018BE。
016F:004018AC E83F373500 CALL `SD3000!@Dogtestpro@_GoldenSoftCheckdlgDan$qqrv`
//看函式名就明白了吧。
016F:004018B1 84C0 TEST
AL,AL //al是否等於1。<AL=1表示安裝了狗>
016F:004018B3 7457 JZ
0040190C //沒安狗,跳到0040190C。
016F:004018B5 C6050056890000 MOV BYTE [00895600],00
<<--把狗處於待解開的狀態!!!
016F:004018BC EB4E JMP
SHORT 0040190C //無條件跳到0040190C
. .
. .
. .
. .
第三步:解開狗。
016F:0040190C 803D0056890000 CMP BYTE [00895600],00
//比較00895600和00。
016F:00401913 7452 JZ
00401967 //00895600=0
就跳到00401967。
.............
好的! 狗被解開了
同過上面的除錯和分析,我們只要使 [00895600] 的值等於 0 ,就可以把狗解開! 我改。
016F:004018A2 E861403500 CALL 00755908
016F:004018A7 59 POP
ECX
016F:004018A8 84C9 TEST
CL,CL
016F:004018AA 7412 JZ
004018BE <<--改為jnz
016F:004018AC E83F373500 CALL `SD3000!@Dogtestpro@_GoldenSoftCheckdlgDan$qqrv`
016F:004018B1 84C0 TEST
AL,AL
016F:004018B3 7457 JZ
0040190C <<--改為jnz
016F:004018B5 C6050056890000 MOV BYTE [00895600],00
//將00傳送008995600地址中
016F:004018BC EB4E JMP
SHORT 0040190C
用UltraEdit開啟Sd3000.exe
找到:74 12 E8 3F 37 35 00 84 C0 74 57
修改:75 -- -- -- -- -- -- -- -- 75 --
改了兩個位元組,就把加密狗給解開了。
現在給你的軟體打上補丁,執行試試看!
正好應了牧童兄的話:“有些軟體作者可是非常想信軟體狗的保護能力,在軟體中其它保護做得很少,甚至攔出錯訊息框就能解決問題。” 《速達3000
pro》就是這句話的真實寫照。
相關文章
- 速達3000PRO加密狗軟體學習
(5千字)2003-02-19加密
- Hardlock加密狗破解過程-----外殼型加密狗的破解方法 (7千字)2001-10-15加密
- 青島阿牛解狗教程之一(速達3000pro網路版) (11千字)2002-02-07
- 蒙泰5.0加密狗破解過程 (6千字)2001-10-11加密
- 方正飛騰3.1加密狗破解過程-----淺談Sentinel Super Pro的加密演算法 (14千字)2015-11-15加密演算法
- 速達3000 自動匯入工具2019-01-15
- Lambda Pro v2.0安裝序列號破解(1) (16千字)2001-12-08
- 如何破解深思Ⅲ加密狗!想解狗的朋友過來看了!
(10千字)2015-11-15加密
- 菜鳥破解實錄(16)之 CD Box Labeler Pro (4千字)2000-08-03
- 我的破解心得(5) (16千字)2001-03-13
- 管家婆8.2單機版加密狗破解過程 (3千字)2001-10-13加密
- Teleport Pro破解實戰錄 (6千字)2000-05-28
- 原創深思3加密狗破解2015-11-15加密
- 破解WS_FTP Pro 7.02 (8千字)2001-10-28FTP
- 破解管家婆輝煌網路版8.0A客戶端的加密狗 (6千字)2001-10-05客戶端加密
- ssreader 360正式版 完美破解版本 (3千字)2002-01-06
- 菜鳥破解錄(17)之 BackupXpress Pro (3千字)2000-08-05
- 如何破解windows help designed pro v
2.3.3.0 (2千字)2001-03-12Windows
- 《teleport pro 1.28》破解實錄 !!高手莫進!! (5千字)2001-05-03
- Advanced
PDF Password Recovery Pro 2.12的不完美破解 (12千字)2003-05-20
- 用DeDe破解------Ativa Pro v3.18 的破文 (8千字)2001-08-29
- EmEditor v3.16破解過程 (9千字)2001-07-22
- 破解實錄(四)之 NoteTab Pro Trial 4.81 (3千字)2000-07-18
- 不脫殼破解極光多能鬧鐘
(16千字)2003-04-14
- 有聲有色 v3.16破解教程 (6千字)2000-10-03
- 超屏捕 v3.30 破解^程 (16千字)2002-01-20
- 無人機也有競速賽?最高可以達到恐怖的161公里2017-01-10無人機
- macbook pro破解UltraEdit2019-04-17Mac
- 極速登入3.6---用winHEX破解VB程式之例二 (1千字)2001-09-02
- Windows Lotto Pro 2000 V5.39之暴力破解
(10千字)2001-04-02Windows
- 出一個 2016 款 15 寸 MacBook Pro 價格 3000 可刀!2021-07-28Mac
- 破解NetScanTools Pro 2000及其InstallShield指令碼破解(其實指令碼沒破成)
(18千字)2001-03-30指令碼
- ClassExplorer的破解 (13千字)2001-07-29
- 象棋橋2000新版及absolute security pro3.7的註冊破解。
(3千字)2000-08-28
- 用外掛(plugin)的方式改變IDA Pro的邊界線 (16千字)2015-11-15Plugin
- PolyView 破解 (5千字)2000-12-31View
- 破解FAQGenie (4千字)2001-04-10
- 破解MyMahj (5千字)2001-06-20