一篇沒有永遠沒有下篇的破解指南--CCED2000 發行版-1破解實戰(上) (8千字)

看雪資料發表於2000-08-11

一篇沒有永遠沒有下篇的破解指南
                    CCED2000 發行版-1破解實戰(上)

                                              --作者:IceWorld
                                                冰天雪地破解站
                                        網址:http://iceworld.126.com/

    唉,又要開工了......每天要開始工作前我總是這麼唉嘆一聲,然後無可奈何的打起十二份的精神,用一隻手機械地開啟電源總開關,顯示器,機箱電源,伴隨著從PC喇叭中穿來“嘟”的一聲,把我從胡思亂想的邊緣拉了回來。

    好了,不多說廢話了(免得被人說我有騙稿費之嫌,西西)讓我們先來檢查一下工作所需要的勞動器材:
(1)Soft-ICE For Windows95/98 v4.05
動態跟蹤的極品軟體,儘管還有TRW,我還是愛它,習慣稱它叫兄弟
(2)URSoft W32Dasm v8.93
用來破解軟體最好的靜態分析工具,IDA太過專業我不用它
(3)R!SC's Process Patcher v1.5.1
記憶體Patch軟體,作用我在下面會說到它
(4)UltraEdit-32 v7.2
修改檔案專用,老牌子了,高手用的都是它(西西,我可不是高手呀)
(5)FileInfo v2.4
我常用它來看檔案被什麼軟體加密!
(6)一瓶百事可樂(要大瓶的那種)
這個不用我多說了吧,健腦提神上上之佳品,可是我怕以後會生不出小孩子!
我的機器配置:Celeron 400(Slot 1),128M HY(PC-100),Trident 9880(8M),
FireBall 10G,Acer 40XCD,Creative VIBRA128,Motorola 56K Modem,Daytek 17"

    喝上一口可樂,大叫一聲“我有,我可以”。輸入我熟悉的 SIW 就進入了我們的工作平臺 Windows98,大家別以為我的桌面有多亂,嘿嘿,我的桌面才2個圖示,系統資源:98%可用,厲害吧!什麼,你的才80%,算了吧,如果你不會最佳化自己的系統,或者你的桌面雜亂無章,我勸你還是先學一下怎麼最佳化系統吧!一個優秀的Cracker,對自己的工作平臺應該是非常熟悉的!

    進入正題,再喝一口可樂。先用 FileInfo 看一下執行檔案是否被加密?西西,很幸運,沒問題,那我可以省下很多時間了,為了慶祝,再來一口。既然沒有加密,那麼現在該掄到我們的元老級工具 W32Dasm 出場了,載入檔案,也沒問題,這麼善良,今天我真是幸運兒,讓我再喝一口...經過漫長的等待(3分鐘而已)程式中的程式碼就清楚的出現在我的面前!好吧,先執行 CCED 看一下加密方式。啊喔,出錯了,無效的地址呼叫?朱崇軍應該沒有這麼白痴吧,剛執行就出錯,看來大概是我的 Soft-ICE 有問題了。唉,為什麼現在的軟體都要防你呢?我可憐的 Soft-ICE,為了不讓別人找到你的身影,我已經在你的身上打滿了補丁,嗚嗚...事到如今,擺在面前的只有2條路:自己找反跟蹤程式碼,或用FrogeICE(喂,老兄,還有沒有第三條路?有呀,刪除你的CCED,關掉你的計算機,睡覺去呀!)唉,明知山有虎,偏向虎山行,誰讓我喜歡想難度挑戰呢!在這裡,我用 CreateFileA 來攔截,看來幸運又一次被我抓到了,呵呵,原來是用這個方法來找我的兄弟,看我不把你給K了。

* Possible StringData Ref from Data Obj ->"\\.\SICE"
                                  |
:00530B99 68A4226100              push 006122A4
:00530B9E FF15D87E6200            Call KERNEL32.CreateFileA
:00530BA4 8945FC                  mov dword ptr [ebp-04], eax
:00530BA7 837DFCFF                cmp dword ptr [ebp-04], FFFFFFFF
:00530BAB 7411                    je 00530BBE
:00530BAD 8B45FC                  mov eax, dword ptr [ebp-04]
:00530BB0 50                      push eax
:00530BB1 FF15E47E6200            Call KERNEL32.CloseHandle
:00530BB7 B801000000              mov eax, 00000001
:00530BBC EB39                    jmp 00530BF7
:00530BBE 6A00                    push 00000000
:00530BC0 6880000000              push 00000080
:00530BC5 6A03                    push 00000003
:00530BC7 6A00                    push 00000000
:00530BC9 6A03                    push 00000003
:00530BCB 68000000C0              push C0000000

* Possible StringData Ref from Data Obj ->"\\.\NTICE"
                                  |
:00530BD0 68B0226100              push 006122B0
:00530BD5 FF15D87E6200            Call KERNEL32.CreateFileA
:00530BDB 8945FC                  mov dword ptr [ebp-04], eax
:00530BDE 837DFCFF                cmp dword ptr [ebp-04], FFFFFFFF
:00530BE2 7411                    je 00530BF5
:00530BE4 8B4DFC                  mov ecx, dword ptr [ebp-04]
:00530BE7 51                      push ecx

:00530BE8 FF15E47E6200            Call KERNEL32.CloseHandle
:00530BEE B802000000              mov eax, 00000002
:00530BF3 EB02                    jmp 00530BF7

:00530BF5 33C0                    xor eax, eax
:00530BF7 8BE5                    mov esp, ebp
:00530BF9 5D                      pop ebp
:00530BFA C3                      ret
看到了嗎?上面這段程式碼就是用來查詢 Soft-ICE 的一種方法,不管是在98還是在NT下都可以用得到,現在讓我來給它做個小手術,將530BAB處的程式碼改個跳轉方向,西西,猜到了嗎?跳到哪裡?

    好了,一塊這麼大的拌腳石被我清除了,好好的喝一大口可樂獎勵自己吧!接下來就是關鍵的一步了,讓它成為註冊版。可是從哪裡入手呢?通常一個軟體的關於對話方塊中會有註冊的相關資訊,CCED也不例外:未註冊或註冊未成功。
突破口找到了,用 W32Dasm 尋找這個資訊,定位在 407E21 處,並提示是從 407DCC 處跳轉的。好吧,讓我們來看看這段程式碼:

* Possible StringData Ref from Data Obj ->"授權結果:"
                                  |
:00407DB4 6868875F00              push 005F8768
:00407DB9 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407DBC E841CF1700              call 00584D02
:00407DC1 C645FC03                mov [ebp-04], 03
:00407DC5 833D981F620001          cmp dword ptr [00621F98], 00000001
:00407DCC 7E53                    jle 00407E21
:00407DCE A164236200              mov eax, dword ptr [00622364]
:00407DD3 2500000800              and eax, 00080000
:00407DD8 85C0                    test eax, eax
:00407DDA 7536                    jne 00407E12

* Possible StringData Ref from Data Obj ->"加密盤識別成功,軟體編號="
                                  |
:00407DDC 6874875F00              push 005F8774
:00407DE1 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407DE4 E849D21700              call 00585032
:00407DE9 6A10                    push 00000010
:00407DEB 8D8DCCFEFFFF            lea ecx, dword ptr [ebp+FFFFFECC]
:00407DF1 51                      push ecx
:00407DF2 8B1564236200            mov edx, dword ptr [00622364]
:00407DF8 52                      push edx
:00407DF9 E8C28C1600              call 00570AC0
:00407DFE 83C40C                  add esp, 0000000C
:00407E01 8D85CCFEFFFF            lea eax, dword ptr [ebp+FFFFFECC]
:00407E07 50                      push eax
:00407E08 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407E0B E822D21700              call 00585032
:00407E10 EB0D                    jmp 00407E1F

* Possible StringData Ref from Data Obj ->"註冊成功"
                                  |
:00407E12 6890875F00              push 005F8790
:00407E17 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407E1A E813D21700              call 00585032
:00407E1F EB0D                    jmp 00407E2E

* Possible StringData Ref from Data Obj ->"未註冊或註冊未成功"
                                  |
:00407E21 689C875F00              push 005F879C
:00407E26 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407E29 E804D21700              call 00585032

看到了嗎?關鍵指令就是在 407DC5 處的這個判斷,如果 621F98 處的值小與或等於1的話就什麼都沒了,407DDA 處的跳轉知識判斷你是用註冊碼還是加密盤進行授權的,至於註冊的方式是註冊碼還是加密盤,完全看你個人的喜好了!我挑選了註冊碼方式,先撥出 Soft-ICE,下 BPM 621F98 W,然後用 BD 先關閉這個斷點,進入軟體的“電子註冊”,輸入註冊碼“8888888888”,按確認後退出。撥出 Soft-ICE,用 BE 開啟斷點後再執行 CCED2000,這是程式碼停在了這裡。

:004056E3 C7811804000000000000    mov dword ptr [ebx+00000418],0

然後軟體就再也沒有對這個地址進行寫入的動作,看來我只有在這個指令上動手腳了!既然小與等於1是錯誤的,那我就用2來代替吧。將上面這個指令改為

:004056E3 C7811804000002000000    mov dword ptr [ebx+00000418],2

看看結果如何?西西,不用我說大家都知道了!(我要喝可樂)可是很明顯這個指令不是真的判斷註冊碼處的地方,只是對是否註冊的這個全域性變數進行初始化,真正的判斷還在後面,但是今天我不想把所有地方都寫出來,否則就沒有任何意義了,那我也不用寫這篇指南,還不如將修改方法直接告訴大家吧!其實用上面這個方法是不完美的。如果你是一個真正的 Cracker,就應該接著研究下去。

    接著當然是修改檔案中的程式碼了,咦,提示“錯誤:CCED2000執行檔案已被非法修改,請檢查病毒並重新安裝系統!”。看來這個軟體還有自我保護功能,西西,我喜歡!用 BPX MESSAGEBOXA 攔截訊息視窗,很快可以找到下面這段程式碼,將 405F49 處的判斷改為 JMP 就可以了!

:00405F3F 668B8455E0FEFFFF        mov ax, word ptr [ebp+2*edx-00000120]
:00405F47 3BC8                    cmp ecx, eax
:00405F49 7433                    je 00405F7E  <- 檔案是否被修改

    再執行一下,怎麼樣?省了60多元錢了吧,請我喝可樂哦!啊?凌晨3點多了,可樂也喝完了,改收工了。

總結:其實上面這些改法只是給大家做參考的,真正執行起來還會有一些問題,但我寫這篇教程的目的只是叫大家如何釣魚,而不是給您魚吃!希望大家看了後能有所提高,這樣我的目的也達到了!

                                                      IceWorld
                                                寫與2000年8月10日

相關文章