当前位置 博文首页 > xyl192960的博客:C1认证:【任务01】修改《植物大战僵尸》存档

    xyl192960的博客:C1认证:【任务01】修改《植物大战僵尸》存档

    作者:[db:作者] 时间:2021-09-16 15:55

    C1认证:【任务01】修改《植物大战僵尸》存档信息

    右侧目录自行选择跳转

    本篇内容目标:
    1、修改《植物?战僵?》的存档?件,能跳到指定关卡例如5-1
    2、修改《植物?战僵?》的存档?件,将金钱数量修改为指定数量
    3、通过修改解锁关卡后能解锁「迷你游戏」
    4、通过修改解锁关卡关卡后能解锁「?存模式」

    本篇内容涉及的知识:
    1.使用进制编辑器对文件进行打开编辑操作。
    2.简单的分析游戏存档文件
    3.使用系统自带计算器对16进制进行换算

    下载链接:
    植物大战僵尸纯净版
    进制编辑器UltraEdit
    提取码:8gz6

    任务步骤分析

    1.找到存档文件的位置。
    2.使用16进制编辑器对其进行打开编辑分析。
    3.大胆猜测16进制数值可能代表的含义。
    4.通过实际测试求证结果。
    5.完成任务。

    开始任务

    1.找到存档文件位置

    首先我们需要先打开游戏,新建一个/多个用户,才能够生成存档文件,找到其位置。
    新建用户
    然后我们首要寻找的就是游戏根目录下有没有最新生成/修改的文件(需要资源管理器文件夹下找到“修改日期”一项进行分析)。
    而植物大战僵尸在根目录是找不到的,所以我们第二就要在C盘寻找,因为C盘是所有电脑都共有的磁盘,一般可能会存放在C盘的“ProgramData”(程序数据)目录下。
    通过在该目录下进行修改日期的查找,可以很快的找到存档文件位置位于“C:\ProgramData\PopCap Games\PlantsVsZombies\userdata”
    存档文件位置
    接下来就可以进入下一步分析存档文件

    2.分析存档文件and大胆猜测and实际测试分析

    我使用的是:UltraEdit,也可以使用其他的16进制编辑软件。

    初步分析:

    修改关卡

    通过分析2个新用户的存档文件的可以看到新用户的存档文件里面只有0C 00 00 00 01 其他位置全都是0,所以我猜测0C可能是一种头标识,而16进制01转为10进制也是01,很可能是2个新用户的共同初始关卡第一关。
    有了这个猜测之后我们进行修改验证,发现在这个位置的数值代表的就算关卡数,这样我们的第一个目标修改关卡数就可以实现了。

    分析
    修改关卡

    修改金钱

    接着修改金钱:
    首先我们需要在游戏中获得一定的金钱,才可以看到数据的变化位置。
    继续游戏在获得金钱后可以找到存档里面金钱的位置。
    存放金钱的位置在首行的 8 9 10(a)位置金钱位置
    在打开系统自带计算机,选中“程序员”模式,对十六进制的文件进行一个简单的换算分析。
    通过从0~F的一个修改测试,发现实际金钱=16进制数据转为10进制10
    比如在在08位的数值修改为FF,转为十进制=255,在255
    10=2550,实际金钱就是2550。
    注意:这个存档文件是“倒序输出”的,(例如要修改为10万金钱,就是在计算器输入10进制1万,在转16进制=002710,这里的002710不是按顺序修改到08 09 a的位置,而是,将00修改到a,27修改到9,10修改到8上),所以可能有些同学在修改测试大数量的时候按顺序去修改会跟实际对不上。
    如图:
    金钱分析

    解锁关卡

    我这里用的游戏是修改后的纯净版,可以直接解锁关卡,我们这里直接解锁关卡,并且对存档文件进行分析,看看有什么变化。
    (也可以通过自己手动解锁关卡去分析变化,不过比较耗时间)
    解锁关卡
    解锁后
    在所有关卡解锁后发现很多个位置都发生了变化,也就是说这些发生变化的位置就是关键信息,因此我们就可以对原始文档进行每一处的修改测试。
    这种存档文件应该是类似于结构体/类属性的一种数据,所以相关数据应该会保存在同一块位置,可以优先从最靠近已知数据的地方着手。
    我们从“金钱区”后面的c位置进行第一个修改,将其修改为01后,初始用户的关卡就全部解锁了。
    解锁全部关卡
    通过对其他位置的多次修改测试,最终找到
    迷你游戏:300h 00
    益智模式:300h 04
    生存模式:310h 08
    通过这几个位置的修改就可以实现解锁某模式的存档。
    完成任务

    完成

    总结

    本篇内容目标:
    1、修改《植物?战僵?》的存档?件,能跳到指定关卡例如5-1
    答:修改0x4(关卡范围好像是1~50)
    2、修改《植物?战僵?》的存档?件,将金钱数量修改为指定数量
    答:修改0x8 (注意要进行10进制转16进制后倒序修改)
    3、通过修改解锁关卡后能解锁「迷你游戏」
    答:修改0x300 >0则为开启
    4、通过修改解锁关卡关卡后能解锁「?存模式」
    答:修改0x310+0x8 >0则为开启
    最后附上植物大战僵尸的一篇 全解析文章【转载】

    cs