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

看雪資料發表於2000-09-11

註冊你的Windows Commander 4.51

  最近忙得要命,好久沒來看學論壇灌水了,今天要淹他一下^-^。感謝JOHNSON也就是c-pen的幫助,有空到大陸來玩呀。再有謝謝各位cracker的支援。

  現在進入正題,如何註冊你的wincmd451? 你可以去download一個序號產生器,叫wc451_kg.exe,到處都是。我用wincmd,只用它的比較功能。作為一個cracker,用別人crack過的東西,尤其是序號產生器,非常的不爽,還是自己來吧。先進行準備工作:wincmd是aspack壓過的,解壓縮吧,咦? unas1091竟然不管用,看來還是偷不得懶:(。拿trw2000 ver1.22脫殼,用trw載入wincmd32.exe,下PNEWSEC再下MakePE即可,wincmd目錄下會生成一個叫NEWPE.EXE的檔案,這就是脫殼後的wincmd32.exe,把NEWPE.EXE改名為wincmd32.exe。好了,看看wincmd脫殼後還能怎麼折騰:)。仔細分析了一下,它的序號產生器制同wincmd4.0一樣,根本沒有變化,hehe....,這下好辦了。
  準備工作完成,開始正式crack,一共需要改8處。wincmd是keyfile保護的那種軟體,沒有keyfile一樣改。先用trw2000載入wincmd32.exe,點load,停下來後下bpx readfile,按f5執行,被攔到,下bd *,按f12直到wincmd的領空。當走到如下1.所示的4ce105時停下來,記下這個數,按f5,接著退出trw2000,換乘sooftice。我為什麼換成softice,原因很簡單,因為我不會用trw:(。按ctrl+d進入softice下bpx hmemcpy,按f5返回,執行wincmd32.exe,被攔到,按8此f12,進入wincmd的領空,下bpx 4ce105,按f5又被攔到,按f10來到如1.所示的程式:

1.
017f:004ce105 e8fe53f3ff    call 00403508
017f:004ce10a 83b80c00000000 cmp dword ptr [eax+0c],00
017f:004ce111 7521 ->9090    jnz 004ce134 ->nop
017f:004ce113 8d85e2feffff  lea eax,[ebp-011e]

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


2.
017f:004ce32a b966000000 mov ecx,0066
017f:004ce32f babca42000 mov edx,0020a4bc
017f:004ce334 e84ffbffff call 004cde88
017f:004ce339 33c9      xor ecx,ecx
017f:004ce33b b201      mov dl,01

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

004cde88->004cdf00


A.                        |B.
017f:004cde88 55    push ebp            |017f:004cde88 0517000000 add eax,00000017
017f:004cde89 8bec  mov ebp,esp        |017f:004cde8d c60000      mov byte ptr [eax],00
017f:004cde8b 83c4f8 add esp,-08        |017f:004cde90 0503000000 add eax,00000003
017f:004cde8e 53    push ebx            |017f:004cde95 c600b5    mov byte ptr [eax],b5
017f:004cde8f 56    push esi            |017f:004cde98 40        inc eax
017f:004cde90 57    push edi            |017f:004cde99 c600e7    mov byte ptr [eax],e7
017f:004cde91 8bf9  mov edi,ecx        |017f:004cde9c 40        inc eax
017f:004cde93 8945fc mov [ebp-04],eax        |017f:004cde9d c600c9    mov byte ptr [eax],c9
.                        |017f:004cdea0 40           inc eax
.                        |017f:004cdea1 c600f1    mov byte ptr [eax],f1
.                        |017f:004cdea4 40        inc eax
.                        |017f:004cdea5 c600c4    mov byte ptr [eax],c4
.                            |017f:004cdea8 40        inc eax
.                        |017f:004cdea9 c600a7    mov byte ptr [eax],a7
.                        |017f:004cdeac 40        inc eax
.                        |017f:004cdead c600b9    mov byte ptr [eax],b9
.                        |017f:004cdeb0 40        inc eax
.                        |017f:004cdeb1 c600ed    mov byte ptr [eax],ed
.                        |017f:004cdeb4 40        inc eax
017f:004cdef6 ff4df8 dec dword ptr [ebp-08] |017f:004cdeb5 c60020    mov byte ptr [eax],20
017f:004cdef9 75a8  jnz 004cdea3          |017f:004cdeb8 40        inc eax
017f:004cdefb 5f    pop edi            |.
017f:004cdefc 5e    pop esi            |.
017f:004cdefe 59    pop ecx            |.
017f:004cdeff 59    pop ecx            |017f:004cdefd c60000      mov byte ptr [eax],00
017f:004cdf00 5d    pop ebp            |017f:004cdf00 90          nop
017f:004cdf01 c3    ret            |017f:004cdf01 c3          ret

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

3.
017f:004ce38f e87846f3ff          call 00402a0c
017f:004ce394 0f84ae000000 ->e9af000000 jz 004ce448 ->jmp 004ce448

繼續跟到如4.所示的程式,按列出的方法改。

4.
017f:004ce5c6 8d8558f8ffff    lea eax,[ebp+fffff858]
017f:004ce5cc e8a786f3ff ->90  call 00406c78 ->nop
                      ->33c9              ->xor ecx,ecx
                       ->8808              ->mov bytes ptr [eax],cl
017f:004ce5d1 ba30e94c00      mov edx,004ce930
017f:004ce5d6 8d8558f8ffff    lea eax,[ebp+fffff858]

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

5.
017f:004ce7aa e85d42f3ff  call 00402a0c
017f:004ce7af 7402 ->eb02 jz 004ce7b3 ->jmp 004ce7b3
017f:004ce7b1 33db        xor ebx,ebx

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

6.
017f:00532d13 a1b0e65300        mov eax,[0053e6b0]
017f:00532d18 e8f340eeff ->eb00 call 00416e10 ->jmp 00532d1a
             ->eb00              ->jmp 00532d1c
             ->90              ->nop
017f:00532d1d a1b0e65300        mov eax,[0053e6b0]
017f:00532d22 e86dadeeff        call 0041da94

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

7.
017f:004df56d e83e76f2ff  call 00406bb0
017f:004df572 8b4302      mov eax,dword ptr [ebx+04]
017f:004df575 83f808      cmp eax,08
017f:004df578 7f36 ->9090  jg 004df5b0 ->jmp 004df5b0
017f:004df57a 0f8444060000 je 004dfbc4

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

8.
017f:004e8562 a148405300  mov eax,dword ptr[00534048]
017f:004e8567 2db9230000  sub eax,00000023b9
017f:004e856c 740a ->eb0a je 004e8578 ->jmp 004e8578
017f:004e8573 e86cbff1ff  call 004044e4

完活:)

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

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

cracked by 電神魔鬼
my oicq is 1789655
thanks for your supports

我貼出的改免註冊版的Winhex Ver9.52有一點問題,竟然沒人告訴我,真是太~!@#$%^&(.......
我更正一下
winhex ver9.52

免註冊

*[45759d]

017f:00450041 jnz 00450064 ->nop
017f:00450062 jz 00450068  ->jmp 00450068
017f:0043e26a jz 43e277    ->jmp 43e277
017f:0043e31b jl 0043e372  ->nop
017f:0043e36b jz 0043e37d  ->jmp 0043e37d

7521B85C524500
9090B85C524500

3B027404
3B02eb04

740bb8b0754500
eb0bb8b0754500

7C55A13C764500
9090A13C764500

741083F954
eb1083F954

改的方法不唯一,主要是讓[45759d]永遠置一就行。

相關文章