暴力破解windows Commander 4.52 (5千字)

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

破解 Windows Commander 4.52

看了精華論壇II(感謝看雪及各位大俠的精彩文章)中
JOHNSON(C-Pen)大俠破解wincmd4.5的文章,手有些發癢,
於是就下載了WinCmd4.52版練習練習。

所用工具:Trw2000 1.22(註冊版),UltraEdit 8.0

一、脫殼

    用FileInfo 2.43檢測是用ASPACK2.1加的殼,但
用UnAsPack1.0.9.1自動脫殼無效,(Why???,I don't know.),
按照JOHNSON大俠的方法,用Trw2K載入WinCMD32.exe下命令

pnewsec<Enter>

耐心地等一會兒,等trw2K跳出後,下命令

makepe<Enter>

這樣,就在WinCmd的目錄下生成了一個newpe.exe檔案,它
就是脫殼後的檔案。

二、去除CRC檢驗

    程式發現自身被修改後,會提示有病毒,然後退出。
用MessageBoxa斷點攔截後,找不到跳轉點,這是和4.5版
不同之處,和4.0版倒是一樣(不知作者是出於什麼心理)。
估計一下,從程式啟動完成到彈出有病毒提示大約為5秒鐘,
因此,重新載入,下斷點

bpx settimer<Enter>

執行程式,攔下後,用pmodule命令返回,可以看到以下程式碼,
如果沒有看到,可以繼續執行,重複上面動作,一定能找到:

015F:004EF70C  MOV      EBX,EAX
015F:004EF70E  CMP      BYTE [EBX+051F],00
015F:004EF715  JNZ      004EF737    ;關鍵的跳轉,改成JMP就沒問題了
015F:004EF717  MOV      BYTE [EBX+051F],01
015F:004EF71E  PUSH    BYTE +00
015F:004EF720  PUSH    DWORD 1388    ;1388即十進位制的5000,即5000毫秒
015F:004EF725  PUSH    DWORD 0541
015F:004EF72A  MOV      EAX,EBX
015F:004EF72C  CALL    00421AB8
015F:004EF731  PUSH    EAX
015F:004EF732  CALL    `USER32!SetTimer`

如此改了之後,程式還會不定時的自動退出。還有陷井,問題是它沒有提示,
如何找到它呢,猜想不是使用的時鐘,大概是在執行具體功能時檢測的,
試一下,刪除一個檔案,結果自動退出,OK,有辦法了,載入後,下斷點

bpx messageboxa

全速執行,找一個沒有的檔案刪除,被攔下後,用pmodule(這個命令太COOL了)
返回,F10步步跟蹤,看到了如下程式碼:
015F:004F3BA0  JMP      NEAR [ECX+00545298]
015F:004F3BA6  SUB      EAX,23B9
015F:004F3BAB  JZ      004F3BB7  ;關鍵的跳轉,改成JMP就OK     
015F:004F3BAD  MOV      EAX,01
015F:004F3BB2  CALL    004044FC  ;此CALL將退出程式
015F:004F3BB7  CALL    0044CD54 
015F:004F3BBC  XOR      EAX,EAX
015F:004F3BBE  POP      EDX
015F:004F3BBF  POP      ECX
015F:004F3BC0  POP      ECX

三、去除NAG,反覆看了johnson大俠的文章XX遍,還好找到了,
可讓我省了很多很多的力氣要先假造wincmd.key檔案
用createfilea斷點攔截,攔下後,d eax 看一下記憶體中的資料,
有Wincmd.key字眼就找到了,
015F:004D944B  LEA      EDX,[EBP+FFFFFE60]
015F:004D9451  MOV      ECX,10
015F:004D9456  CALL    00402A24     
015F:004D945B  JZ      004D945F      ;此處此處可改成JMP,

其實不跳也行,跳了會顯示亂碼,

015F:004D945D  XOR      EBX,EBX      ;EBX為註冊標誌,盯住它,沒錯
015F:004D945F  MOV      EAX,[EBP+FFFFFEFC]
015F:004D9465  CALL    00402CBC
015F:004D946A  MOV      EAX,[EBP+FFFFFEF8]
015F:004D9470  CALL    00402CBC
015F:004D9475  MOV      EAX,[EBP+FFFFFEF4]
015F:004D947B  CALL    00402CBC
015F:004D9480  MOV      [0054F6CC],BL
015F:004D9486  MOV      EAX,[0054F6C8]
015F:004D948B  NEG      EAX
015F:004D948D  IMUL    EAX,EAX,BYTE +25
015F:004D9490  MOV      [0054F6C8],EAX

將註冊標誌存入記憶體處為:

015F:004D9451  MOV      ECX,10
015F:004D9456  CALL    00402A24  ;再次比較KEY檔案
015F:004D945B  JZ      004D945F
015F:004D945D  XOR      EBX,EBX    ;EBX被清則表示未註冊
015F:004D945F  MOV      EAX,[EBP+FFFFFEFC]
015F:004D9465  CALL    00402CBC
015F:004D946A  MOV      EAX,[EBP+FFFFFEF8]
015F:004D9470  CALL    00402CBC
015F:004D9475  MOV      EAX,[EBP+FFFFFEF4]
015F:004D947B  CALL    00402CBC
015F:004D9480  MOV      [0054F6CC],BL    ;存入註冊標誌此處不管有無KEY檔案都會走到
015F:004D9486  MOV      EAX,[0054F6C8]
015F:004D948B  NEG      EAX
015F:004D948D  IMUL    EAX,EAX,BYTE +25

因此,我們不必假造KEY檔案,只要讓上面的BL值為1不就行了麼?
我找了下處

015F:004D8DBD  JNZ      004D8DE0
015F:004D8DBF  LEA      EAX,[EBP+FFFFFEE2]
015F:004D8DC5  PUSH    EAX
015F:004D8DC6  LEA      EDX,[EBP+FFFFFA70]
015F:004D8DCC  MOV      CX,0400
015F:004D8DD0  MOV      EAX,ESI
015F:004D8DD2  CALL    0043CF10
015F:004D8DD7  MOV      EAX,ESI
015F:004D8DD9  CALL    0043CEA0
015F:004D8DDE  JMP      SHORT 004D8DEB
015F:004D8DE0  XOR      EBX,EBX
015F:004D8DE2  MOV      WORD [EBP+FFFFFEE2],00
015F:004D8DEB  CMP      WORD [EBP+FFFFFEE2],80
015F:004D8DF4  SETZ    [0054F6CD]
015F:004D8DFB  MOV      BYTE [EBP+FFFFFEE1],01
015F:004D8E02  TEST    BL,BL        ;在此行上動手腳 改成 mov bl,01
015F:004D8E04  JZ      NEAR 004D90F4  ;在此行上動手腳 改成 jmp 004d90f4,再補一個NOP
015F:004D8E0A  LEA      EAX,[EBP+FFFFF608]
015F:004D8E10  PUSH    EAX
015F:004D8E11  CALL    `KERNEL32!GetTimeZoneInformation`
015F:004D8E16  INC      EAX
015F:004D8E17  JZ      004D8E35

另外再把015F:004D945D處改成2個NOP
當然具體改法很多,自己決定吧!

這樣,執行程式沒有NAG了,但標題欄顯示為Not Registered ,不管它了,
當然也可改掉,不過我很懶啦,反正已經達到目的了,至此為止!
透過分析,可以知道,第一次比較KEY檔案為判斷是否註冊,
第二次比較KEY檔案為判斷是否要出NAG。

這篇破文總算是寫完了,花了我很長時間,雖然沒有什麼新意,但也很累。
看了網上那麼多大俠的文章,我也把自己的一點體會寫出來,算佔一點回報吧。

如有遺漏可來E-mail聯絡,沒有時間作全面充分的測試(現在的軟體陷井多多)

再見吧!各位好運!!!!!

written by mjing  E-mail:mjing@wx88.net  2001-2-19

相關文章