• 标 题:注册你的Windows Commander 4.51 (6千字)
  • 作 者:电神魔鬼
  • 时 间:2000-9-11 15:53:23
  • 链 接:http://bbs.pediy.com

注册你的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]永远置一就行。