一段win commander 5.1的smc破解程式碼 (2千字)

看雪資料發表於2015-11-15

這個最好用的工具在0828出的新版5.1,前天我才知道,0day已經出來了,還是想自己還破一下~~~

  還是aspack壓的,trw 的 pedump就可脫殼,檔案的CRC校驗很煩,沒時間。事實上可以用smc搞定。

  在殼中有一段rep movsd程式碼,向下不遠是個判斷是否解壓完畢的語句,在這之後讓他jmp到空地去(事實少的可憐,可以加一個段),程式碼如下:

(機器正在瘋狂下載中,沒機會再改了)



0167:005CF5D0 60              PUSHA             ;儲存暫存器 
0167:005CF5D1 E800000000      CALL    005CF5D6
0167:005CF5D6 5D              POP      EBP
0167:005CF5D7 89E8            MOV      EAX,EBP
0167:005CF5D9 2C36            SUB      AL,36        ;取得資料區的首址。原來是把資料放前面,程式碼跟在後面,這樣不大好,最好順序換一下,然後add al, XX;另,最好是對eax操作,避免進位丟失。
0167:005CF5DB 89C6            MOV      ESI,EAX
0167:005CF5DD 31C9            XOR      ECX,ECX

0167:005CF5DF AC              LODSB              ;取長度
0167:005CF5E0 84C0            TEST    AL,AL
0167:005CF5E2 740D            JZ      005CF5F1    ;是否完畢

0167:005CF5E4 88C1            MOV      CL,AL        ;長度到cl, 255位元組足夠補一段了~~~
0167:005CF5E6 AD              LODSD 
0167:005CF5E7 89C7            MOV      EDI,EAX        ;取目標地址
0167:005CF5E9 AC              LODSB 
0167:005CF5EA AA              STOSB 
0167:005CF5EB FEC9            DEC      CL
0167:005CF5ED 75FA            JNZ      005CF5E9    ;之所以沒用rep movsb是因為非法,莫名其妙

0167:005CF5EF EBEE            JMP      SHORT 005CF5DF

0167:005CF5F1 61              POPA                ;準備返回
0167:005CF5F2 6800800000      PUSH    DWORD 8000    ;改跳轉處原有語句
0167:005CF5F7 E9B2FBFFFF      JMP      005CF1AE    ;跳回去這樣也可以,最好是用jmp ebp+XXXX這樣的相對定址
0167:005CF5FC 0000            ADD      [EAX],AL
0167:005CF5FE 0000            ADD      [EAX],AL


要補的資料區這樣來定義,有通用性:
  每個小節第一位元組為長度,接下來四位元組為要修改的地址,比如要改的004013c4就是C4 13 40 00;再下來就是改後的內容,長度由第一位元組決定,一定要數對了~~~ 然後跟著下一段,最後以0為結束標誌。

大致如此,對它的CRC這樣解決:
  複製wincmd32.exe為另一份,隨便起個名,比如WC.OLD~~~~
破解時在createfilea前面是傳引數,讓eax指向你改過的路徑加wc.old就行了,這樣它就會去讀wc.old了,呵呵,真乖給你買糖吃。接下來就隨便了,改註冊名什麼的,只要空間夠用,任你怎麼作。

enjoy!


<

相關文章