• 标 题:《冠军足球经理2001》免光盘破解实录_供菜鸟阅读 (5千字)
  • 作 者:sinco
  • 时 间:2002-1-22 0:24:44
  • 链 接:http://bbs.pediy.com

《冠军足球经理2001》免光盘破解实录
  啊,太爽了!破解成功的滋味就是一个爽字。你尝过没?NO? 跟我来。
  《冠》是我第一个自立破解成功的软件。我是一个初学者,很多关于破解的知识还不懂,但我却能破解成功,我想实践是最重要的。之前我跟着一些破解实录破过readbook和flashget,虽是依样画瓢,不懂其所以然,但是掌握了如何使用工具,如S-ice,trw2000,pw32dsm,Winhex等。不过这些实录太过程化了,不好理解。我写这篇文章一是为了和大家分享我的快乐,二是希望能给初学者又一个比较好的破解实录。
  我的《冠》是D版的,两张盘,B盘是中文版安装盘,安装后运行《冠》要检测A盘有没有cm0001.exe文件(其实D商可以在B盘刻上这个文件,我就不用多花五块大洋,可见D商同时是J商),检测了二三十次之多(是怎样知道的?我用Filemon监视过)。接着怎么干呢?这里我不建议用pw32dsm对《冠》的执行文件cmc.exe反汇编,一是cmc.exe很大,反汇编要很长时间;二是反汇编后的代码跟我在Trw2000里看到的不同,不知是不是pw32dsm的错误(望指教)。我是用Trw2000跟踪的。
  启动Trw2000,点浏览,选择cmc.exe,点Load,《冠》就开始运行。在cmc.exe的程序入口trw2000会将其断下来。这时trw2000窗口弹出,我们输入bpx GetDriveTypeA(这是在cmc请求系统读取盘符时设置断点),接着按Ctrl+N回到游戏(也可在游戏里出现要求光盘对话框后按Ctrl+N进入trw2000设同样的断点,按Ctrl+N回到游戏,点确定),在游戏处理数据库开始时就会请求系统读取盘符,trw2000将其断下,弹出trw2000窗口,断点显示在:
KERNEL32!GetDriveTypeA
0167:BFF77997  57            PUSH EDI
断点是在系统里,我们输入bd * 屏蔽掉设的断点,不断按F10单步运行,直到进入cmc领空(在trw2000窗口中显示出cmc时就是到了cmc领空),这时代码显示如下:
0167:007BF743  FFD7          CALL EDI
    007BF745  83F805        CMP  EAX,BYTE +05
    007BF748  7574          JNZ  007BF79E        //在这里会跳走,不过再按几下F10又回来了(大概是判断光盘吧,请指教),经过几次的循环后就向下执行
    007BF74A  6A65          PUSH BYTE +65        //65的ASCII码是'E'
    007BF74C  6A78          PUSH BYTE +78        //78的ASCII码是'X'
    007BF74E  6A65          PUSH BYTE +65        //65的ASCII码是'E'
    007BF750  6A2E          PUSH BYTE +2E        //2E的ASCII码是'.'
    007BF752  6A31          PUSH BYTE +31        //31的ASCII码是'1'
    007BF754  6A30          PUSH BYTE +30        //30的ASCII码是'0'
    007BF756  6A30          PUSH BYTE +30        //30的ASCII码是'0'
    007BF758  6A30          PUSH BYTE +30        //30的ASCII码是'0'
    007BF75A  6A6D          PUSH BYTE +6D        //6D的ASCII码是'M'
    007BF75C  6A63          PUSH BYTE +63        //63的ASCII码是'C'
    007BF75E  56            PUSH ESI
    007BF75F  8D9424F8030000      LEA  EDX,[ESP+03F8]
    007BF766  68E4AD9000    PUSH DWORD 0090ADE4
    007BF76B  52            PUSH EDX
    007BF76C  E82ECB1000    CALL 008CC29F
    007BF771  8D842404050000      LEA  EAX,[ESP+0504]
    007BF778  55            PUSH EBP
    007BF779  8D8C2404040000      LEA  ECX,[ESP+0404]
    007BF780  50            PUSH EAX
    007BF781  51            PUSH ECX
    007BF782  E8A986CFFF    CALL 004B7E30
    007BF787  83C440        ADD  ESP,BYTE +40
    007BF78A  85C0          TEST EAX,EAX
    007BF78C  7468          JZ  007BF7F6        //注意,重点!
    007BF78E  8D9424D0040000      LEA  EDX,[ESP+04D0]
    007BF795  52            PUSH EDX
    007BF796  E80588CFFF    CALL 004B7FA0
    007BF79B  83C404        ADD  ESP,BYTE +04
    ........
继续往下走
    007BF7E7  50            PUSH EAX
    007BF7E8  51            PUSH ECX
    007BF7E9  E8E233DFF    CALL 005B2BD0        //过了这个CALL就自动回到游戏,弹出要求放入游戏光盘的对话框。说明了什么呢?
  说明从007BF743到007BF7E9就是在检测游戏光盘,那么里边一定有当满足条件就跳出这个循环的代码,赶快找找,发现在007BF78C可疑(其代码JZ  007BF7F6是当EAX为0就跳到007BF7F6),显然007BF7F6是在循环外,那么将JZ改为JNZ(非0跳走)不就行了吗。
  这时我们可以试一试令EAX为0。当按F10单步执行到007BF78A时,输入R(修改暂存器内容命令),trw2000里的光标会在'EAX=FFFFFFFF'(我没放光盘嘛)处闪烁,我们输入0并确定。好,'EAX=00000000'了,按两下F10,果然跳出去了。按Ctrl+N回到游戏,对话框不见了,进度条飞快的跑起来,仿佛光明就要到来。啊~,该死的对话框又来了。想一想,哦!不是要检测二三十次嘛,该死的《冠》。
  能否用83 C4 40 85 C0 74 68在16位编辑器Ultraedit或Winhex里查找并改为83 C4 40 85 C0 75 68(74=JZ,75=JNZ),事实是不行的,这么短的代码有很多相同的,我试过。怎办?
只能一遍一遍来啦。
  经过漫长的重复的工作后(重复上面的工作,地址不同,但汇编还是相同的),终于当上曼联的主教练。哈哈哈!记住!一定要将JZ附近的16进制代码记下来,记到纸上哦,也可记到大脑里,只是三十多条罢了。不记得也没关系,下面就是:
E8A986CFFF 83C440 85C0 7468 8D9424D0040000
E8ACC3C9FF 83C440 85C0 746F 8D8C24E4050000
E87114EFFF 83C440 85C0 7468 8D8C2470050000
E89CCBD2FF 83C440 85C0 7468 8D8C2484050000
E85541D9FF 83C440 85C0 7468 8D8C24DC030000
E82B8EF2FF 83C440 85C0 746F 8D9424F8030000
E86FAEC2FF 83C440 85C0 746F 8D8C2470030000
E866AAFFFF 83C440 85C0 7468 8D8C246C030000
E88511CCFF 83C440 85C0 7468 8D8C24E8030000
E8588FDEFE 83C440 85C0 7468 8D942418040000
E86A190800 83C440 85C0 746F 8D8C24E4050000
E81515D6FF 83C440 85C0 746E 8D8C241C070000
E8A4320800 83C440 85C0 7468 8D8C24E0050000
E8D630EFFF 83C440 85C0 7468 8D8C24DC030000
E88204F9FF 83C440 85C0 7468 8D8C24E4030000
E8B9800A00 83C440 85C0 7468 8D8C247C030000
E8105BECFF 83C440 85C0 7468 8D8C24E0030000
E83A12C2FF 83C440 85C0 7468 8D8C2470030000
E875A9CCFF 83C440 85C0 7468 8D8C246C030000
E8BCE6F3FF 83C440 85C0 7470 8D8C24E8050000
E842C5CCFF 83C440 85C0 7468 8D8C2470030000
E864D1D3FF 83C440 85C0 7468 8D8C246C030000
E8ADE2F4FF 83C440 85C0 7468 8D8C2474050000
E85A9BFFFF 83C440 85C0 746F 8D8C2490030000
E85F2EC7FF 83C440 85C0 746F 8D9424F4030000
E8D684D7FF 83C440 85C0 7468 8D8C24DC030000
E820B4E7FF 83C440 85C0 7468 8D8C24DC050000
E89513D8FF 83C440 85C0 7468 8D8C246C030000
E8F0A5CDFF 83C440 85C0 7468 8D8C24F8030000
E852D1C0FF 83C440 85C0 7468 8D8C2470030000
E82DE2C7FF 83C440 85C0 7468 8D8C2470030000
将这些代码里的74改为75就行了,用Ultraedit或Winhex的方法不用我讲了吧。
我在上面已经说过我是一名初学者,错误在所难免,希望和大家探讨探讨。我的Email地址是sinco@21cn.com。

  • 标 题:这类型的光盘游戏还是用pw32dsm爽。 (127字)
  • 作 者:fwnl
  • 时 间:2002-1-22 11:39:01

找到要所有要 cd 的 字符串,一般就可看到如
TEST EAX  EAX
jz xxxxxxxxx
记下地址代码,用16进制编辑器,改就ok
不过有些游戏行不通