五筆打字練習軟體 (11千字)
五筆打字練習軟體
======================
sunrix, 2002-9-27
軟體名稱:XXXXX
軟體版本:2.2
軟體簡介:五筆打字練習軟體
保護方式:註冊碼,一機一碼
開發語言:VB6,P-Code
破解工具:WKTVBDebugger 1.4e
主程式是<XXXXX.exe>,未壓縮,用peid檢測後報告是VB6。簡單反彙編後
可知編譯成p-code。用WKTVBDebugger 1.4e啟動程式,在form manager的下拉框
中選擇goumain這個form(它就是註冊對話方塊的form拉,我怎麼知道的?
goumai是什麼的拼音,“購買”嗎,就是要你出錢註冊羅,呵呵,蒙對了),然後點
<command>按鈕,在下拉框中選擇<command2>,就是註冊對話方塊上的<註冊>按鈕拉
(我試出來的),點中bpx設定斷點。或者也可以直接在WKT的on execution裡輸入
地址:51AD8C下斷點。按F5執行程式,進入註冊對話方塊,隨便輸入一個註冊碼後
點<註冊>按鈕,WKT獲得控制權:
Proc: 51c194
51AD8C: 00 LargeBos
;LargeBos表示是一行VB原始碼的開頭
;從當前LargeBos到下一個LargeBos之間的程式碼是從一行原始碼編譯過來的
51AD8E: 00 LargeBos
on error resume next
51AD90: 4b OnErrorGoto
=======================
干擾程式碼 begin ===========================================
local_008C = 3000
51AD93: 00 LargeBos
51AD95: f5 LitI4:
0xbb8 3000 (....) ;Lit
代表Literal,表示是裝入立即數
51AD9A: 71 FStR4
local_008C ;local_008c代表[ebp-8c]
上面這2句的意思是:long [ebp-8c] = 3000
Randomize
51AD9D: 00 LargeBos
51AD9F: 27 LitVar_Missing
;LitVar_Missing表示可選引數未賦值
51ADA2: 0a ImpAdCallFPR4:
;rtcRandomize
51ADA7: 35 FFree1Var
local_00B0
dim local_0086 as integer
local_0086
= int(24*Rnd+1) ;1-24之間的一個隨機數
51ADAA: 00 LargeBos
51ADAC: 27 LitVar_Missing
51ADAF: 0a ImpAdCallFPR4:
;rtcRandomNext
51ADB4: 73 FStFPR4
51ADB7: f4 LitI2_Byte:
0x18 24 (.) ;位元組立即數
51ADB9: eb
CR8I2 ;轉換成Double
51ADBA: 6e FLdFPR4
51ADBD: b3 MulR8
51ADBE: Lead0/e6 FnIntR8
51ADC0: f4 LitI2_Byte:
0x1 1 (.)
51ADC2: eb CR8I2
51ADC3: ab AddR8
51ADC4: e5 CI2R8
51ADC5: 70 FStI2
local_0086
51ADC8:
35 FFree1Var local_00B0
dim local_00B6 as integer
local_00B6 = local_0086
51ADCB: 00 LargeBos
51ADCD: 6b FLdI2
local_0086
51ADD0: 70 FStI2
local_00B6
select case local_00B6
case
1
51ADD3: 00 LargeBos
51ADD5: 6b FLdI2
local_00B6
51ADD8: f4 LitI2_Byte:
0x1 1 (.)
51ADDA: c6 EqI2
51ADDB: 1c BranchF:
51AE13
51ADDE: 00 LargeBos
51ADE0: 6c ILdRf
local_008C
51ADE3: 71 FStR4
local_0090
51ADE6: 00 LargeBos
51ADE8: 6c ILdRf
local_008C
51ADEB: f5 LitI4:
0x168 360 (...h)
51ADF0: aa AddI4
51ADF1: 71 FStR4
local_0090
51ADF4: 00 LargeBos
51ADF6: 6c ILdRf
local_008C
51ADF9: f5 LitI4:
0x2d0 720 (....)
51ADFE: aa AddI4
51ADFF: 71 FStR4
local_0090
51AE02: 00 LargeBos
51AE04: 6c ILdRf
local_008C
51AE07: f5 LitI4:
0x438 1080
(...8)
51AE0C: aa AddI4
51AE0D: 71 FStR4
local_0090
51AE10: 1e Branch:
51b3d0
case 2
51AE13: 00 LargeBos
51AE15: 6b FLdI2
local_00B6
51AE18: f4 LitI2_Byte:
0x2 2 (.)
51AE1A: c6 EqI2
51AE1B: 1c BranchF:
51AE53
51AE1E: 00 LargeBos
51AE20: 6c ILdRf
local_008C
51AE23: 71 FStR4
local_0090
51AE26: 00 LargeBos
51AE28: 6c ILdRf
local_008C
51AE2B: f5 LitI4:
0x168 360 (...h)
51AE30: aa AddI4
51AE31: 71 FStR4
local_0090
51AE34: 00 LargeBos
51AE36: 6c ILdRf
local_008C
51AE39: f5 LitI4:
0x2d0 720 (....)
51AE3E: aa AddI4
51AE3F: 71 FStR4
local_0090
51AE42: 00 LargeBos
51AE44: 6c ILdRf
local_008C
51AE47: f5 LitI4:
0x438 1080
(...8)
51AE4C: aa AddI4
51AE4D: 71 FStR4
local_0090
51AE50: 1e Branch:
51b3d0
省略:case 3 - case
23
case 24
51B393: 00 LargeBos
51B395: 6b FLdI2
local_00B6
51B398: f4 LitI2_Byte:
0x18 24 (.)
51B39A: c6 EqI2
51B39B: 1c BranchF:
51B3D0
51B39E: 00 LargeBos
51B3A0: 6c ILdRf
local_008C
51B3A3: 71 FStR4
local_0090
51B3A6:
00 LargeBos
51B3A8: 6c ILdRf
local_008C
51B3AB:
f5 LitI4: 0x168
360 (...h)
51B3B0: aa AddI4
51B3B1: 71 FStR4
local_0090
51B3B4: 00 LargeBos
51B3B6: 6c ILdRf
local_008C
51B3B9: f5 LitI4:
0x2d0 720 (....)
51B3BE: aa
AddI4
51B3BF:
71 FStR4 local_0090
51B3C2: 00 LargeBos
51B3C4: 6c ILdRf
local_008C
51B3C7: f5 LitI4:
0x438 1080 (...8)
51B3CC: aa AddI4
51B3CD: 71 FStR4
local_0090
end select
=======================
干擾程式碼 end ===========================================
從51AD9D到此處是無意義的干擾程式碼,類似程式碼後面又出現了兩次,將之刪去
dim temp as variant
temp = StrReverse(CStr(CLng(Text5.Text)/1022)) ;真註冊碼
一開始我認為text5就是註冊對話方塊上顯示機器碼的textbox,可是跟蹤時發現
從text5取到的text和顯示的機器碼不同,覺得不能理解。後來用spy看了看
註冊對話方塊上顯示機器碼的textbox,發現它的caption是text4,噢,可能
text5是一個隱藏的textbox,這一點透過wktvbdebugger的form manager得到
驗證。開啟wktvbdebugger的form
manager,選擇goumai,然後點textbox,點上面的下拉框,哇,裡面
有6個textbox,可是在註冊對話方塊可以看到的只有2個,隱藏了這麼多,背地裡
幹什麼壞事:)
想一想就知道,text5.text是機器碼變換得到的。在哪裡變換,怎麼變換先不管它。
51B3D0:
00 LargeBos
51B3D2: 00 LargeBos
51B3D4: 04 FLdRfVar
local_00D0
51B3D7: 21 FLdPrThis
51B3D8: 0f VCallAd
(object 8 ) ;text5
51B3DB: 19 FStAdFunc local_00CC
51B3DE: 08 FLdPr
local_00CC
51B3E1: 0d VCallHresult
51B3E6: 6c ILdRf
local_00D0
51B3E9: 50 CI4Str
51B3EA: f5 LitI4:
0x3fe 1022 (....)
51B3EF: c0 IDvI4
51B3F0: Lead0/fe CStrI4
51B3F2: 23 FStStrNoPop
local_00D4
51B3F5: 0b ImpAdCallI2
rtcStrReverse
51B3FA: 46 CVarStr
local_00B0
===== 執行完上面這條pcode後,WKT會在log視窗顯示出真註冊碼,別猶豫了,趕緊記下來吧:)
====
51B3FD: Lead1/f6 FStVar
51B401: 32 FFreeStr
51B408: 1a FFree1Ad
local_00CC
if Left(Text1.Text,Len(StrReverse(CStr(CLng(Text5.Text)/1022)))
= StrReverse(CStr(CLng(Text5.Text)/1022))
51B40B: 00 LargeBos
51B40D: 04 FLdRfVar local_00D0
51B410: 21 FLdPrThis
51B411: 0f VCallAd (object
e ) ;text1
51B414: 19 FStAdFunc
local_00CC
51B417: 08 FLdPr
local_00CC
51B41A: 0d VCallHresult
51B41F: 04 FLdRfVar
local_00D4
51B422: 21 FLdPrThis
51B423: 0f VCallAd
(object 8 ) ;text5
51B426: 19 FStAdFunc local_00D8
51B429: 08 FLdPr
local_00D8
51B42C: 0d VCallHresult
51B431: 6c ILdRf
local_00D4
51B434: 50 CI4Str
51B435: f5 LitI4:
0x3fe 1022 (....)
51B43A: c0 IDvI4
51B43B: Lead0/fe CStrI4
51B43D: 23 FStStrNoPop
local_00DC
51B440: 0b ImpAdCallI2
rtcStrReverse
51B445: 23 FStStrNoPop
local_00E0
51B448: 4a FnLenStr
51B449: 3e FLdZeroAd
local_00D0
51B44C: 46 CVarStr
local_00B0 ;->輸入的註冊碼
51B44F: 04 FLdRfVar
local_00F0
51B452: 0a ImpAdCallFPR4:
;rtcLeftCharVar
51B457: 04 FLdRfVar
local_00F0
51B45A: 04 FLdRfVar
local_00F8
51B45D: 21 FLdPrThis
51B45E: 0f VCallAd
(object 8 ) ;Text5
51B461: 19 FStAdFunc local_00F4
51B464: 08 FLdPr
local_00F4
51B467: 0d VCallHresult
51B46C: 6c ILdRf
local_00F8
51B46F: 50 CI4Str
51B470: f5 LitI4:
0x3fe 1022 (....)
51B475: c0 IDvI4
51B476: Lead0/fe CStrI4
51B478: 23 FStStrNoPop
local_00FC
51B47B: 0b ImpAdCallI2
rtcStrReverse
51B480: 46 CVarStr
local_010C
51B483: 5d HardType
51B484: Lead0/33 EqVarBool
;比較真註冊碼與輸入的註冊碼!
51B486: 32 FFreeStr
51B493:
29 FFreeAd:
51B49C: 36 FFreeVar
51B4A5: 1c BranchF:
51C179
無意義的干擾程式碼,同上,刪去
SaveSetting "wbreg","wbregfile","wbregfilename",註冊碼
在登錄檔中儲存註冊碼:
[HKEY_CURRENT_USER\Software\VB
and VBA Program Settings\wbreg\wbregfile]
"wbregfilename"=註冊碼
51BAE5: 00 LargeBos
51BAE7:
00 LargeBos
51BAE9: 04 FLdRfVar
local_00D0
51BAEC: 21 FLdPrThis
51BAED: 0f VCallAd
(object e )
51BAF0: 19 FStAdFunc
local_00CC
51BAF3: 08 FLdPr
local_00CC
51BAF6:
0d VCallHresult
51BAFB: 6c ILdRf
local_00D0
51BAFE:
0b ImpAdCallI2
51BB03: 23 FStStrNoPop
local_00D4
51BB06: 1b LitStr:
"wbregfilename"
51BB09:
1b LitStr: "wbregfile"
51BB0C: 1b LitStr:
"wbreg"
51BB0F: 0a ImpAdCallFPR4: rtcSaveSetting
51BB14: 32 FFreeStr
51BB1B: 1a FFree1Ad
local_00CC
提示註冊成功
51BB1E: 00 LargeBos
51BB20: 27 LitVar_Missing
51BB23: 27 LitVar_Missing
51BB26: 3a LitVarStr:
( local_0130 ) "XXXXX"
51BB2B: 4e FStVarCopyObj
local_00F0
51BB2E: 04 FLdRfVar
local_00F0
51BB31: f5 LitI4:
0x40 64 (...@)
51BB36:
3a LitVarStr: ( local_00A0 ) "註冊成功"
51BB3B: 4e FStVarCopyObj local_00B0
51BB3E: 04 FLdRfVar local_00B0
51BB41: 0a ImpAdCallFPR4: rtcMsgBox
51BB46: 36 FFreeVar
無意義的干擾程式碼,同上,刪去
51C177: 00 LargeBos
51C179: 00 LargeBos
51C17B: 00 LargeBos
51C17D:
21 FLdPrThis
51C17E: 0f VCallAd
(object e )
51C181: 19 FStAdFunc
local_00CC
51C184: 08 FLdPr
local_00CC
51C187:
0d VCallHresult
51C18C: 1a FFree1Ad
local_00CC
51C18F: 00 LargeBos
51C191: 13 ExitProcHresult
也許有人手頭上沒有WKT,那我們來看看怎麼用softice跟蹤來得到註冊碼:
用symbol loader裝入程式,設定斷點:bpm 51B484,51b484就是比較註冊碼
的pcode的地址。G,從幫助選單調出註冊對話方塊,隨便輸一個註冊碼,點<註冊>
按鈕,softice攔下。
001B:7348E239
MOV AL,[ESI]
001B:7348E23B INC
ESI <=== softice中斷在這兒
001B:7348E23C
JMP [EAX*4+7348EA58]
這是在msvbvm60.dll的程式碼空間中,你的機器上中斷的地址可能和我的不一樣。
輸入命令:d *(*esp+8),即可得到註冊碼,注意是unicode格式的。
懶得找註冊演算法了,關鍵是找到對text.text賦值的地方,哪位大蝦
有興趣可以試試。我的想法用exdec反編譯程式,搜尋字串object 8
,在找到的地方上下斷點。唉,比較麻煩。
相關文章
- KeyKey Typing for Mac(打字練習軟體)2022-09-27Mac
- Typing Instructor Gold for Mac打字練習軟體2022-06-16StructGoMac
- 五筆打字2024-09-14
- 專業打字練習軟體:KeyBlaze for mac 啟用版2023-11-24Mac
- Master of Typing 3 for Mac(打字練習軟體)15.13.24啟用版2023-11-22ASTMac
- Type Fu for Mac(打字練習軟體) v4.8.0中文版2023-11-01Mac
- Type Fu for Mac(打字練習)2020-10-23Mac
- 五筆軟體2008-01-01
- 優秀的打字練習軟體:Master of Typing 3中文啟用2022-10-14AST
- canvas鍵盤打字練習功能2018-07-17Canvas
- 簡單好用的打字練習軟體:Master of Typing 3啟用中文版最新2023-11-08AST
- 軟體工程練習題2024-07-21軟體工程
- 五筆:鍵名字練習.txt,250字2024-06-11
- Scala學習(五)練習2015-06-28
- unix軟體ncftpd 2.7.1之破解(11千字)2002-04-07FTP
- vue2練習五個小例子筆記_byKL2017-02-22Vue筆記
- Pocket Yoga Teacher for Mac(瑜伽練習軟體)2022-05-03Mac
- 軟體測試學習 ——五種軟體測試模型2020-12-27模型
- Type Fu for Mac(打字練習工具) v4.8.0啟用版2021-02-22Mac
- 五、python的練習題2018-06-06Python
- 【軟體測試】學習筆記2024-06-06筆記
- DP學習筆記(五)(2024.11.16)2024-11-16筆記
- 軟體測試學習教程—軟體測試基礎理論五2019-09-03
- 萬能五筆的破解 (6千字)2001-07-09
- 第11周個人練習2024-05-08
- Django學習筆記(15)——中介軟體2019-06-05Django筆記
- <<軟體設計學習筆記>> (轉)2007-08-15筆記
- 複製Monkeytype:如何建立一個高效的打字練習應用2024-09-08
- 分析破解數字五筆3.0 (2千字)2002-04-17
- Android 介面設計練習——電視直播軟體介面2018-06-27Android
- 第11周小組練習2024-05-08
- 三月五日 課堂練習2024-03-05
- Linux 學習筆記 - 軟體安裝2024-08-08Linux筆記
- U7-11課綜合練習+12課階段測評練習——複習練習題目2024-07-12
- 軟體狗,dongle
(3千字)2002-12-17
- 網路流練習筆記2021-03-05筆記
- JVM 學習筆記(五)2020-07-11JVM筆記
- cmake學習筆記(五)2018-12-07筆記