用ollyDbg尋找VB程式的註冊核心的一點思路
用ollyDbg尋找VB程式的註冊核心的一點思路
--北森職業規劃人才測評軟體 專業版破解手記
物件:北森職業規劃人才測評軟體 專業版2003
作者:lordor[CCG][BCG][DFCG]
Mail:lordor@sina.com
QQ:88378557
目的:屬技術交流,無其它目的,請不要任意散佈或用用商業用途。初學破解,如有不對的地方歡迎批評指出。
工具:ollydbg1.09C,fi301
一、分析一下,VB編寫程式,用Messagebox提示出錯,用W32Dasm找不到一點提示,ok,那就用VB殺手-ollyDbg來尋找註冊核跟我來。
二、首先載入程式,ctrl+A分析程式,剛開始時是停在程式入口點,現在向上看,可以看到VB的很多函式,如下:
00401519 25
DB 25
; CHAR '%'
0040151A . 50 PUSH EAX
0040151B > 1040 00 ADC BYTE PTR DS:[EAX],AL
0040151E .- FF25 B8104000 JMP DWORD PTR DS:[<&MSVBVM60.EVENT_SINK_>;
MSVBVM60.EVENT_SINK_QueryInterface
00401524 .- FF25 8C104000 JMP DWORD PTR DS:[<&MSVBVM60.EVENT_SINK_>;
MSVBVM60.EVENT_SINK_AddRef
0040152A .- FF25 A8104000 JMP DWORD PTR DS:[<&MSVBVM60.EVENT_SINK_>;
MSVBVM60.EVENT_SINK_Release
00401530 .- FF25 60104000 JMP DWORD PTR DS:[<&MSVBVM60.#303>]
; MSVBVM60.GetMemStr
00401536 .- FF25 74104000 JMP DWORD PTR DS:[<&MSVBVM60.#309>]
; MSVBVM60.PutMemStr
0040153C .- FF25 4C104000 JMP DWORD PTR DS:[<&MSVBVM60.#300>]
; MSVBVM60.GetMem2
00401542 .- FF25 70104000 JMP DWORD PTR DS:[<&MSVBVM60.#306>]
; MSVBVM60.PutMem2
00401548 .- FF25 6C104000 JMP DWORD PTR DS:[<&MSVBVM60.#304>]
; MSVBVM60.GetMemVar
0040154E .- FF25 B4104000 JMP DWORD PTR DS:[<&MSVBVM60.#310>]
; MSVBVM60.PutMemVar
00401554 .- FF25 C0104000 JMP DWORD PTR DS:[<&MSVBVM60.#312>]
; MSVBVM60.SetMemVar
0040155A $- FF25 1C114000 JMP DWORD PTR DS:[<&MSVBVM60.#100>]
; MSVBVM60.ThunRTMain
職業規劃.<Mod> $ 68 CC2D4000 PUSH 職業規劃.00402DCC
三、這是函式匯入表,好像所有的VB程式都有這樣的VB函式。仔細找rtcMsgBox函式,在這裡
0040145E .- FF25 58104000 JMP DWORD PTR DS:[<&MSVBVM60.#595>]
; MSVBVM60.rtcMsgBox
在這一行點選右健,選擇"follow"項,會進入(MSVBVM6.0.DLL)如下:
MSVBVM60.> 55
PUSH EBP ==>在這按F2下斷
73472097 8BEC MOV EBP,ESP
73472099 83EC 4C SUB ESP,4C
7347209C 8B4D 14 MOV ECX,DWORD PTR
SS:[EBP+14]
7347209F 53 PUSH
EBX
四、F2下斷,F9執行,在註冊框中點選確定,會欄下來,發現會進入MSVBVM6的領空,好,再按alt+k,看看l呼叫段程式碼,如下:
Call stack of main thread
Address Stack Procedure
Called from
Frame
0012F3B4 0041E99F ? MSVBVM60.rtcMsgBox
職業規劃.0041E999
五、雙擊called from“職業規劃.0041E999”,來到如下,職業規劃的領空:
0041E98A . 51 PUSH ECX
0041E98B . 8D85 78FFFFFF LEA EAX,DWORD PTR SS:[EBP-88]
0041E991 . 52 PUSH EDX
0041E992 . 50 PUSH EAX
0041E993 . 8D4D 88 LEA ECX,DWORD PTR SS:[EBP-78]
0041E996 . 6A 00 PUSH 0
0041E998 . 51 PUSH ECX
; 出錯
0041E999 . FF15 58104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>]
; MSVBVM60.rtcMsgBox
0041E99F . 8D95 08FFFFFF LEA EDX,DWORD PTR SS:[EBP-F8]
六、這段程式碼就是跳出錯框,現在找到關鍵核心了,向上看看,是從那裡跳來的,來到如下:
0041E2B5 . /7D 12 JGE SHORT 職業規劃.0041E2C9
0041E2B7 . |68 A0000000 PUSH 0A0
0041E2BC . |68 A05E4000 PUSH 職業規劃.00405EA0
0041E2C1 . |53 PUSH EBX
0041E2C2 . |50 PUSH EAX
0041E2C3 . |FF15 40104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;
MSVBVM60.__vbaHresultCheckObj
0041E2C9 > \8B06 MOV EAX,DWORD
PTR DS:[ESI]
0041E2CB . 56 PUSH ESI
0041E2CC . FF90 00030000 CALL DWORD PTR DS:[EAX+300]
0041E2D2 . 8D4D B0 LEA ECX,DWORD PTR SS:[EBP-50]
0041E2D5 . 50 PUSH EAX
0041E2D6 . 51 PUSH ECX
0041E2D7 . FF15 54104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>;
MSVBVM60.__vbaObjSet
0041E2DD . 8BD8 MOV EBX,EAX
0041E2DF . 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
0041E2E2 . 50 PUSH EAX
0041E2E3 . 53 PUSH EBX
0041E2E4 . 8B13 MOV EDX,DWORD
PTR DS:[EBX]
0041E2E6 . FF92 A0000000 CALL DWORD PTR DS:[EDX+A0]
; 取得註冊碼
0041E2EC . 85C0 TEST EAX,EAX
0041E2EE . DBE2 FCLEX
0041E2F0 . 7D 12 JGE SHORT 職業規劃.0041E304
0041E2F2 . 68 A0000000 PUSH 0A0
0041E2F7 . 68 A05E4000 PUSH 職業規劃.00405EA0
0041E2FC . 53 PUSH EBX
0041E2FD . 50 PUSH EAX
0041E2FE . FF15 40104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;
MSVBVM60.__vbaHresultCheckObj
0041E304 > 8B4D D0 MOV ECX,DWORD PTR
SS:[EBP-30] ; 註冊碼入ecx
0041E307 . 51 PUSH ECX
0041E308 . FF15 14104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenBs>;
MSVBVM60.__vbaLenBstr
0041E30E . 8B55 D4 MOV EDX,DWORD PTR SS:[EBP-2C]
0041E311 . 33DB XOR EBX,EBX
0041E313 . 83F8 1F CMP EAX,1F
; 比較註冊碼長度是否為1f,即31位
0041E316 . 52 PUSH EDX
0041E317 . 0F9CC3 SETL BL
0041E31A . F7DB NEG EBX
0041E31C . FF15 14104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenBs>;
MSVBVM60.__vbaLenBstr
0041E322 . 33C9 XOR ECX,ECX
0041E324 . 83F8 1A CMP EAX,1A
; 比較註冊碼長度是否為1a,即26位
0041E327 . 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
0041E32A . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
0041E32D . 0F9FC1 SETG CL
0041E330 . 52 PUSH EDX
0041E331 . 50 PUSH EAX
0041E332 . F7D9 NEG ECX
0041E334 . 6A 02 PUSH 2
0041E336 . 23D9 AND EBX,ECX
0041E338 . FF15 0C114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>;
MSVBVM60.__vbaFreeStrList
0041E33E . 8D4D B0 LEA ECX,DWORD PTR SS:[EBP-50]
0041E341 . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
0041E344 . 51 PUSH ECX
0041E345 . 52 PUSH EDX
0041E346 . 6A 02 PUSH 2
0041E348 . FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>;
MSVBVM60.__vbaFreeObjList
0041E34E . 83C4 18 ADD ESP,18
0041E351 . 66:85DB TEST BX,BX
0041E354 . 0F84 BE050000 JE 職業規劃.0041E918
; 關鍵跳轉,在這裡nop掉即可破解
0041E35A . 8B06 MOV EAX,DWORD
PTR DS:[ESI]
0041E35C . 56 PUSH ESI
0041E35D . FF90 0C030000 CALL DWORD PTR DS:[EAX+30C]
0041E363 . 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C]
0041E366 . 50 PUSH EAX
0041E367 . 51 PUSH ECX
0041E368 . FF15 54104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>;
MSVBVM60.__vbaObjSet
0041E36E . 8BD8 MOV EBX,EAX
0041E370 . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
0041E373 . 50 PUSH EAX
0041E374 . 53 PUSH EBX
0041E375 . 8B13 MOV EDX,DWORD
PTR DS:[EBX]
0041E377 . FF92 A0000000 CALL DWORD PTR DS:[EDX+A0]
---------------------------------------
總結:
把0041E354處的nop掉即可破解。
其實VB程式也沒有什麼好怕的,好東西大家分享,如有更好方法,請告知我。
cracked by lordor[CCG][BCG][DFCG]
03.6.20
相關文章
- 用ollydbg找eBook Edit Pro v3.21的註冊碼2003-02-12
- 第七章-尋找軟體的註冊碼2015-11-15
- 淺談用Ollydbg跟蹤vb程式---soli
兄弟的問題2015-11-15
- 叮!給你尋找最優解的思路2019-03-04
- update沒帶where,尋找問題的思路2016-11-21
- 用Ollydbg破解全功能數字時鐘(想學用Ollydbg破VB的必看!) (1千字)2001-11-03
- 在VB.NET中尋找App (轉)2007-08-15APP
- 找尋3DMark2001se的註冊碼,第一篇破文!2003-06-293D
- Qt核心剖析: 尋找 QObject 的原始碼薦2010-05-27QTObject原始碼
- 如何尋找優質的資料標註公司?2023-02-06
- SpeedFlash註冊演算法分析(VB)2015-11-15演算法
- 為IMT業務尋找下一個核心頻段2020-09-06
- 研究網路卡地址註冊時的一點思考2019-04-30
- 開源用於尋找系外行星的程式碼2018-04-05
- ffmpeg分析系列之一(註冊該註冊的)2010-11-04
- 在VB應用程式中使用INI檔案的一點體會 (轉)2007-12-04
- 一個程式猿的2023總結:《尋找》2023-12-11
- Util應用框架核心(三) - 服務註冊器2023-10-31框架
- 使用者註冊郵箱驗證啟用思路【轉】2013-10-12
- 一個思路,利用T檢驗去尋找量化交易CTA趨勢2019-12-19
- 註冊中心 Eureka 原始碼解析 —— 應用例項註冊發現(一)之註冊2019-03-03原始碼
- 做一個搜尋引擎的思路2002-09-04
- 用QT寫一個搜尋引擎思路2016-07-20QT
- 《奧數2000》註冊碼的計算(VB5程式)
(6千字)2015-11-15
- The Data Way Vol.7|從故事裡尋找開源的『核心』2021-12-09
- ollydbg -- WinISO v5.3中文版註冊演算法2015-11-15演算法
- Dynamics CRM 用程式碼註冊Plugin Step2018-07-20Plugin
- Linux核心的framebuffer相關的核心程式碼註釋2015-10-20Linux
- 財智證券結算軟體2.5 破解註冊碼分析!使用ollydbg 破解註冊動畫!高手莫入! (1千字)2001-11-20動畫
- 一種非明碼比較程式的註冊------NS-SHAFT註冊碼破解 (9千字)2015-11-15
- Nok2phone的註冊演算法與網路校驗解除---VB程式關鍵處的快速定位2015-11-15演算法
- 分析家v4.01註冊核心程式碼---幻影的殼 (635字)2001-11-02
- 尋找陣列的中心索引2020-10-16陣列索引
- 找尋不用Linux的理由2007-09-24Linux
- [每天get點新技能]搜商——尋找“免費”的資源2014-03-20
- QQ空間營銷策略:尋找使用者的痛點2014-02-08
- 用mvp模式實現登入註冊的統一校驗2016-11-21MVP模式
- 程式設計題:尋找木頭2021-10-30程式設計