= 05、破 Clockz v1.1 ======================================================= clockz v1.1 请用 ARCHIE 找 clockz.zip 这是一个可显示世界各地的时间 (1) 输入名字,注册码...任意填(但这次注册码不要 填78787878了 ,可填中文 但不能太长) 按 ctrl-d 切入 winice 下 bpx hmemcpy (2) 按F5返回WIN95 按下OK (3) 被拦截,下 BD* 暂停中断 按F12 数下 到了 XXXX:0040BD6D (4) 按F10 数下 XXXX:0040BDD7 CALL [00413328] 再按一下F10,就跑出错误视窗 按一下F6,使游标跑到程式区,按PAGE UP 往上一看 XXXX:0040BDC2 JMP 0040BDDD 可跳过 XXXX:0040BDD7 CALL [00413328] 但程式没走到这一行, WHY?? 再往上一看, XXXX:0040BDA2 CMP [EBP-4],1 XXXX:0040BDA6 JNZ 0040BDC7 因此时有跳跃,所以啦! 按上下键调整使游标停在 XXXX:0040BDA2 按F9,就是设断 按F5,离开WINICE,再注册一次 (5) 在XXXX:0040BDA2 被拦,下 E EBP-4 1 的指令 就是改记忆体的值, 按F5 跑出了注册成功的画面了... 嗯 ! 有点爽了! 但依惯例,可能还没注册成功 只知此比较有问题而已 (6) 离开程式,再注册一次 在 XXXX:0040BDA2 被拦 分析以下几行 XXXX:0040BD9A CALL 0040CB2E XXXX:0040BD9F MOV [EBP-4],EAX XXXX:0040BDA2 CMP DWORD PTR [EBP-4],1 XXXX:0040BDA6 JNZ 0040BDC7 可知要另 EAX=1 才不会跳跃, 可知XXXX:0040BD9A CALL 0040CB2E 有问题,设断点 (7) 再注册一次,XXXX:0040BD9A CALL 0040CB2E 被拦下 按F8进入观察 , 目标 使 EAX=1 (8) 按F10 开始TRACE, 要按很久喔! 会上下来跑去, 想偷懒可下 G 0040CC37 可直接跳到 XXXX:0040CC37 到了 XXXX:0040CC37 CMP [EBP-4],00 XXXX:0040CC3B JNZ 0040CC8E <- 设断 跳到 0040CC8E 就GAME OVER 了, WHY? 看看程式就知 (9) 再注册一次,被拦截 若不是在XXXX:0040CC3B,可能是停在以前的断点 按F5, 到了 XXXX:0040CC3B 按一下 A 在按ENTER A 就是 组译的意思 XXXX:0040CC3B 要确定是在这个位址喔 JNZ 0040CC8E 的长度是六个BYTE,知道如何看吧... 我想让它不跳跃... 所以改成六个 NOP XXXX:0040CC3B NOP (按ENTER) XXXX:0040CC3C NOP (按ENTER) XXXX:0040CC3D NOP (按ENTER) XXXX:0040CC3E NOP (按ENTER) XXXX:0040CC3F NOP (按ENTER) XXXX:0040CC40 NOP (按ENTER) XXXX:0040CC41 不下任何指令,直接按ENTER 按F5,可执行了 画面左下角有个地球...按一下,选ABOUT 看到自已的名字了吧 注册码也看到了吧 如果刚才填78787878就... 由此可知刚才改城市是对的,可注册又不会影响程式执行 所以离开,重新注册,到了 0040CC3B 的地方, 下CODE ON 的指令 观察机械码... 所以用 ULTRAEDIT 编辑CLOCKZ.EXE 177152 BYTE 把 837DFC00 0F854D000000 改 -------- 909090909090 ------- 是不变的意思 就 OK啦! 这个软体也满好破解的 还在敝人的能力范围 希望大家破解了什么软体... 能post出来和大家一起分享... 大家彼此交流... thanks 我是习惯改机械码...因我比较懒嘛... 我很欣赏能把注册码算出来的人...