解決kai's super goo 1.5讀光碟的問題

看雪資料發表於2000-12-05

解決kai's super goo 1.5讀光碟的問題

軟體名稱:kai's super goo 1.5 (35M ――〉天啦,我就是2M的專線網路螞蟻下載也用了7分24秒)
下載地址:http://www.iszero.com/php3-bin/redirect.php?ID=0&GET=/tuxing/zhizuo/Kaigoo.zip
軟體說明:
除錯工具:SoftICE4.05、W32dsm89
    目的:解決kai's super goo 1.5讀光碟的問題

    作者:chn-boy
除錯日期:2000-12-05

    其實這個軟體除錯工作很簡單,沒有必要寫的這麼詳細,只是為了寫作規範化,所以我還是把它當作那麼一回事情來
寫。首先在SoftICE下下斷點 bpx GetWindowTextA,F5回到Windows,在那個輸入名字對話方塊裡隨便輸入一些字元,執行。
SoftICE會自動彈出(我一直都說:so beautiful),下命令bd *,按F12一直到superGoo領空,到了領空,第一件事情就
是在進入領空處的地方下一個斷點――bpx xxxxxxxx,以被後用。然後就是F10,一路跟蹤,直到彈出出錯對話方塊為止,
如下面的程式片斷:

:00401EC4 85C0                    test eax, eax <-- 2)第二個步驟嘗試是改這個。。
:00401EC6 0F8532010000            jne 00401FFE

:00401ECC 8D8C2454020000          lea ecx, dword ptr [esp+00000254]
:00401ED3 E818650800              call 004883F0
:00401ED8 85C0                    test eax, eax  <-- 根據下面的那個出錯對話方塊,首先懷疑這個地方有問題
                                                <-- 1)第一個步驟嘗試是改這個。。
:00401EDA 0F8493000000            je 00401F73

:00401EE0 FFD3                    call ebx
:00401EE2 6A06                    push 00000006

* Possible StringData Ref from Data Obj ->"custom errors_"
                                  |
:00401EE4 686C104900              push 0049106C
:00401EE9 8D8C245C010000          lea ecx, dword ptr [esp+0000015C]
:00401EF0 68FF000000              push 000000FF
:00401EF5 51                      push ecx
:00401EF6 E8A5620600              call 004681A0
:00401EFB 83C410                  add esp, 00000010
:00401EFE 6A00                    push 00000000
:00401F00 8D942458010000          lea edx, dword ptr [esp+00000158]
:00401F07 52                      push edx
:00401F08 8BCE                    mov ecx, esi
:00401F0A FFD5                    call ebp          <--  程式在這個Call中彈出出錯對話方塊,由於上面部分的程式
                                                    <--  來看,先改嘗試改變前面1)和2)跳轉,如果不行的話,
                                                    <--  就要跟到這個Call中再慢慢研究了。。這是 3)第三個步驟
                                                   
:00401F0C 6A05                    push 00000005

* Possible StringData Ref from Data Obj ->"custom errors_"
                                  |
:00401F0E 686C104900              push 0049106C
:00401F13 8D44245C                lea eax, dword ptr [esp+5C]
:00401F17 68FF000000              push 000000FF
:00401F1C 50                      push eax
:00401F1D E87E620600              call 004681A0


  *********  中間的這個部分省略  **********

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401EDA(C)
|
:00401F73 8B7C2444                mov edi, dword ptr [esp+44]  <--程式的正確入口
:00401F77 83C9FF                  or ecx, FFFFFFFF
:00401F7A 33C0                    xor eax, eax
:00401F7C F2                      repnz
:00401F7D AE                      scasb

    根據上下文,bd *以後,首先在1)處下個斷點,F5回到Windows,重新來一次,程式會中斷在1)處,改掉1)後面的那個跳
轉,發現成功了。那麼這個地方就是關鍵了,記下這個地方的Code碼:85 c0 0f 84 93 00 00 00 ff d3 6a 06。用Hex Workshop
進行修改。

    用Hex WorkShop(當然啦,你也可以用HView什麼之類的,我是因為看雪斑竹在破解工具欄中那個Hex WorkShop的介紹才一直
使用它的。。呵呵,因為我一直都在向看雪斑竹學習、一直在向他看齊 :b )開啟SuperGoo.exe,查詢前面說的那個字串,然
後有兩種修改方法:

    1)改後面的那個 je 00401F73 為 jmp 00401F73
    2)改 test eax, eax 為 xor eax, eax  <-- 也就是把 85 改成 33 就可以了

我用的是第2中方法,嘿嘿(為什麼?哎,因為改動少嗎,只需改一個位元組就可以了。。。哈哈哈哈)



【最後整理】
     
      改:85 c0 0f 84 93 00 00 00 ff d3 6a 06
          ^^
          33

    你便可以用任何字元進去了,而且執行第一次後,下次執行不再需要輸入東東了,可以直接進去了。。  *_^

相關文章