談談關於如何破解OicqPassOver.exe Ver1.14的問題 (4千字)

看雪資料發表於2000-07-31

談談關於如何破解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

相關文章