BubbleKing V2.63 完全靜態破解
BubbleKing V2.63 完全靜態破解
下載地址: http://www2.skycn.com/soft/17495.html
剛剛放假,先找一個簡單的小遊戲來練練手.檢查一下,無殼,VC6.0, very good...
用W32Dasm看了看,發現了大概的思路.但有幾個呼叫的函式顯不出來,於是換用IDA,結果一目瞭然了.
.text:0040597D sub_40597D proc near ; DATA XREF: .rdata:00408BF4o
.text:0040597D push esi
.text:0040597E mov esi, ecx
.text:00405980 push 1
.text:00405982 call ?UpdateData@CWnd@@QAEHH@Z ; CWnd::UpdateData(int)
.text:00405987 mov eax, [esi+64h]
.text:0040598A mov eax, [eax-8] ;得到NAME長度
.text:0040598D test eax, eax
.text:0040598F jnz short loc_40599F;長度不能為0
.text:00405991 push 40h
.text:00405993 push offset aWarning ; "Warning"
.text:00405998 push offset aPleaseEnterYou ; "Please enter your name first!"
.text:0040599D jmp short loc_4059DC
.text:0040599F ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:0040599F
.text:0040599F loc_40599F: ; CODE XREF: sub_40597D+12j
.text:0040599F cmp eax, 28h
.text:004059A2 jl short loc_4059B2;長度不能大於28h
.text:004059A4 push 40h
.text:004059A6 push offset aWarning ; "Warning"
.text:004059AB push offset aYourNameIsTooL ; "Your name is too long ^_^"
.text:004059B0 jmp short loc_4059DC
.text:004059B2 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:004059B2
.text:004059B2 loc_4059B2: ; CODE XREF: sub_40597D+25j
.text:004059B2 lea eax, [esi+60h]
.text:004059B5 push eax
.text:004059B6 call sub_40590C ;關鍵CALL
.text:004059BB test eax, eax
.text:004059BD pop ecx
.text:004059BE jz short loc_4059D0 ;EAX為0就OVER
.text:004059C0 mov ecx, esi
.text:004059C2 call ?OnOK@CDialog@@MAEXXZ ; CDialog::OnOK(void)
.text:004059C7 mov ecx, esi
.text:004059C9 call ?OnOK@CDialog@@MAEXXZ ; CDialog::OnOK(void)
.text:004059CE pop esi
.text:004059CF retn
.text:004059D0 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:004059D0
.text:004059D0 loc_4059D0: ; CODE XREF: sub_40597D+41j
.text:004059D0 push 40h
.text:004059D2 push offset aHi ; "Hi"
.text:004059D7 push offset aTheRegistratio ; "The registration code you input is inva"...
.text:004059DC
.text:004059DC loc_4059DC: ; CODE XREF: sub_40597D+20j
.text:004059DC ; sub_40597D+33j
.text:004059DC mov ecx, esi
.text:004059DE call ?MessageBoxA@CWnd@@QAEHPBD0I@Z ; CWnd::MessageBoxA(char const *,char const *,uint)
.text:004059E3 pop esi
.text:004059E4 retn
.text:004059E4 sub_40597D endp
進入關鍵的CALL:
.text:0040590C push esi
.text:0040590D mov esi, [esp+arg_0]
.text:00405911 mov eax, [esi] ;EAX處為註冊碼
.text:00405913 cmp dword ptr [eax-8], 12h ;長度必須為12h
.text:00405917 jnz short loc_405979
.text:00405919 cmp byte ptr [eax+5], 2Dh ;第6位必須為2Dh,即"-"
.text:0040591D jnz short loc_405979
.text:0040591F cmp byte ptr [eax+0Ah], 2Dh ;第11位必須為2Dh,即"-"
.text:00405923 jnz short loc_405979
.text:00405925 movsx ecx, byte ptr [eax+10h] ;取第17位
.text:00405929 movsx edx, byte ptr [eax+0Eh] ;取第15位
.text:0040592D sub edx, ecx ;相減
.text:0040592F movsx ecx, byte ptr [eax+2] ;取第3位
.text:00405933 movsx eax, byte ptr [eax] ;取第1位
.text:00405936 sub eax, ecx ;相減
.text:00405938 cmp eax, edx ;結果必須相同
.text:0040593A jnz short loc_405979
.text:0040593C push 61h ;查詢註冊碼是否有61h,即"a"
.text:0040593E mov ecx, esi
.text:00405940 call ?Find@CString@@QBEHD@Z ; CString::Find(char)
.text:00405945 cmp eax, 0FFFFFFFFh
.text:00405948 jz short loc_405979 ;沒有就OVER
.text:0040594A push 62h ;是否有"b"
.text:0040594C mov ecx, esi
.text:0040594E call ?Find@CString@@QBEHD@Z ; CString::Find(char)
.text:00405953 cmp eax, 0FFFFFFFFh
.text:00405956 jnz short loc_405979 ;有就OVER
.text:00405958 push 64h ;是否有"d"
.text:0040595A mov ecx, esi
.text:0040595C call ?Find@CString@@QBEHD@Z ; CString::Find(char)
.text:00405961 cmp eax, 0FFFFFFFFh
.text:00405964 jnz short loc_405979 ;有就OVER
.text:00405966 push 63h ;是否有"c"
.text:00405968 mov ecx, esi
.text:0040596A call ?Find@CString@@QBEHD@Z ; CString::Find(char)
.text:0040596F cmp eax, 0FFFFFFFFh
.text:00405972 jz short loc_405979 ;沒有就OVER
.text:00405974 push 1
.text:00405976 pop eax ;EAX=1,大功告成
.text:00405977 pop esi
.text:00405978 retn
.text:00405979 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00405979
.text:00405979 loc_405979: ; CODE XREF: sub_40590C+Bj
.text:00405979 ; sub_40590C+11j ...
.text:00405979 xor eax, eax ;註冊碼不符合條件跳到這裡,EAX=0
.text:0040597B pop esi
.text:0040597C retn
.text:0040597C sub_40590C endp
非常簡單的註冊,根本沒運用SoftICE.
一個可用註冊碼: 12345-acxx-1234567 使用者名稱不大於40位,任意
相關文章
- 靜態庫破解方法――skinmagic2004-11-17
- WinPowerDown完全破解2003-08-31
- Android逆向之旅---靜態分析技術來破解Apk2016-12-01AndroidAPK
- 不完全的破解2000-11-23
- 靜態變數與靜態方法2014-07-25變數
- 偽靜態、靜態和動態的區別2020-12-18
- JavaScript 靜態屬性與靜態方法2018-12-15JavaScript
- ASP.NET偽靜態及靜態2013-10-09ASP.NET
- winimage完全破解 (8千字)2001-07-04
- All Aboard! SE 完全破解實戰2001-07-18
- 靜態變數和非靜態變數2017-04-01變數
- 網站偽靜態和純靜態區別2012-06-23網站
- 流光 4.5 完全破解 (15千字)2002-08-24
- Restools系列完全破解~~~~~~~~~~~~~~~~~~~~~~~ (12千字)2002-03-03REST
- Linux 依賴動態庫 / 靜態庫的動態態庫 / 靜態庫2017-05-02Linux
- Java靜態代理2020-10-13Java
- 靜態庫生成2018-06-06
- 靜態快取2017-07-28快取
- 靜態FAILOVER2010-11-07AI
- Bootstrap靜態cdn2016-05-17boot
- phpcms v9 欄目偽靜態完全自定義為欄目英文目錄名2017-12-01PHP
- 靜態代理和動態代理2019-05-15
- 靜態路由和動態路由2020-10-15路由
- oracle 監聽 靜態 動態2012-07-16Oracle
- 【靜態化平臺】☞(一)網頁靜態化服務2016-09-12網頁
- Java中靜態跟非靜態的區別總結2018-04-13Java
- PHP 中 static 靜態屬性和靜態方法的呼叫2017-01-16PHP
- 靜態資料成員和靜態成員函式2014-06-08函式
- PHP類的靜態(static)方法和靜態(static)變數2013-01-31PHP變數
- Linux下快速靜態編譯Qt以及Qt動態/靜態版本共存2018-03-11Linux編譯QT
- Android NDK祕籍--編譯靜態庫、呼叫靜態庫2019-04-21Android編譯
- 靜態內部類和非靜態內部類區別2016-04-21
- .NET偽靜態使用以及和純靜態的區別2010-02-08
- My Flash player 1.3 完全破解 (5千字)2001-12-05
- Sanic 靜態檔案2019-04-01
- oracle靜態監聽2019-03-19Oracle
- 靜態程式碼塊2018-08-29
- Java靜態代理模式2018-05-17Java模式