談談關於如何破解OicqPassOver.exe Ver1.14的問題
一.如何註冊OicqPassOver.exe Ver1.14
1.如果你對這個軟體沒什麼興趣的話,按如下方法註冊即可
在HKEY_CURRENT_USER\Software\Intel新建字串值speed內容為102717715,再新建字串值cpu內容為BB901AC1,其中cpu的內容會隨speed的內容不同而變化.
2.如果你對他很感興趣的話,分析一下他的註冊流程
簡要方法:
017f:00451d41 lea eax,[ebp-04]
017f:00451d44 call 00407b9c
017f:00451d49 mov edx,[ebp-04]
017f:00451d4c pop eax ------>d eax
017f:00451d4d call 00403c3c
017f:00451d52 jnz 004551ee0
首先選註冊,輸入78787878,後按ctrl+d進入softice,執行s 30:0 l ffffffff '78787878',後bpm搜到的地址,按f5返回,點確定後被softice攔到,下bd
*,按數次f12進入OicqPassOver的領空,按f10跟蹤到上面所寫的地方,當程式執行到00451d4c處時,用d eax,上下翻頁看一下記憶體的話,speed值,cpu值,密碼值寫在一起,很容易找到,當程式執行到00451d52時,如果密碼正確不跳,否則跳,跟蹤完畢.
註冊的話,填正確的密碼,強制不跳,都能註冊,但程式會在windows\system下放一個叫kbd.386的檔案,據說這個玩藝會使使用者當機,我沒碰到過當機,不知是怎麼回事:(,可是不管你怎麼註冊,他都會放的,我只有繼續跟蹤了.
二.如何跳過程式的“暗柱”
我們繼續跟蹤到
017F:00451DB5 MOV EDX,00451E78
017f:00451dba mov edx,esi
017f:00451dbc mov ecx,[eax]
017f:00451dbe call [eax+34]
017f:00451dc1 dec ebx
017f:00451dc2 jnz 00451d85 ->jmp 00451e0f
這個jnz會在剛才d eax所顯示記憶體處的下面連續寫hahaha.....!,就是kbd.386的內容,我沒有仔細分析,直接跳到00451e0f的話會提示註冊成功,且不會在windows\system下放kbd.386(jmp
00451e0f是試出來的,在此省略測試若干,由於我沒細分析,有毛病的話,就應該是jmp到哪的問題了)
三.如何跳過"路漫漫"的問題
這個問題我的能力解決不了,不過我參考了一下
iCEbIRD [CCG] * [CCG] stands for cHINA cRACKING gROUP
http://nemc.yeah.net/
icebird_crack@21cn.com
的破 OICQ 密碼終結者 1.13的關於消除nag screen的部分,得到完滿的解決.
好我們開始(參考部分原文)
因為soft-ice無法查詢中文,用winhex查詢"路漫漫"(他用的是ultra-edit,我習慣用winhex),把他改為cracking,然後執行OicqPassOver.exe,進入後在softice中下bpx
destroywindow,點確定,被攔到,按f12到OicqPassOver的領空後,下s 30:0 l ffffffff 'cracking',bpm搜到的地址,退出OicqPassOver,再次執行OicqPassOver.exe,被攔到,下bd
*,按f12直到進入OicqPassOver的領空,按住f10直到回到OicqPassOver中,點確定後又被攔到,看一下是哪一個call調的
017f:0044b14d call [edx+cc]
由於這是一個公共的call,我們不能直接把它給NOP掉,所以在程式中加入一段子程式,在44b14d處首先CALL我的子程式進行判斷,看是出現那個有詩句的nag
screen還是其它。那麼我的code要放在哪裡呢?因為程式的入口在.CODE section,所以用winhex開啟檔案,在.CODE section中找可以存放我的code的地方,我找到了這裡:(這一段幾乎抄的原文,下面是關鍵
)
000562e3 e8 bb f5 fe ff 5b e8 a1 c8 fa ff 90 00 00 00 <- end of .CODE
section
000562f2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <- here save
my code
解釋一下我理解的上面的查詢方法:抄下softice跟蹤到的機器碼,比如017f:00451d52 jnz 004551ee0的機器碼是0f85c8000000,在winhex中查詢之,找到後,按pagedown向下翻頁直到又連續的000000000000000000000......處(在hex
values中),最明顯的標誌是text欄中runtime error的上面(我的表達能力太差了:(,sorry)
我決定在562f2處放我的code,所以先在這裡做一個mark,鍵入mycode.
再次執行程式,這次在44b14d處攔下後就下s 30:0 l ffffffff 'mycode',找到了記憶體地址456ee3,
此時還要記下兩樣資料:[EDX+CC]==>443608,EDI==>0
現在可以開始改了,下A 44b14d,然後下CALL 456ee3,下nop,回車,程式變成了這樣
017f:00448125 0f8450bcee78 call 456ee3
017f:00448126 90 nop
接下來就下G 456ee3,到了456ee3後就下A,然後下這些指令:
xxxx:xxxxxxxx 83ff00 CMP
EDI,00
xxxx:xxxxxxxx 0f846742ffff JZ 0044b153
xxxx:xxxxxxxx e917c7feff JMP 00443608
完成.
四.做成release版的OicqPassOver.exe密碼終結者
1.註冊號隨便填
查詢:0f85c8000000b201
改為:909090909090b201
2.跳過程式的“暗柱”
查詢:ff51344b75f1
改為:ff51344beb4b
3.跳過"路漫漫....."
查詢:8b10ff92cc0000008945f8
改為:8b10e891bd0000908945f8
查詢:6D79636F6465????????????????
改為:83ff000f846742ffffe917c7feff
(只有填mycode時,這樣找,或直接用winhex在000562f2處寫入83ff000f846742ffffe917c7feff)
完成.
注:1.沒有經過安全測試,有什麼副作用未知:)
2.我用的是winhex9.52,如果你沒有註冊號的話,按如下方法改可以免註冊:)
附winhex ver9.52免註冊
*[45759d] 在這強制置1的話,程式會認為你已經註冊
017f:00450041 jnz 00450064 ->nop
017f:00450062 jz 00450068 ->jmp 00450068
017f:0043e31b jl 0043e372 ->nop
017f:0043e36b jz 0043e37d ->jmp 0043e37d
7521B85C524500
9090B85C524500
3B027404
3B02eb04
7C55A13C764500
9090A13C764500
741083F954
eb1083F954
cracked by 電神魔鬼
thanks for your supports