• 标 题:注册你的Windows Commander 4.52(6千字)
  • 作 者:zombieys
  • 时 间:2001-3-22 19:12:57
  • 链 接:http://bbs.pediy.com

注册你的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