註冊你的Windows Commander 4.52(6千字)

看雪資料發表於2001-03-22

註冊你的Windows Commander 4.52

    wincmd4.52釋出有一段時間了,我一直忙的要命,沒空去搞(實際是陪朋友們去打sc,如果不打的話,即時戰略就會變成即時真人快打,-_-所以~~~~~明白~~~?嘿嘿我的sc水平倒是大有長進哦^^),今天花了幾個小時搞定它;-)。 

  現在進入正題,如何註冊你的wincmd452? 先進行準備工作:wincmd是aspack壓過的,拿trw2000 ver1.23脫殼吧。用trw載入wincmd32.exe,下PNEWSEC,暈~~~~~沒反應~~~~~,看來還是偷不得懶呀^Q^。用衝擊波找到wincmd的入口點543530,用trw載入wincmd32.exe,下g 543530,下suspend,用PROCDUMP找到wincmd程式,右擊之,選dump(full)即可,這樣脫殼不完全,能改主程式就行,將就用了^^。好了,看看wincmd脫殼後還能怎麼折騰:)。大致分析了一下,它的序號產生器制同wincmd4.0-4.51一樣,根本沒有變化,hehe....,這下好辦了;-)。

  準備工作完成,開始正式crack,一共需要改8處。wincmd是keyfile保護的那種軟體,沒有keyfile一樣改。先用trw2000載入wincmd32.exe,點load,停下來後下bpx readfile,按f5執行,被攔到,下bd *,按f12直到wincmd的領空。當走到4d6b1c call 4d8cd0時停下來,記下這個地址,按f5,接著退出trw2000,換乘softice。我為什麼換成softice,原因很簡單,除錯的話用s-ice是最舒服的了,脫殼的話用trw或天意是最方便的,所以choose s-ice沒商量。由於不是完全脫殼,不能用s-ice的loader裝載,所以~~~按ctrl+d進入softice下bpx hmemcpy,按f5返回,執行wincmd32.exe,被攔到,按數次f12,進入wincmd的領空,下bpx 4d6b1c,按f5又被攔到,按f8接著按f10來到如1.所示的程式:

1.
4d8db1 e86aa7f2ff    call 403520
4d8db6 83b80c00000000 cmp dword ptr [eax+0c],00
4d8dbd 7521 ->9090    jnz 4d8de0 ->nop
4d8dbf 8d85e2feffff  lea eax,[ebp-011e]

wincmd是靠比較記憶體判斷是否註冊的,所用的暫存器是ebx,需要保持為1,走到4d8de0,跳下去的話,會清掉ebx,所以不能讓他跳。按f10繼續,接著他會比較你的keyfile是否為128位元組,若是的話,提示這是舊版,讓你更新。不管他,按f10走到如2.所示的程式:


2.
4d8fd6 b966000000 mov eax,00000066
4d8fdb babca42000 mov edx,0020a4bc
4d8fe0 e84ffbffff call 4d8b34
4d8fe5 33c9      xor ecx,ecx
4d8fe7 b201      mov dl,01

4d8b34這個call有問題,跟進去如A.所示程式,把它改為B.所示的程式。其中b5e7c9f1c4a7b9ed20或7a6f6d6269657973是我註冊的名字,你可以改成別的名字,其餘的部分按B.所示的改。

004cde88->004cdf00


A.                        |B.
017f:004d8b34 55    push ebp                |017f:004d8b34 0517000000 add eax,00000017
017f:004d8b35 8bec  mov ebp,esp              |017f:004d8b39 c60000      mov byte ptr [eax],00
017f:004d8b37 83c4f8 add esp,-08            |017f:004d8b3c 0503000000 add eax,00000003
017f:004d8b3a 53    push ebx                |017f:004d8b43 c600b5    mov byte ptr [eax],b5
017f:004d8b3b 56    push esi              |017f:004d8b46 40        inc eax
017f:004d8b3c 57    push edi              |017f:004d8b47 c600e7    mov byte ptr [eax],e7
017f:004d8b3d 8bf9  mov edi,ecx            |017f:004d8b4a 40        inc eax
017f:004d8b3f 8945fc mov [ebp-04],eax        |017f:004d8b4b c600c9    mov byte ptr [eax],c9
.                                          |017f:004d8b4e 40           inc eax
.                                          |017f:004d8b4f c600f1    mov byte ptr [eax],f1
.                                          |017f:004d8b52 40        inc eax
.                                          |017f:004d8b53 c600c4    mov byte ptr [eax],c4
.                                          |017f:004d8b56 40        inc eax
.                                          |017f:004d8b57 c600a7    mov byte ptr [eax],a7
.                                          |017f:004d8b5a 40        inc eax
.                                          |017f:004d8b5b c600b9    mov byte ptr [eax],b9
.                                          |017f:004d8b5e 40        inc eax
.                                          |017f:004d8b5f c600ed    mov byte ptr [eax],ed
.                                          |017f:004d8b62 40        inc eax
017f:004d8ba2 ff4df8 dec dword ptr [ebp-08] |017f:004d8b63 c60020    mov byte ptr [eax],20
017f:004d8ba5 75a8  jnz 004d8b4f          |017f:004d8b66 40        inc eax
017f:004d8ba7 5f    pop edi            |.
017f:004d8ba8 5e    pop esi            |.
017f:004d8ba9 5b    pop ebx            |.
017f:004d8baa 59    pop ecx                |.
017f:004d8bab 59    pop ecx            |017f:004d8ba9 c60000      mov byte ptr [eax],00
017f:004d8bac 5d    pop ebp            |017f:004d8bac 90          nop
017f:004d8bad c3    ret            |017f:004d8bad c3          ret

接著按F10來到如3.所示的程式,強制他跳過去,不跳的話會清掉ebx的。

3.
017f:004d903b e8e499f2ff          call 00402a24
017f:004d9040 0f84ae000000 ->e9af000000 jz 004d90f4 ->jmp 004d90f4
017f:004d9046 33db                      xor ebx,ebx
017f:004d9048 33d2                      xor edx,edx
繼續跟到如4.所示的程式,按列出的方法改。

4.
017f:004d91ff 8d8558f8ffff    lea eax,[ebp+fffff858]
017f:004d9205 8bd6            mov edx,esi
017f:004d9207 e81cdaf2ff ->90  call 00406c28 ->nop
                      ->33c9              ->xor ecx,ecx
                       ->8808              ->mov bytes ptr [eax],cl
017f:004d920c bad0954d00      mov edx,004ce930
017f:004d9211 8d8558f8ffff    lea eax,[ebp+fffff858]

當跟到5.所示的地方,這是最後一個跳轉了,強制它跳。

5.
017f:004d9456 e8c995f2ff  call 00402a24
017f:004d945b 7402 ->eb02 jz 004d945f ->jmp 004d945f
017f:004d945d 33db        xor ebx,ebx

接下來,按幾次f10到如6.所示的程式,按我列出的方法改。

6.
017f:00543893 a1c4f65400        mov eax,[0054f6c4]
017f:00543898 e88342edff ->eb00 call 00417b20 ->jmp 0054389a
             ->eb00              ->jmp 0054389c
             ->90              ->nop
017f:0054389d a1b0e65300        mov eax,[0054f6c4]
017f:005438a2 e86dadeeff        call 0041e834

再按幾下f10就進入wincmd了,好了,用我的名字註冊的。別忙還沒完呢,wincmd還沒把你折騰夠呢,你晃動幾下滑鼠,wincmd就會冒出一個框框,告訴你感染virus一類的東西。這時按ctrl+d進入softice,下bpx lockmytask,按f5返回,點確定,被攔到,下bd *,按幾次f12進入wincmd的地盤,往回倒到如7.所示的地方,將JG 4EA8EC改為nop,這是試出來的。

7.
4EA8A9 E87AC3F1FF  CALL 406C28
4EA8AE 8B4304      MOV EAX,[EBX+04]
4EA8B1 83F808      CMP EAX,08
4EA8B4 7F36->9090  JG 4EA8EC ->NOP
4EA8B6 0F8456060000 JZ 4EAF12

不忙還沒完呢,當你點help,在點about時,會彈出一個註冊資訊框,你再點確定時,wincmd會自動退出。所以你在點確定之前進入softice,下bpx lockmytask,按幾次f12到如8.所示的地方,把JZ 4F3BB7改為JMP 4F3BB7才能繼續使用它。

8.
4F3BA1 A198525400 MOV EAX,[545298]
4F3BA6 2DB9230000 SUB EAX,0023B9
4F3BAB 740A->EB0A JZ 4F3BB7 ->JMP 4F3BB7

完活:)
很麻煩吧@_@

最後就是用winhex以來的東西把wincmd改為註冊版了,機器碼我都列出來了。

說明:wincmd4.0--4.52之間的所有版本都可以這麼改,只是對應的地址不一樣。

cracked by zombieys
homepage http://zombieys.126.com
my oicq is 1789655
thanks for your supports

相關文章