CCED2000破解过程分析

* Possible StringData Ref from Data Obj ->”\\.\SICE”
                                  |
:00530B99 68A4226100              push 006122A4
:00530B9E FF15D87E6200            Call KERNEL32.CreateFileA
:00530BA4 8945FC                  mov dword ptr [ebp-04], eax
:00530BA7 837DFCFF                cmp dword ptr [ebp-04], FFFFFFFF
:00530BAB 7411                    je 00530BBE
:00530BAD 8B45FC                  mov eax, dword ptr [ebp-04]
:00530BB0 50                      push eax
:00530BB1 FF15E47E6200            Call KERNEL32.CloseHandle
:00530BB7 B801000000              mov eax, 00000001
:00530BBC EB39                    jmp 00530BF7
:00530BBE 6A00                    push 00000000
:00530BC0 6880000000              push 00000080
:00530BC5 6A03                    push 00000003
:00530BC7 6A00                    push 00000000
:00530BC9 6A03                    push 00000003
:00530BCB 68000000C0              push C0000000

* Possible StringData Ref from Data Obj ->”\\.\NTICE”
                                  |
:00530BD0 68B0226100              push 006122B0
:00530BD5 FF15D87E6200            Call KERNEL32.CreateFileA
:00530BDB 8945FC                  mov dword ptr [ebp-04], eax
:00530BDE 837DFCFF                cmp dword ptr [ebp-04], FFFFFFFF
:00530BE2 7411                    je 00530BF5
:00530BE4 8B4DFC                  mov ecx, dword ptr [ebp-04]
:00530BE7 51                      push ecx

:00530BE8 FF15E47E6200            Call KERNEL32.CloseHandle
:00530BEE B802000000              mov eax, 00000002
:00530BF3 EB02                    jmp 00530BF7

:00530BF5 33C0                    xor eax, eax
:00530BF7 8BE5                    mov esp, ebp
:00530BF9 5D                      pop ebp
:00530BFA C3                      ret
看到了吗?上面这段代码就是用来查找 Soft-ICE 的一种方法,不管是在98还是在NT下都可以用得到,现在让我来给它做个小手术,将530BAB处的代码改个跳转方向,西西,猜到了吗?跳到哪里?

    好了,一块这么大的拌脚石被我清除了,好好的喝一大口可乐奖励自己吧!接下来就是关键的一步了,让它成为注册版。可是从哪里入手呢?通常一个软件的关于对话框中会有注册的相关信息,CCED也不例外:未注册或注册未成功。
突破口找到了,用 W32Dasm 寻找这个信息,定位在 407E21 处,并提示是从 407DCC 处跳转的。好吧,让我们来看看这段代码:

* Possible StringData Ref from Data Obj ->”授权结果:”
                                  |
:00407DB4 6868875F00              push 005F8768
:00407DB9 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407DBC E841CF1700              call 00584D02
:00407DC1 C645FC03                mov [ebp-04], 03
:00407DC5 833D981F620001          cmp dword ptr [00621F98], 00000001
:00407DCC 7E53                    jle 00407E21
:00407DCE A164236200              mov eax, dword ptr [00622364]
:00407DD3 2500000800              and eax, 00080000
:00407DD8 85C0                    test eax, eax
:00407DDA 7536                    jne 00407E12

* Possible StringData Ref from Data Obj ->”加密盘识别成功,软件编号=”
                                  |
:00407DDC 6874875F00              push 005F8774
:00407DE1 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407DE4 E849D21700              call 00585032
:00407DE9 6A10                    push 00000010
:00407DEB 8D8DCCFEFFFF            lea ecx, dword ptr [ebp+FFFFFECC]
:00407DF1 51                      push ecx
:00407DF2 8B1564236200            mov edx, dword ptr [00622364]
:00407DF8 52                      push edx
:00407DF9 E8C28C1600              call 00570AC0
:00407DFE 83C40C                  add esp, 0000000C
:00407E01 8D85CCFEFFFF            lea eax, dword ptr [ebp+FFFFFECC]
:00407E07 50                      push eax
:00407E08 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407E0B E822D21700              call 00585032
:00407E10 EB0D                    jmp 00407E1F

* Possible StringData Ref from Data Obj ->”注册成功”
                                  |
:00407E12 6890875F00              push 005F8790
:00407E17 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407E1A E813D21700              call 00585032
:00407E1F EB0D                    jmp 00407E2E

* Possible StringData Ref from Data Obj ->”未注册或注册未成功”
                                  |
:00407E21 689C875F00              push 005F879C
:00407E26 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00407E29 E804D21700              call 00585032

看到了吗?关键指令就是在 407DC5 处的这个判断,如果 621F98 处的值小与或等于1的话就什么都没了,407DDA 处的跳转知识判断你是用注册码还是加密盘进行授权的,至于注册的方式是注册码还是加密盘,完全看你个人的喜好了!我挑选了注册码方式,先呼出 Soft-ICE,下 BPM 621F98 W,然后用 BD 先关闭这个断点,进入软件的“电子注册”,输入注册码“8888888888”,按确认后退出。呼出 Soft-ICE,用 BE 打开断点后再运行 CCED2000,这是代码停在了这里。

:004056E3 C7811804000000000000    mov dword ptr [ebx+00000418],0

然后软件就再也没有对这个地址进行写入的动作,看来我只有在这个指令上动手脚了!既然小与等于1是错误的,那我就用2来代替吧。将上面这个指令改为

:004056E3 C7811804000002000000    mov dword ptr [ebx+00000418],2

看看结果如何?西西,不用我说大家都知道了!(我要喝可乐)可是很明显这个指令不是真的判断注册码处的地方,只是对是否注册的这个全局变量进行初始化,真正的判断还在后面,但是今天我不想把所有地方都写出来,否则就没有任何意义了,那我也不用写这篇指南,还不如将修改方法直接告诉大家吧!其实用上面这个方法是不完美的。如果你是一个真正的 Cracker,就应该接着研究下去。

    接着当然是修改文件中的代码了,咦,提示“错误:CCED2000执行文件已被非法修改,请检查病毒并重新安装系统!”。看来这个软件还有自我保护功能,西西,我喜欢!用 BPX MESSAGEBOXA 拦截消息窗口,很快可以找到下面这段代码,将 405F49 处的判断改为 JMP 就可以了!

:00405F3F 668B8455E0FEFFFF        mov ax, word ptr [ebp+2*edx-00000120]
:00405F47 3BC8                    cmp ecx, eax
:00405F49 7433                    je 00405F7E  <- 文件是否被修改

    再运行一下,怎么样?省了60多元钱了吧,请我喝可乐哦!啊?凌晨3点多了,可乐也喝完了,改收工了。 

相关推荐

发表评论

您的电子邮箱地址不会被公开。

QQ点我咨询