標 題:論一次VB程式的破解(新手看過來) <---wolflh2002兄請看!! (4千字)
發信人:偵探柯南[CCG]
時 間:2001-9-22 20:18:54
詳細資訊:
今天有人求小弟幫著破這個軟體(技術交流),小弟看了看,原來是用VB編的,平時我是根本不動VB程式的,
我覺得VB編的好軟體比較少小弟於昨日加入了CCG,正處於心情好時,也就對付一下了....
軟體名稱:OverNimble Localize
Plus v1.2
軟體主頁:http://www.overnimble.com
軟體功能:不詳.
文章目的:講解簡單的脫殼和爆破!
破解結論:簡單的VB程式不用smartcheck也能搞定.
用到工具:
1.trw2000 v1.23(娃娃版)
2.prodump
v1.62
3.hiew v611
4.fileinfo v2.45
第一步:脫殼
先是檢測檔案型別,用fileinfo發現是upx
v1.2...
於是開啟prodump選中unpack中的upx,瞬間脫殼....
小弟在這裡有個疑惑,為什麼脫了殼後的程式,在用trw跟蹤時還是可以看到upx的領空???
難道是我沒有脫乾淨??可是我反彙編沒問題呀???
請高手明示小弟..
第二步:爆破.
我先試了getdlgitemtexta和messageboxa都不行(這是小弟的習慣,相信是個好習慣).
於是就用法寶hmemcpy.
添入使用者名稱:WINDOW,註冊碼:123ABC
斷了下來後,先下bc,再下pmodule,後又有50下左右的F10來到:
00429B78: 8D4DE0
lea
ecx,[ebp][-0020]
00429B7B: FF15FC064300
call d,[0004306FC]
00429B81: E81AF8FFFF
call .0004293A0
<----關鍵的比較函式.
00429B8D: B904000280
mov ecx,080020004 ;
00429B92:
B80A000000 mov
eax,00000000A ;
00429B97: 894DA0
mov [ebp][-0060],ecx
00429B9A: 894598
mov [ebp][-0068],eax
00429B9D: 894DB0
mov
[ebp][-0050],ecx
00429BA0: 8945A8
mov [ebp][-0058],eax
00429BA3: 894DC0
mov [ebp][-0040],ecx
00429BA6: 8945B8
mov
[ebp][-0048],eax
00429BA9: 0F8424010000
je .000429CD3 <---很關鍵的跳轉.
00429BAF: 391D4CDC4200
cmp [00042DC4C],ebx
於是該了這個關鍵的跳轉,出現註冊成功的對話方塊,點了確定後發現註冊還是失敗了.
程式一定在很多地方呼叫了比較函式,搞定它就差不多了,於是就重比較函式入手.
在00429b81下F8,按了70次F10左右來到.
0042947F: 51
push ecx
00429480: FF15FC034300
call d,[0004303FC]
-----|
00429486: 83F80C
cmp eax,00C ;
|->VB函式,這裡判斷註冊碼
00429489: 756A
jne
.0004294F5 -----|的長度,一定不要跳才行.
0042948B: 8D55DC
lea
edx,[ebp][-0024]
0042948E: 8955C0
mov [ebp][-0040],edx
00429491: C745B808400000
mov d,[ebp][-0048],000004008 ;
00429491: C745B808400000
mov d,[ebp][-0048],000004008
00429498: 8D45B8
lea eax,[ebp][-0048]
0042949B: 50
push eax
0042949C: FF1544054300
call d,[000430544]
----|
004294A2: 6685C0
test ax,ax
|->VB函式,這裡判斷註冊碼
004294A5: 744E
je
.0004294F5 ----|是不是數字,也不要跳.
004294A7: 8B4DDC
mov
ecx,[ebp][-0024]
004294AA: 51
push
ecx
004294AB: FF1500074300
call d,[000430700]
004294B1: FF15A8064300
call d,[0004306A8]
----|
004294B7: 8945E0
mov [ebp][-0020],eax
|->註冊碼比較,我不熟VB
004294BA: 83F801
cmp eax,001 ;
|所以沒有去找註冊碼.
004294BD: 7C36
jl
.0004294F5 ----|不要跳.
004294BF: DB45E0
fild
d,[ebp][-0020]
004294C2: DD5DA0
fstp q,[ebp][-0060]
004294C5: DD45A0
fld q,[ebp][-0060]
004294C8: DC1D181E4000
fcomp q,[000401E18]
好了以後就沒有向004294f5(出錯的地方)跳的地方了.這樣我們就爆破成功了.
第三步:手動修改成正式版.
不管你是用Hex
edit,還是Unasm(我用的是hiew,主要是我中了病毒,別的工具都不能用了).
只需要該以下三個地方:
1.)00429489的jne------>90,90(即nop,空指令).
2.)004294a5同上.
3.)004294bd同上.
好了我們完成了....我的VB不好,就不去找註冊碼了.
組織:China Crack Group[CCG]
ID:柯南