暴力破解3 (6千字)

看雪資料發表於2001-02-18

本人暴力破解3
有人問為什麼3?明明是2才對啊!
第2本人已經成功了可惜不會用udeit32有代換改法一次就幾十個?
搞到程式出錯!現在有一種方法了就是,不說先等你看完先!
mulitword ver 3.0
可是這個是新版來的!
也就是kanjiweb!
用W32dsm89反後,以前都是從字串入手!
現在介紹一種比較快的方法,就是W32dsm89的查詢功能,輸入
"SORRY !! ERROR SERIAL NO"一會就找到了!
本些也要說明些是從錯誤對話窗入手,而且字串有時會找到一些"thank
you"之類的話也就是從註冊完窗來開槍!這裡本人也要多說幾句了!
錯誤窗與完成窗有什麼區別了?就有好像敵人與朋友你說有什麼區別啊?
錯誤窗就要kill也就我們所說的跳過它,而且完成窗就是讓它執行!
浪話少說來:

* Possible StringData Ref from Code Seg 001 ->"SORRY !! ERROR SERIAL NO"
                                  |
:0001.3A43 68E45E                push 5EE4
:0001.3A46 685D3A                push SEG ADDR of Segment 0001

* Possible StringData Ref from Code Seg 001 ->"ERROR !!"
                                  |
:0001.3A49 68DA5E                push 5EDA
:0001.3A4C 6A00                  push 0000
:0001.3A4E 9A04170000            call USER.MESSAGEBOX //->goodover討厭的對話窗出來了?
第一步找出跳到些call,有時會問如何找了這樣你就不要偷懶了要有紙和筆做記錄!
記哪麼些了?是偏移值,注意這裡的偏移值是 0001.3a4e不是狀態列下的@offset!
而且還還要記些call跟著的東西?有時還要進去看一看?如果是帶偏移值也要記住這個值為什麼了?
激法些call有時不是直接,當你向上分析時有時出現je or jne之類後面是些call後面的值,透過複雜的執行
後也回到啟用些call!也好像走路一樣,可以走直路、彎曲山路或小徑等多種走法但最終也是要到目的!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.3937(C)
|
:0001.3A34 8B76F8                mov si, [bp-08]
:0001.3A37 EB34                  jmp 3A6D //->第一個跳過些些call
第二步是找出為什麼來不到這裡的原因?


:0001.3A39 90                    nop

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.39F6(C)
|
:0001.3A3A BE0100                mov si, 0001
:0001.3A3D FF760E                push word ptr [bp+0E]
:0001.3A40 68473A                push SEG ADDR of Segment 0001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.39ED(C)
:0001.39F4 0BC0                  or ax, ax
:0001.39F6 7542                  jne 3A3A //->看到沒有? 就是它了!我要尋根問底再向上分析!
:0001.39F8 C646FBFF              mov byte ptr [bp-05], FF
:0001.39FC 33F6                  xor si, si
:0001.39FE 56                    push si
:0001.39FF 66FF76FC              push word ptr [bp-04]
:0001.3A03 FF76F6                push word ptr [bp-0A]
:0001.3A06 9A1A071B3A            call 0001.071A
:0001.3A0B 83C408                add sp, 0008
:0001.3A0E 6A04                  push 0004
:0001.3A10 8D46EE                lea ax, [bp-12]
:0001.3A13 16                    push ss
:0001.3A14 50                    push ax
:0001.3A15 FF76F6                push word ptr [bp-0A]
:0001.3A18 9A66092D3A            call 0001.0966
:0001.3A1D 83C408                add sp, 0008
:0001.3A20 6A01                  push 0001
:0001.3A22 8D46FB                lea ax, [bp-05]
:0001.3A25 16                    push ss
:0001.3A26 50                    push ax
:0001.3A27 FF76F6                push word ptr [bp-0A]
:0001.3A2A 9A6609413A            call 0001.0966
:0001.3A2F 83C408                add sp, 0008
:0001.3A32 EB1F                  jmp 3A53 第二個跳過此call

:0001.39EB F3                    repz
:0001.39EC A6                    cmpsb
:0001.39ED 7405                  je 39F4 //->是這裡?
:0001.39EF 1BC0                  sbb ax, ax
:0001.39F1 1DFFFF                sbb ax, FFFF

總結:je 39F4->jne 3A3A.....->call USER.MESSAGEBOX 完蛋!
      jmp 3A6D and jmp 3A53 to good bye call USER.MESSAGEBOX! Yeach!
所以我只要把jne 3a3a 不跳->jmp 3A53 跳過些call!
知道如何做了? 找3a3a,9090 如果你這樣做不是改一個而是改了多個,很容易出錯!
正確的是上面+3a3a也就是0BC0+3a3a(要改得)! seach 0BC0 3a3a->0BC0 9090現在只有個
                                                    ^^^^
了,你再找就找不到也就是你改對!當然可以@offset值的用hiew640reg來改!
我試了試亂輸入註冊,程式不見了?見鬼我把時間調到2002年!難道還有時間限制?
不管了調回2001正常,註冊變成灰色也就是成攻了!時間調前或後都沒有時間了!
我初次暴力如何錯誤,請大家指教!thanks! 請問一下 jne 3a3a 能改成
je 3a3a or jmp3a3a我個人看應該不行這樣也是跳得啊?程式是拿來練習已經刪除了,
由於資料與軟體太多了不知道放在哪兒了?

我破解完在整理資料時找到coolfly破解
★目標軟體: KanjiWEB3.0
時間限制: 大約一個月

1998年12月25日晚23:14分
KANJIWEB 是個不錯的內碼轉換程式,但是有時間限制,需要註冊。
首先開啟 MultiWord.exe 程式,然後選擇 register,
在註冊框中輸入任意字元,切換到 winice ,輸入:
bpx getdlgitemtext ,按F5鍵回到程式,按下OK按鍵,程式被中斷,
我們就從這兒一路P下去,最後到了
....
....
....

30f7:39c9    xor byte ptr [si],86
    :39cc    inc si    
    :39cd    lea ax,[bp+fe2f]
    :39d1    cmp si,ax
    :39d3    jb 39c9

程式到此迴圈九遍,程式在判斷九位註冊碼,追到

30f7:3a4e call messagebox

此時出現註冊失敗的畫面,因此我就從此開始逆查,往上一看,

xxxx:39eb repz cmpsb
    :39ed jz 39f4    '判斷語句,如果相等則跳到29f4繼續執行。
xxxx:xxxx .
          .
xxxx:39f4 or ax ax
xxxx:39f6 jnz 3a3a    '比較,如果不等則跳到3a3a處。

按F10鍵執行到3a3a處一看:

xxxx:3a3a mov si,0001
...
...
xxxx:3a4e call user!messagebox     '執行到此處就會出現上面的註冊失敗的畫面。
....
xxxx:3a6d or si,si
xxxx:3a6f jnz 3a87    '跳到3a87,並結束註冊

所以39f6 處的比較絕對有問題,假設相等就不會跳躍了,我們從39f6往下看:

....
....
xxxx:3a32 jmp 3a53
xxxx:3a34 mov si,[bp-08]
xxxx:3a37 jmp 3a6d

而跳到3a53處往下執行是:
....
....
xxxx:3a6f jnz 3a87
....
xxxx:3a74 call user!getparent    '處理註冊
....
xxxx:3a82 call user!sendmessage    '傳送註冊資訊。
....
xxxx:3a87 xxxx
....
xxxx:3a8c call user!enddialog    '註冊結束資訊

我想上面的關鍵語句行一看就會明白39ed和39f6語句有問題

方法,下code on 命令將修改下列機械碼:

30f7:39f6 jnz 3a3a    -> nop nop (因為是兩個位元組,所以填兩個nop)

退出後,註冊成功,軟體可以正常使用啦!

【結論】

查詢:  MULTWORD.EXE (49,008 BYTE)
      <1> 0BC0 <7542> C646FBFF -> 0BC0 <9090> C646FBFF
                ^^^^                    ^^^^
破解完成,可以上床睡覺了。看看錶,哇,很晚了嗎?see you letter!

他是用softice來破解而我的是用w32am89!
這個軟體的作者也太懶新版與舊版雖然彙編偏移不同,而彙編內容著不多是一樣的!
最後結果是一樣!softice和trw2000 破解暴力是就容易找準錯誤call如call USER.MESSAGEBOX如果
後面是一些偏移而且上下就不只一個call就比較麻煩?但分析彙編內容w32am89就比較好了!
所以他們各有千秋!如果你能把他們一起運用,會促進你的破解速度!很久沒有打這樣多字了,手都軟了!

相關文章