英語會話精靈 2.0 --謹以此文獻給初學破解的愛好者 (7千字)
英語會話精靈 2.0
[Cracked on 11-25-2002 by youth]
平臺:Windows 2000
Professional
工具:pe-scan 3.31 ollydbg 1.08 lordpe
1.4
1、脫殼
經pe-scan3.31檢測,此軟體用aspack 2.12加殼。
用ollydbg載入,停在殼的入口處,向下尋找popad指令,下斷點,執行後在斷點處中斷,單步至oep。
執行lordpe,找到該程式的程式後[dump full],然後修改oep為正確的oep,再自動修復輸入表。
至此,程式已經脫殼成功。
2、執行未註冊的此程式,在註冊時,輸入不正確的註冊碼後,會提示註冊失敗。因此,可以透過攔截user32:ShowWindow 這一API函式。攔截成功並返回到程式的領空後,來到了這裡:
0047A058 /. 55 PUSH EBP
、、、
0047A07A |. 6A 00 PUSH 0
0047A07C |. 6A 1B PUSH 1B
0047A07E
|. E8 5DFDFFFF CALL untopbar.00479DE0
0047A083 |. 2D 1F17F601
SUB EAX,1F6171F
;eax為16進位制的使用者編號 UserNo=UserNo-0x1f6171f
0047A088 |. 83DA 00 SBB EDX,0
0047A08B
|. E8 E0C4F8FF CALL untopbar.00406570
;UserNo=UserNo*0x1b
0047A090 |.
52 PUSH EDX
; /Arg2
0047A091 |. 50 PUSH
EAX
; |Arg1:UserNo
0047A092 |. 8D45
FC LEA EAX,DWORD PTR SS:[EBP-4]
; |
0047A095 |. E8 0EE9F8FF CALL
untopbar.004089A8
; \untopbar.004089A8 計算真正的註冊碼
0047A09A |. 8B45 FC
MOV EAX,DWORD PTR SS:[EBP-4]
0047A09D |. 50
PUSH EAX
0047A09E |. 8D55 F4
LEA EDX,DWORD PTR SS:[EBP-C]
0047A0A1 |. 8B86 E8020000
MOV EAX,DWORD PTR DS:[ESI+2E8]
0047A0A7 |. E8 E849FBFF
CALL untopbar.0042EA94
0047A0AC |. 8B45 F4
MOV EAX,DWORD PTR SS:[EBP-C]
0047A0AF |. 8D55 F8
LEA EDX,DWORD PTR SS:[EBP-8]
0047A0B2 |. E8 41E7F8FF
CALL untopbar.004087F8
0047A0B7 |. 8B55 F8
MOV EDX,DWORD PTR SS:[EBP-8]
0047A0BA |. 58
POP EAX
0047A0BB |. E8 E49DF8FF CALL untopbar.00403EA4
;和真正的註冊碼依次按位比較
0047A0C0
|. 0F85 3D010000 JNZ untopbar.0047A203
;不同則跳轉,註冊失敗
0047A0C6 |. 68 40000400
PUSH 40040
0047A0CB |. B9 6CA24700 MOV ECX,untopbar.0047A26C
0047A0D0 |. BA 7CA24700 MOV EDX,untopbar.0047A27C
、、、
0047A201 |. EB 29 JMP SHORT untopbar.0047A22C
0047A203 |> 68 30000400 PUSH 40030
;/
0047A208 |. B9 6CA24700 MOV ECX,untopbar.0047A26C
;|
0047A20D |. BA D0A24700
MOV EDX,untopbar.0047A2D0
;|
0047A212 |. A1 E8794B00 MOV EAX,DWORD PTR DS:[4B79E8]
;|
0047A217 |. 8B00
MOV EAX,DWORD PTR DS:[EAX]
;|
0047A219 |. E8 462AFDFF CALL untopbar.0044CC64
;\顯示“註冊碼無效”視窗
0047A21E
|. 8B86 E8020000 MOV EAX,DWORD PTR DS:[ESI+2E8]
0047A224 |. 8B10
MOV EDX,DWORD PTR DS:[EAX]
0047A226 |.
FF92 CC000000 CALL DWORD PTR DS:[EDX+CC]
0047A22C |> 33C0
XOR EAX,EAX
、、、
0047A25E \. C3
RETN
由0047A095處跟蹤進出後,來到這裡,也就是該軟體根據使用者編號算出註冊碼的核心過程:
0040916B |> 51 /PUSH ECX
0040916C |. 6A 00 |PUSH 0
0040916E
|. 51 |PUSH ECX
0040916F |.
8B03 |MOV EAX,DWORD PTR DS:[EBX]
;/初始值為:(UserNo-0x1f6171f)*0x1b,見0047A083-0047A08B
00409171
|. 8B53 04 |MOV EDX,DWORD PTR DS:[EBX+4]
;\
00409174 |. E8 DCD5FFFF |CALL untopbar.00406755
00409179 |. 59 |POP ECX
0040917A |. 92 |XCHG EAX,EDX
0040917B |. 80C2 30 |ADD DL,30
0040917E
|. 80FA 3A |CMP DL,3A
00409181 |.
72 03 |JB SHORT untopbar.00409186
00409183
|. 80C2 07 |ADD DL,7
00409186 |> 4E
|DEC ESI
00409187 |. 8816
|MOV BYTE PTR DS:[ESI],DL
00409189
|. 51 |PUSH ECX
0040918A |.
6A 00 |PUSH 0
0040918C |. 51
|PUSH ECX
0040918D |. 8B03
|MOV EAX,DWORD PTR DS:[EBX]
0040918F
|. 8B53 04 |MOV EDX,DWORD PTR DS:[EBX+4]
00409192
|. E8 C9D4FFFF |CALL untopbar.00406660
00409197 |. 59
|POP ECX
00409198 |. 8903
|MOV DWORD PTR DS:[EBX],EAX
0040919A |.
8953 04 |MOV DWORD PTR DS:[EBX+4],EDX
0040919D
|. 09D0 |OR EAX,EDX
0040919F |.^75
CA \JNZ SHORT untopbar.0040916B
=VV==<<由00409174呼叫>>==VV===============================================================
(此過程很簡單,就是將16進位制轉化為10進位制後輸出)
00406755 /$ 55
PUSH EBP
00406756 |. 53
PUSH EBX
00406757 |. 56
PUSH ESI
00406758 |. 57
PUSH EDI
00406759 |. 8B5C24 14 MOV EBX,DWORD PTR
SS:[ESP+14]
0040675D |. 8B4C24 18 MOV ECX,DWORD
PTR SS:[ESP+18]
00406761 |. 0BC9
OR ECX,ECX
00406763 |. 75 08 JNZ
SHORT untopbar.0040676D
00406765 |. 0BD2
OR EDX,EDX
00406767 |. 74 33
JE SHORT untopbar.0040679C
00406769 |. 0BDB
OR EBX,EBX
0040676B |. 74 2F
JE SHORT untopbar.0040679C
0040676D |> 8BE9
MOV EBP,ECX
0040676F |. B9 40000000 MOV ECX,40
00406774 |. 33FF XOR EDI,EDI
00406776 |. 33F6 XOR ESI,ESI
00406778
|> D1E0 /SHL EAX,1
0040677A |. D1D2
|RCL EDX,1
0040677C |. D1D6
|RCL ESI,1
0040677E |. D1D7
|RCL EDI,1
00406780 |. 3BFD
|CMP EDI,EBP
00406782 |. 72 0B
|JB SHORT untopbar.0040678F
00406784 |. 77 04
|JA SHORT untopbar.0040678A
00406786 |. 3BF3
|CMP ESI,EBX
00406788 |. 72 05
|JB SHORT untopbar.0040678F
0040678A |> 2BF3
|SUB ESI,EBX
0040678C |. 1BFD
|SBB EDI,EBP
0040678E |. 40
|INC EAX
0040678F |>^E2 E7
\LOOPD SHORT untopbar.00406778
00406791 |. 8BC6
MOV EAX,ESI
00406793 |. 8BD7
MOV EDX,EDI
00406795 |> 5F
POP EDI
00406796 |. 5E
POP ESI
00406797 |. 5B POP
EBX
00406798 |. 5D POP EBP
00406799 |. C2 0800 RETN 8
0040679C
|> F7F3 DIV EBX
0040679E |. 92
XCHG EAX,EDX
0040679F |. 33D2
XOR EDX,EDX
004067A1 \.^EB F2
JMP SHORT untopbar.00406795
到這裡,我們就弄清了此軟體的算號方法。其實很簡單(用calc即可算出,呵呵):
UserNo:軟體給出的使用者編號
RegCode:由(UserNo-0x1f6171f)*0x1b轉化成10進位制後得到
在前面註冊成功後,透過攔截advapi32.RegSetValueExA,會到達這裡把正確的註冊碼寫入登錄檔:
00453130
/$ 53 PUSH EBX
00453131 |.
56 PUSH ESI
00453132 |. 57
PUSH EDI
00453133 |. 8BF1
MOV ESI,ECX
00453135 |. 8BFA
MOV EDI,EDX
00453137 |. 8BD8
MOV EBX,EAX
00453139 |. 8BC6
MOV EAX,ESI
0045313B |. E8 540CFBFF CALL untopbar.00403D94
00453140 |. 40 INC EAX
;註冊碼長度,由軟體給出的註冊碼長度為0x0a
00453141 |. 50
PUSH EAX
00453142 |. 6A 01
PUSH 1
00453144 |. 8BC6
MOV EAX,ESI
00453146 |. E8 0D0EFBFF CALL
untopbar.00403F58
0045314B |. 8BC8
MOV ECX,EAX
; |註冊碼
0045314D |. 8BD7
MOV EDX,EDI
; |由軟體計算出的註冊碼在[12f5e0],即[ebp-4]
0045314F |. 8BC3 MOV EAX,EBX
; |
00453151 |. E8 5E010000 CALL untopbar.004532B4
; \untopbar.004532B4
寫入登錄檔
00453156 |. 5F POP EDI
00453157 |. 5E POP ESI
00453158 |. 5B POP EBX
00453159
\. C3 RETN
這裡同時給出另外一種修改方法,輸入任意註冊碼註冊後,會把正確的註冊碼寫入登錄檔:
(如果註冊碼很難計算出的話,就可以用這個對付了,不是嗎)
47A0BB:E8E49DF8FF 0F853D010000 684000000400
909090909090
453139:8BD8 8BC6E8540CFBFF 40506A01 8BC6E80D0EFBFF
B80A0000009090 8B45FC90909090
[2002-11-25 中午]
相關文章
- 英語會話精靈 V2.02015-11-15會話
- 英語會話精靈V1.02015-11-15會話
- 獻給初學者(高手也看看) 破解 Cpukiller 2.0 (1千字)2000-09-17
- 破解 開機小精靈 2.11 (7千字)2001-11-12
- 演算法分析:
<獻給初學者> 之二 (7千字)2002-06-07演算法
- 僅以此程式碼獻給我所有朋友或愛好VFP的朋友。 (10千字)2002-09-08
- 兩種破解 花貓時間精靈 v1.0 功能限制的方法,本人獻給破解初學者的第一篇破文!高手請匆入內~~
(24千字)2001-10-26
- 用WKTVBDE搞定P_code英語小精靈1.20
(2千字)2015-11-15
- 獻給初學者(高手也點評點評!!)KoolMoves V1.33的破解!!
(10千字)2000-09-16
- 處女作,希望給各位初學者一些幫助^_^ 魔法轉換2.0 beta 1 破解 (7千字)2001-08-07
- 破解華琦庫管精靈1.2.4 (8千字)2000-09-11
- 申請加入BCG第三篇:破解網頁特效小精靈2.0 (5千字)2001-10-07網頁特效
- 獻給UNIX的初學者2012-03-08
- 基本英語的學習與掌握 - 英語學習者的福音2017-07-18
- 英語全文朗讀軟體---破解 (1千字)2000-10-04
- 加密精靈V2.2破解過程 (9千字)2001-10-28加密
- 轉帖:由C#風潮想起的-給初學程式設計者的忠告
(7千字)2003-02-23C#程式設計
- 演算法分析: <獻給初學者>
之一 (4千字)2002-06-06演算法
- 演算法分析: <獻給初學者>
之四 (9千字)2002-06-06演算法
- 專案管理愛好者的聚會(轉)2007-08-14專案管理
- 分享給Python愛好者的五大學習步驟2019-03-04Python
- CTris 2000 Version2.0 破解過程,,請高手指點,謝謝!★強烈向初學破解者推薦★
(2千字)2001-11-25
- 獻給所有從事IT行業擁有夢想的英語渣們2015-04-13行業
- 初級英語學習筆記012024-04-16筆記
- 學演算法的看過來 》》》演算法分析:
<獻給初學者> 之五 (5千字)2002-06-07演算法
- 詞彙終結者破解實錄 (7千字)2000-08-13
- 我成為VB程式語言的愛好者~2014-02-06
- 以程式碼愛好者角度來看AMD與CMD2015-08-06
- 菜鳥破解錄(11)之 WinGlobe2.0 (7千字)2000-07-24
- 電腦幽靈pcGhost4.0破解實錄 (7千字)2001-03-07
- 申請加入BCG第二篇:破解網頁特效小精靈 V2.0時間限制。 (2千字)2001-10-06網頁特效
- 自動精靈 2.00 破解教程2004-12-17
- 最新 英語聽力通 v2.1 破解實錄 (6千字)2002-01-21
- 交一篇作業---破解Hedit 2.0的註冊碼 (7千字)2001-09-30
- 科技愛好者週刊(第 270 期):"精益開發"的精益是什麼?2023-09-08
- WinRAR 2.71的初級破解 (4千字)2001-02-16
- 小小助手V2.01的破解過程-----算是我留給初學者的一偏破文
(7千字)2015-11-15
- 給初學者的RxJava2.0教程(三)2019-02-28RxJava