野火太子 發表於 2008-10-8 19:03:05

CCED破解实战

让我们先来检查一下工作所需要的劳动器材:
<br />
<br />(1)Soft-ICE For Windows95/98 v4.05
<br />
<br />动态跟踪的极品软件,尽管还有TRW,我还是爱它,习惯称它叫兄弟
<br />
<br />(2)URSoft W32Dasm v8.93
<br />
<br />用来破解软件最好的静态分析工具,IDA太过专业我不用它
<br />
<br />(3)R!SC’s Process Patcher v1.5.1
<br />
<br />内存Patch软件,作用我在下面会说到它
<br />
<br />(4)UltraEdit-32 v7.2
<br />
<br />修改文件专用,老牌子了,高手用的都是它(西西,我可不是高手呀)
<br />
<br />(5)FileInfo v2.4
<br />
<br />我常用它来看文件被什么软件加密!
<br />
<br />(6)一瓶百事可乐(要大瓶的那种)
<br />
<br />这个不用我多说了吧,健脑提神上上之佳品,可是我怕以后会生不出小孩子!
<br />
<br />我的机器配置:Celeron 400(Slot 1),128M HY(PC-100),Trident 9880(8M),
<br />
<br />FireBall 10G,Acer 40XCD,Creative VIBRA128,Motorola 56K Modem,Daytek 17&quot;
<br />
<br />    喝上一口可乐,大叫一声“我有,我可以”。输入我熟悉的 SIW 就进入了我们的工作平台 Windows98,大家别以为我的桌面有多乱,嘿嘿,我的桌面才2个图标,系统资源:98%可用,厉害吧!什么,你的才80%,算了吧,如果你不会优化自己的系统,或者你的桌面杂乱无章,我劝你还是先学一下怎么优化系统吧!一个优秀的Cracker,对自己的工作平台应该是非常熟悉的!
<br />
<br />    进入正题,再喝一口可乐。先用 FileInfo 看一下执行文件是否被加密?西西,很幸运,没问题,那我可以省下很多时间了,为了庆祝,再来一口。既然没有加密,那么现在该抡到我们的元老级工具 W32Dasm 出场了,载入文件,也没问题,这么善良,今天我真是幸运儿,让我再喝一口...经过漫长的等待(3分钟而已)程序中的代码就清楚的出现在我的面前!好吧,先运行 CCED 看一下加密方式。啊喔,出错了,无效的地址调用?朱崇军应该没有这么白痴吧,刚运行就出错,看来大概是我的 Soft-ICE 有问题了。唉,为什么现在的软件都要防你呢?我可怜的 Soft-ICE,为了不让别人找到你的身影,我已经在你的身上打满了补丁,呜呜...事到如今,摆在面前的只有2条路:自己找反跟踪代码,或用FrogeICE(喂,老兄,还有没有第三条路?有呀,删除你的CCED,关掉你的计算机,睡觉去呀!)唉,明知山有虎,偏向虎山行,谁让我喜欢想难度挑战呢!在这里,我用 CreateFileA 来拦截,看来幸运又一次被我抓到了,呵呵,原来是用这个方法来找我的兄弟,看我不把你给K了。
<br />
<br />* Possible StringData Ref from Data Obj -&gt;&quot;
<br />
<br />\\.\SICE
<br />
<br />&quot;
<br />
<br />                                  |
<br />
<br />:00530B99 68A4226100            push 006122A4
<br />
<br />:00530B9E FF15D87E6200            Call KERNEL32.CreateFileA
<br />
<br />:00530BA4 8945FC                  mov dword ptr , eax
<br />
<br />:00530BA7 837DFCFF                cmp dword ptr , FFFFFFFF
<br />
<br />:00530BAB 7411                  je 00530BBE
<br />
<br />:00530BAD 8B45FC                  mov eax, dword ptr
<br />
<br />:00530BB0 50                      push eax
<br />
<br />:00530BB1 FF15E47E6200            Call KERNEL32.CloseHandle
<br />
<br />:00530BB7 B801000000            mov eax, 00000001
<br />
<br />:00530BBC EB39                  jmp 00530BF7
<br />
<br />:00530BBE 6A00                  push 00000000
<br />
<br />:00530BC0 6880000000            push 00000080
<br />
<br />:00530BC5 6A03                  push 00000003
<br />
<br />:00530BC7 6A00                  push 00000000
<br />
<br />:00530BC9 6A03                  push 00000003
<br />
<br />:00530BCB 68000000C0            push C0000000
<br />
<br />* Possible StringData Ref from Data Obj -&gt;&quot;
<br />
<br />\\.\NTICE
<br />
<br />&quot;
<br />
<br />                                  |
<br />
<br />:00530BD0 68B0226100            push 006122B0
<br />
<br />:00530BD5 FF15D87E6200            Call KERNEL32.CreateFileA
<br />
<br />:00530BDB 8945FC                  mov dword ptr , eax
<br />
<br />:00530BDE 837DFCFF                cmp dword ptr , FFFFFFFF
<br />
<br />:00530BE2 7411                  je 00530BF5
<br />
<br />:00530BE4 8B4DFC                  mov ecx, dword ptr
<br />
<br />:00530BE7 51                      push ecx
<br />
<br />:00530BE8 FF15E47E6200            Call KERNEL32.CloseHandle
<br />
<br />:00530BEE B802000000            mov eax, 00000002
<br />
<br />:00530BF3 EB02                  jmp 00530BF7
<br />
<br />:00530BF5 33C0                  xor eax, eax
<br />
<br />:00530BF7 8BE5                  mov esp, ebp
<br />
<br />:00530BF9 5D                      pop ebp
<br />
<br />:00530BFA C3                      ret
<br />
<br />看到了吗?上面这段代码就是用来查找 Soft-ICE 的一种方法,不管是在98还是在NT下都可以用得到,现在让我来给它做个小手术,将530BAB处的代码改个跳转方向,西西,猜到了吗?跳到哪里?
<br />
<br />    好了,一块这么大的拌脚石被我清除了,好好的喝一大口可乐奖励自己吧!接下来就是关键的一步了,让它成为注册版。可是从哪里入手呢?通常一个软件的关于对话框中会有注册的相关信息,CCED也不例外:未注册或注册未成功。
<br />
<br />突破口找到了,用 W32Dasm 寻找这个信息,定位在 407E21 处,并提示是从 407DCC 处跳转的。好吧,让我们来看看这段代码:
<br />
<br />* Possible StringData Ref from Data Obj -&gt;&quot;授权结果:&quot;
<br />
<br />                                  |
<br />
<br />:00407DB4 6868875F00            push 005F8768
<br />
<br />:00407DB9 8D4DF0                  lea ecx, dword ptr
<br />
<br />:00407DBC E841CF1700            call 00584D02
<br />
<br />:00407DC1 C645FC03                mov , 03
<br />
<br />:00407DC5 833D981F620001          cmp dword ptr , 00000001
<br />
<br />:00407DCC 7E53                  jle 00407E21
<br />
<br />:00407DCE A164236200            mov eax, dword ptr
<br />
<br />:00407DD3 2500000800            and eax, 00080000
<br />
<br />:00407DD8 85C0                  test eax, eax
<br />
<br />:00407DDA 7536                  jne 00407E12
<br />
<br />* Possible StringData Ref from Data Obj -&gt;&quot;加密盘识别成功,软件编号=&quot;
<br />
<br />                                  |
<br />
<br />:00407DDC 6874875F00            push 005F8774
<br />
<br />:00407DE1 8D4DF0                  lea ecx, dword ptr
<br />
<br />:00407DE4 E849D21700            call 00585032
<br />
<br />:00407DE9 6A10                  push 00000010
<br />
<br />:00407DEB 8D8DCCFEFFFF            lea ecx, dword ptr
<br />
<br />:00407DF1 51                      push ecx
<br />
<br />:00407DF2 8B1564236200            mov edx, dword ptr
<br />
<br />:00407DF8 52                      push edx
<br />
<br />:00407DF9 E8C28C1600            call 00570AC0
<br />
<br />:00407DFE 83C40C                  add esp, 0000000C
<br />
<br />:00407E01 8D85CCFEFFFF            lea eax, dword ptr
<br />
<br />:00407E07 50                      push eax
<br />
<br />:00407E08 8D4DF0                  lea ecx, dword ptr
<br />
<br />:00407E0B E822D21700            call 00585032
<br />
<br />:00407E10 EB0D                  jmp 00407E1F
<br />
<br />* Possible StringData Ref from Data Obj -&gt;&quot;注册成功&quot;
<br />
<br />                                  |
<br />
<br />:00407E12 6890875F00            push 005F8790
<br />
<br />:00407E17 8D4DF0                  lea ecx, dword ptr
<br />
<br />:00407E1A E813D21700            call 00585032
<br />
<br />:00407E1F EB0D                  jmp 00407E2E
<br />
<br />* Possible StringData Ref from Data Obj -&gt;&quot;未注册或注册未成功&quot;
<br />
<br />                                  |
<br />
<br />:00407E21 689C875F00            push 005F879C
<br />
<br />:00407E26 8D4DF0                  lea ecx, dword ptr
<br />
<br />:00407E29 E804D21700            call 00585032
<br />
<br />看到了吗?关键指令就是在 407DC5 处的这个判断,如果 621F98 处的值小与或等于1的话就什么都没了,407DDA 处的跳转知识判断你是用注册码还是加密盘进行授权的,至于注册的方式是注册码还是加密盘,完全看你个人的喜好了!我挑选了注册码方式,先呼出 Soft-ICE,下 BPM 621F98 W,然后用 BD 先关闭这个断点,进入软件的“电子注册”,输入注册码“8888888888”,按确认后退出。呼出 Soft-ICE,用 BE 打开断点后再运行 CCED2000,这是代码停在了这里。
<br />
<br />:004056E3 C7811804000000000000    mov dword ptr ,0
<br />
<br />然后软件就再也没有对这个地址进行写入的动作,看来我只有在这个指令上动手脚了!既然小与等于1是错误的,那我就用2来代替吧。将上面这个指令改为
<br />
<br />:004056E3 C7811804000002000000    mov dword ptr ,2
<br />
<br />看看结果如何?西西,不用我说大家都知道了!(我要喝可乐)可是很明显这个指令不是真的判断注册码处的地方,只是对是否注册的这个全局变量进行初始化,真正的判断还在后面,但是今天我不想把所有地方都写出来,否则就没有任何意义了,那我也不用写这篇指南,还不如将修改方法直接告诉大家吧!其实用上面这个方法是不完美的。如果你是一个真正的 Cracker,就应该接着研究下去。
<br />
<br />    接着当然是修改文件中的代码了,咦,提示“错误:CCED2000执行文件已被非法修改,请检查病毒并重新安装系统!”。看来这个软件还有自我保护功能,西西,我喜欢!用 BPX MESSAGEBOXA 拦截消息窗口,很快可以找到下面这段代码,将 405F49 处的判断改为 JMP 就可以了!
<br />
<br />:00405F3F 668B8455E0FEFFFF      mov ax, word ptr
<br />
<br />:00405F47 3BC8                  cmp ecx, eax
<br />
<br />:00405F49 7433                  je 00405F7E
<br />
<br />    再运行一下,怎么样?省了60多元钱了吧,请我喝可乐哦!啊?凌晨3点多了,可乐也喝完了,改收工了。

<br />
頁: [1]
查看完整版本: CCED破解实战