本人作品---夢龍智慧專案管理99A解狗教程(獻給對加密狗有興趣的朋友) (13千字)
夢龍智慧專案管理99A破解過程
1.先下BPX CREATEFILEA,從MRUSE.DLL中返回到PERTWIN裡。
2.按F10走,當發現在執行某個CALL時有長時間的延持時,按F9在這個CALL上設斷。
3.重新執行一次,進入上面設斷點的那個CALL,按F10小心的走,注意段與段之間的跨越。
==<PART A>=====================================
0167:00461E9D PUSH EBP
0167:00461E9E
MOV EBP,ESP
0167:00461EA0 PUSH BYTE
-01
0167:00461EA2 PUSH DWORD 0059DFD2
0167:00461EA7
MOV EAX,[FS:00]
0167:00461EAD PUSH
EAX
0167:00461EAE MOV [FS:00],ESP
0167:00461EB5
SUB ESP,84
0167:00461EBB MOV
[EBP+FFFFFF70],ECX
0167:00461EC1 PUSH BYTE +00
0167:00461EC3
PUSH DWORD 2710
0167:00461EC8 PUSH DWORD
03E8
0167:00461ECD MOV ECX,[EBP+FFFFFF70]
0167:00461ED3 CALL 0054DC9D
0167:00461ED8 PUSH
BYTE +01
0167:00461EDA PUSH BYTE +01
0167:00461EDC
MOV ECX,005EBAD8
0167:00461EE1 CALL
00463922
0167:00461EE6 MOV [EBP-58],EAX //下BPX
CREATEFILEA後從MRUSE.DLL中返回到
//PERTWIN後游標會停在這裡。所以上面的那個
//CALL 463922有延遲。
0167:00461EE9
LEA EAX,[EBP-40]
0167:00461EEC PUSH
EAX
0167:00461EED MOV ECX,005EBAD8
0167:00461FDF
PUSH BYTE +00
0167:00461FE1 CALL 00548CCA
0167:00461FE6 PUSH ECX
0167:00461FE7 MOV
ECX,ESP
0167:00461FE9 MOV [EBP-6C],ESP
0167:00461FEC LEA EDX,[EBP-54]
0167:00461FEF
PUSH EDX
0167:00461FF0 CALL 00548F64
0167:00461FF5 LEA EAX,[EBP-70]
0167:00461FF8
PUSH EAX
0167:00461FF9 LEA ECX,[EBP-14]
0167:00461FFC DB E8
0167:00461FFD JNO
0046206F
0167:00461EF2 CALL 00463CD3
0167:00461EF7 MOV [EBP-58],EAX
0167:00461EFA
PUSH BYTE +63
0167:00461EFC MOV ECX,005EBAD8
0167:00461F01 CALL 00463BFA //用未破解過的MRUSE.DLL檔案時這裡會有很長時間
//的延遲。但用解過的MRUSE.DLL檔案時不會。分析
//部分在PART D
0167:00461F06 MOV
ECX,[EBP+FFFFFF70]
0167:00461F0C MOV [ECX+C0],EAX
0167:00461F12 PUSH BYTE +62
0167:00461F14 MOV
ECX,005EBAD8
0167:00461F19 CALL 00463BFA
0167:00461F1E MOV EDX,[EBP+FFFFFF70]
0167:00461F24
MOV [EDX+C4],EAX
0167:00461F2A PUSH
BYTE +61
0167:00461F2C MOV ECX,005EBAD8
0167:00461F31
CALL 00463BFA
0167:00461F36 MOV ECX,[EBP+FFFFFF70]
0167:00461F3C MOV [ECX+C8],EAX
0167:00461F42
PUSH BYTE +60
0167:00461F44 MOV ECX,005EBAD8
0167:00461F49 CALL 00463BFA
0167:00461F4E MOV
EDX,[EBP+FFFFFF70]
0167:00461F54 MOV
[EDX+CC],EAX
.
.
0167:00461FC5
PUSH EAX
0167:00461FC6 LEA ECX,[EBP-14]
0167:00461FC9 CALL 00549072
0167:00461FCE MOV
ECX,EAX
0167:00461FD0 CALL 00548F24
0167:00461FD5 TEST EAX,EAX
0167:00461FD7 JNZ
0046200C
0167:00461FD9 PUSH ECX
0167:00461FDA
MOV ECX,ESP
0167:00461FDC MOV
[EBP-74],ESP
0167:00461FDF PUSH BYTE +00
0167:00461FE1
CALL 00548CCA
0167:00461FE6 PUSH ECX
0167:00461FE7 MOV ECX,ESP
0167:00461FE9 MOV
[EBP-6C],ESP
0167:00461FEC LEA EDX,[EBP-54]
0167:00461FEF PUSH EDX
0167:00461FF0 CALL
00548F64
0167:00461FF5 LEA EAX,[EBP-70]
0167:00461FF8 PUSH EAX
0167:00461FF9 LEA
ECX,[EBP-14]
0167:00461FFC DB E8
//在這裡如果按F10就會執行軟體了,但為了分析它是
//如何執行的,按F8進入,原來這是一種特別的CALL,
//乍一看以為是定義值。以下是從這個CALL進入後的程式碼。
0167:00461FFC
CALL 00549072 //從上面那個DB E8中返回後變成了CALL 549072,這是種變像的CALL
0167:00462001
MOV ECX,EAX
0167:00462003 CALL 00548ED6
0167:00462008 TEST EAX,EAX
0167:0046200A JZ
00462022 //這裡會跳
0167:0046200C PUSH BYTE
+00
0167:0046200E PUSH BYTE +00
0167:00462010
PUSH DWORD 005DB5C0
0167:00462015 CALL 005271C1
0167:0046201A OR EAX,BYTE -01
0167:0046201D
JMP 00462256
0167:00462022 MOV
ECX,[EBP+08]
0167:00462025 PUSH ECX
0167:00462026
MOV ECX,[EBP+FFFFFF70]
0167:0046202C CALL
00538C61
0167:00462031 CMP EAX,BYTE -01
0167:00462034 JNZ 0046203E
0167:00462036
OR EAX,BYTE -01
0167:00462039 JMP
00462256
0167:0046203E PUSH DWORD 005DB5E0
.
.
0167:004620DB CALL 004628EB
//注意,從這裡進入後再走幾步就來到PART B
0167:004620E0 TEST EAX,EAX
0167:004620E2 JNZ 0046210E
(JUMP)
0167:004620E4 MOV DWORD [EBP-78],FFFFFFFF
0167:004620EB MOV BYTE [EBP-04],00
0167:004620EF
LEA ECX,[EBP-10]
0167:004620F2 CALL
0050ACBC
0167:004620F7 MOV DWORD [EBP-04],FFFFFFFF
0167:004620FE LEA ECX,[EBP-48]
0167:00462101
CALL 0050ACBC
0167:00462106 MOV EAX,[EBP-78]
0167:00462109 JMP 00462256
0167:0046210E
MOV ECX,[EBP+FFFFFF70]
0167:00462114 CALL
00462266 //注意,從這裡進入後再走幾步就來到PART B
0167:00462119 TEST
EAX,EAX
0167:0046211B JNZ 00462147 //未破解版這裡不會跳。
0167:0046211D MOV DWORD [EBP-7C],FFFFFFFF
0167:00462124 MOV BYTE [EBP-04],00
0167:00462128
LEA ECX,[EBP-10]
0167:0046212B CALL
0050ACBC
0167:00462137 LEA ECX,[EBP-48]
0167:0046213A
CALL 0050ACBC
0167:0046213F MOV EAX,[EBP-7C]
0167:00462142 JMP 00462256
0167:00462147
PUSH DWORD F000
0167:0046214C MOV
ECX,[EBP+FFFFFF70]
0167:00462152 CALL 00543E75
0167:00462157
MOV ECX,[EBP+FFFFFF70]
0167:0046215D CALL
004626B7 //注意,從這裡進入後再走幾步就來到PART B
0167:00462162 TEST
EAX,EAX
0167:00462164 JNZ 00462190
//未破解版這裡不會跳。
0167:00462166 MOV DWORD [EBP-80],FFFFFFFF
0167:0046216D MOV BYTE [EBP-04],00
0167:00462171
LEA ECX,[EBP-10]
0167:00462174 CALL
0050ACBC
0167:00462179 MOV DWORD [EBP-04],FFFFFFFF
0167:00462180 LEA ECX,[EBP-48]
0167:00462183
CALL 0050ACBC
0167:00462188 MOV EAX,[EBP-80]
0167:0046218B JMP 00462256
0167:00462196
CALL 004623C4 //注意,從這裡進入後再走幾步就來到PART B
0167:0046219B
TEST EAX,EAX
0167:0046219D JNZ 004621CF
//未破解版這裡不會跳。
0167:0046219F MOV DWORD [EBP+FFFFFF7C],FFFFFFFF
0167:004621A9 MOV BYTE [EBP-04],00
0167:004621AD
LEA ECX,[EBP-10]
0167:004621B0 CALL
0050ACBC
0167:004621B5 MOV DWORD [EBP-04],FFFFFFFF
0167:004621BC LEA ECX,[EBP-48]
0167:004621BF
CALL 0050ACBC
0167:004621C4 MOV EAX,[EBP+FFFFFF7C]
0167:004621CA JMP 00462256
0167:004621CF
MOV ECX,[EBP+FFFFFF70]
0167:004621D5 CALL
004627D1 //注意,從這裡進入後再走幾步就來到PART B
0167:004621DA TEST
EAX,EAX
0167:004621DC JNZ 0046220B //未破解版這裡不會跳。
0167:004621DE MOV DWORD [EBP+FFFFFF78],FFFFFFFF
0167:004621E8 MOV BYTE [EBP-04],00
0167:004621EC
LEA ECX,[EBP-10]
0167:004621EF CALL
0050ACBC
==<PART B>=====================================
這部分是關鍵,如果462285處的CALL返回的EAX和[ECX+C0]不相等,程式可執行,但會出錯。
它出現的錯誤VC的呼叫錯誤(紅X,英文提示,XXX檔案內部錯誤),原以為是軟體本身的問題。
後來分析發現它是用這種方法制造出來的錯誤。
所以在解狗過程中要細心分析,有很多的系統錯誤以及非法操作都是人為製造出來的,而不是
程式本身的問題。
-------------------------------------------------
好了,言歸正傳,下面來看看夢龍是如何讓程式產生錯誤的。
0167:0046226C MOV [EBP-18],ECX
0167:0046226F
PUSH BYTE +63
0167:00462271 MOV ECX,005EBAD8
0167:00462276 CALL 00463B2F
0167:0046227B MOV
[EBP-04],EAX
0167:0046227E PUSH BYTE +63
0167:00462280 MOV ECX,005EBAD8
0167:00462285
CALL 00463B2F //這裡的CALL將計算EAX,並將[ECX+C0]中賦值。
//想辦法使從這個CALL中返回的EAX=[ECX+C0]就行了。
0167:0046228A
MOV ECX,[EBP-18]
0167:0046228D CMP
EAX,[ECX+C0]
0167:00462293 JZ 0046229C
0167:00462295 XOR EAX,EAX
0167:00462297 JMP
004623C0
0167:0046229C PUSH DWORD E800
0167:004622A1 PUSH BYTE +00
==<PART C>======================================
0167:00463DF5 PUSH EBP //從這裡開始將計算EAX
0167:00463DF6
MOV EBP,ESP
0167:00463DF8 SUB
ESP,BYTE +08
0167:00463DFB MOV [EBP-08],ECX
0167:00463DFE MOV EAX,[EBP+08]
0167:00463E01
SUB EAX,BYTE +76
0167:00463E04 MOV
[EBP-04],EAX
0167:00463E07 MOV ECX,[EBP-08]
0167:00463E0A MOV EDX,[EBP-04]
0167:00463E0D
XOR EDX,[ECX+98]
0167:00463E13 MOV
[EBP-04],EDX
0167:00463E16 MOV EAX,[EBP-08]
0167:00463E19 MOV ECX,[EBP-04]
0167:00463E1C
ADD ECX,[EAX+98]
0167:00463E22 MOV
[EBP+08],ECX
0167:00463E25 MOV EAX,[EBP+08]
//這裡得出EAX,而從這段返回後會把EAX寫入[ECX+C0]
0167:00463E28 MOV
ESP,EBP
0167:00463E2A POP EBP
只要將463E25處寫成XOR
EAX,EAX就可以讓程式不會產生錯誤了。
==<PART D>====================================
延遲通常用兩種方法實現:
1.用核心的API----SLEEP,可以在SLEEP前面加引數來控制休眠的時間。
2.利用迴圈,將迴圈的次數設定的比較多,或是迴圈套迴圈。(夢龍用的就是這種)
0167:10006C94 CALL 10006D31
0167:10006C99
MOV [EBP-08],EAX
0167:10006C9C CMP
DWORD [EBP-08],BYTE +00
0167:10006CA0 JL
10006D02 //將這裡改成JMP就可以跳過有延遲的CALL了。
0167:10006CA2 MOV
EDX,[EBP-08]
0167:10006CA5 MOV BYTE [EDX+1001512C],FF
0167:10006CAC MOV EAX,[EBP+08]
0167:10006CAF
MOV BYTE [EAX+1001519C],FF
0167:10006CB6 MOV
ECX,[EBP+08]
0167:10006CB9 MOV DL,[EBP-08]
0167:10006CBC MOV [ECX+10015138],DL
0167:10006CC2
CALL 1000AA81 //這個CALL會產生延遲,想辦法跳過去。
0167:10006CC7
MOV [EBP-0C],AL
0167:10006CCA MOV
EAX,[EBP-0C]
0167:10006CCD AND EAX,FF
0167:10006CD2 PUSH EAX
0167:10006CD3 MOV
ECX,[EBP-08]
0167:10006CD6 PUSH ECX
0167:10006CD7
MOV ECX,[10015124]
0167:10006CDD CALL
10004163 //這個CALL會產生延遲,想辦法跳過去。
0167:10006CE2 MOV
EDX,[EBP-0C]
0167:10006CEB MOV [EBP-10],EDX
0167:10006CEE MOV EAX,[EBP+0C]
0167:10006CF1
ADD EAX,[EBP-10]
0167:10006CF4 MOV
[EBP+0C],EAX
0167:10006CF7 MOV ECX,[EBP+0C]
0167:10006CFA XOR ECX,[EBP-10]
0167:10006CFD
MOV [EBP+0C],ECX
0167:10006D00 JMP
SHORT 10006D0C
0167:10006D02 MOV EDX,[EBP+08]
0167:10006D05 MOV BYTE [EDX+1001519C],00
0167:10006D0C
MOV EAX,[EBP+08]
0167:10006D0F MOV
ECX,[10015120]
0167:10006D15 MOV EDX,[EBP+0C]
0167:10006D18 MOV [ECX+EAX*4],EDX
0167:10006D1B
MOV EAX,[EBP-04]
0167:10006D1E PUSH
EAX
0167:10006D1F CALL 1000658E
0167:10006D24
ADD ESP,BYTE +04
0167:10006D27 MOV
[EBP-04],EAX
0167:10006D2A MOV EAX,[EBP-04]
0167:10006D2D MOV ESP,EBP
0167:10006CEB
MOV [EBP-10],EDX
0167:10006CEE MOV
EAX,[EBP+0C]
0167:10006CF1 ADD EAX,[EBP-10]
0167:10006CF4 MOV [EBP+0C],EAX
0167:10006CF7
MOV ECX,[EBP+0C]
0167:10006CFA XOR
ECX,[EBP-10]
0167:10006CFD MOV [EBP+0C],ECX
0167:10006D00 JMP SHORT 10006D0C
0167:10006D02
MOV EDX,[EBP+08]
0167:10006D05 MOV
BYTE [EDX+1001519C],00
0167:10006D0C MOV
EAX,[EBP+08]
0167:10006D0F MOV ECX,[10015120]
0167:10006D15 MOV EDX,[EBP+0C]
0167:10006D18
MOV [ECX+EAX*4],EDX
0167:10006D1B MOV
EAX,[EBP-04]
0167:10006D1E PUSH EAX
0167:10006D1F
CALL 1000658E
0167:10006D24 ADD ESP,BYTE
+04
0167:10006D27 MOV [EBP-04],EAX
0167:10006D2A
MOV EAX,[EBP-04]
0167:10006D2D MOV
ESP,EBP
0167:10006D2F POP EBP
0167:10006D30F
RET
破解心得:1.對付延遲的方法通常是改變迴圈的次數或是跳過有迴圈的CALL,但要注意的是,
如果這個CALL裡的迴圈是用來向記憶體中寫值或是計算值的就不能跳過。
2.系統錯誤以及非法操作有很多都是人為製造出,比如除零,非法地址等。
除了在校驗狗的過程後要注意跳轉,還要幾個值與值之比較。通常程式中都是
利用一個過程來計算值的,點有狗時這個值就是固定的,在以後的比較中不會出錯。
而無狗時每次產生的值都不一樣,也就導致系統出錯。
===================================================================================
另外,哪個朋友自己有破解網站?我以前的站叫雪舞廬州,後來因為空間問題關了。我現在
已畢業了,回想起3年前一手創立的網站,很是心酸呀。不知哪位朋友能幫幫我,我不是想要空
間我是想和他一起做網站,我現在已從白菜樂園裡退出來了,那裡太複雜了。我想很多人都知道
我靠解狗賺錢,但我不希望大家把羅降神和錢劃上一個等號,我還是喜歡看雪論壇,它是我的啟
蒙老師,看雪兄也是我的好朋友,而且在這裡有很多人支援我,幫助過我,它伴隨我走過了3年。
如果時過境遷,罈子裡的很多人我都不認識了,還記得在罈子裡認識的第一個人是peterchen,
他以前的特長不是解密,而是交友,如今也成了老鳥了。
我的QQ是17525661 email:aispark@21cn.com
如果閒著沒事,加我吧。
羅降神
2002.6.25
相關文章
- 如何破解深思Ⅲ加密狗!想解狗的朋友過來看了!
(10千字)2015-11-15加密
- 本人作品,2488的解狗教程(DOS下的狗),應客戶要求,不便說出軟體名字。 (2千字)2002-02-18
- 加密狗集中管理方案2014-03-07加密
- Hardlock加密狗破解過程-----外殼型加密狗的破解方法 (7千字)2001-10-15加密
- 給對linux感興趣的初學者的文章2010-01-20Linux
- 僅以此程式碼獻給我所有朋友或愛好VFP的朋友。 (10千字)2002-09-08
- 蒙泰5.0加密狗破解過程 (6千字)2001-10-11加密
- 給對linux感興趣的初學者的文章 (轉)2008-01-22Linux
- 有沒有人對郵件系統有興趣2003-04-06
- I've got it!有興趣的看過來! (3千字)2001-02-17Go
- 專案管理過程攻略——送給初為專案經理的朋友2009-01-12專案管理
- 大老的打狗教程第二篇如解掉,深思3的狗加密的軟體!希望對大家有所幫助!大老=[DCG]=
(13千字)2015-11-15加密
- HTTP總有你感興趣的2018-01-07HTTP
- 破解《速達3000 Pro》 正式版的加密狗 (16千字)2001-03-16加密
- IT專案管理的“羊肉”與“狗頭”(轉)2007-08-15專案管理
- httprunner 的 java 實現,有沒有感興趣的朋友,一起維護一下2020-08-26HTTPJava
- 獻給所有從事IT行業擁有夢想的英語渣們2015-04-13行業
- 管家婆8.2單機版加密狗破解過程 (3千字)2001-10-13加密
- 原創深思3加密狗破解2015-11-15加密
- 討論開源的財務軟體 jPOS,有興趣的朋友來談談自己的看法.2004-02-27
- 如何給開源專案做貢獻2019-08-14
- 如何給 GNU 專案貢獻程式碼2016-02-10
- 絕對菜鳥解狗教程――qdcrack作品之一(發表在我論壇的文章)寫得非常好!初學者必看呀!
(11千字)2015-11-15
- 速達3000PRO加密狗軟體學習
(5千字)2003-02-19加密
- 興趣愛好——IOS興趣感的磨練2017-08-01iOS
- 從事專案管理的朋友們,是如何有效管理專案進度的?2022-01-27專案管理
- ChangeWave:公眾對iPhone興趣下降2010-10-03iPhone
- eMarketer:Pinterest使用者對旅行產品有濃厚興趣2012-11-06REST
- Branding Brand:78%的iPhone擁有者對蘋果新手機不感興趣2016-03-14iPhone蘋果
- 對WebUI技術感興趣的說 (轉)2007-08-16WebUI
- 專業的文獻管理檔案:Bookends for mac2022-07-03Mac
- 大老的打狗教程第一篇如解掉hasp的狗!希望對大家有所幫助!大老=[DCG]=
(12千字)2002-06-25
- 貧血和充血模型的比較之我見->有興趣的朋友進來參與討論2007-04-05模型
- 一個遊戲系統,向Banq大哥,以及感興趣的朋友請教!2008-03-28遊戲
- 有了興趣,就能學會Linux2021-07-01Linux
- CIO專案管理13禁忌 (轉)2007-08-11專案管理
- Bizrate:只有28%的消費者對使用智慧音響購物感興趣2019-09-03
- NASA專案管理:疲憊不堪的老累狗2009-01-12專案管理