• 标 题:淺淡破windows commander Ver4.5 (2千字)
  • 作 者:C-pen
  • 时 间:2000-8-1 11:21:56
  • 链 接:http://bbs.pediy.com

由於JOHNSON已被註冊,故以C-pen代替,感謝看雪,dr0,lijj的關心.我們以Windows Commander 4.5為例,4.51應該差不多吧:
(1)    脫殼:Aspack壓的,用Trw2000下PNEWSEC再下MakePE即可
(2)    CRC Check:程式一旦被Loader或中斷後,即會認為被病毒感染而結束程式,    這是防跟蹤的手段,我們可用反向Trace法即下Bpx MessageBoxA去攔那個    警告訊息,返回後找可跳過此訊息的JMP;我找到:
:004DF1D7 SUB EAX,00000536 <--CRC出錯時EAX=536
:004DF1DC JZ 004DF4F5 <--跳至MessgeBoxA
:004DF1E2 JMP 004DF937 &szlig;跳至正常程式
如此只要將004DF1DC JZ 004DF4F5 改為NOP即可,但是如此程式還是會
    會結束,因為還有一處檢測:
:004E8171 MOV EAX,[00534048] <--取CRC flag
:004E8176 SUB EAX,000023B9  <--正確值為23B9
:004E817B JZ 004E8171 <--若正確即跳躍
:004E817D MOV EAX,00000001 <--否則EAX賦值1
:004E8182 CALL 004044E4  <--CALL離開程式
:004E8187 CALL 004498E0  <--正常執行程式
    因此只要再將004E817B JZ 004E8187改jmp即可瓦解程式的CRC Check    
(3)NagBOX:未註冊版有令人討厭的NagBox,我們把它拿掉,用fimon分析,發現
    它試圖讀Wincmd.key這個Keyfile(其實有經驗的應該知道這個軟體從舊版開始就是用Keyfile保護)故我們假照Wincmd.key這個檔,這個版的正確字元
    須為1024Byts,下bpx createfilea do “d *(esp+4)”和bpx Readfile,程式首先會去
    讀你的Keyfile是否為80h,若是它會出現你的Keyfile是舊版的訊息,其實只要不是80h你會來到:
:004CDF0A LEA EDX,[EBP+FFFFF6D4]
:004CDF10 MOV ECX,00000068
:004CDF15 MOV EAX,[EBP-0118]
:004CDF1B CALL 004C9C0C
…………….略…………………….
    以上一大串的程式是做Keyfile取樣和轉換的工作,有恆心和毅力的人可以試看看,我可沒有,按F10Trace來到:
:004CDFBF CALL 00402A0C  <--Keyfile比對
:004CDFC4 JZ 004CE078  <--正確時會JMP,先下R fl Z跳過
:004CDFCA XOR EBX,EBX <--EBX在此之前為1,一旦被清掉就是未註冊版
繼續Trace直到:
:004CE3DA CALL 00402A0C <--再比對一次
:004CE3DF JZ 004CE3E3 <--等於0跳至Good-Guy
:004CE3E1 XOR EBX,EBX <--清掉EBX,Bad-Guy
                      .
                      .
:004CE404 MOV [0053E6B8],BL <--[0053E6B8]賦值1為已註冊
[後記]:改法應該很清楚了,只是這樣破了之後在註冊訊息會有一大堆亂碼那是因為我們沒去分析Keyfile,若你看著礙眼可去分析Keyfile去顯示你要的註冊訊息,或者去找印出這些字樣的地方,它應該是push xxxxxxxx Call xxxxxxxx
只要讓它傳遞值為0就不會印出字樣,或是用SMC讓它顯示你要的字樣,由於我不用這個軟體,所以後面的工作我沒有做,故無法跟你經驗分享,實在抱歉
希望你會喜歡!若有問題可和我聯絡:My E-mail:f41400@ms39.hinet.net
        JOHNSON from Taiwan