吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11294|回复: 89
收起左侧

[原创] 单机游戏逆向分析:植物大战僵尸中文版破解学习

  [复制链接]
Panel 发表于 2022-3-10 17:25

单机游戏逆向分析:植物大战僵尸中文版破解学习

用到工具:CE、OD、植物大战僵尸中文版
原理:每个程序在window上都会分配得到4GB的虚拟内存,我们只需将其在该4GB上对应的逻辑和数值进行修改即可实现最简单的破解
例子:1.修改阳光反向增长
2.实现植物卡槽无冷却

1.挖掘阳光数据

0x1打开ce工具选择游戏进程选择打开按钮

1

1

0x2选好植物进入游戏后得到了50阳光的初始值,那我们ce选择精确数值4字节首次扫描

2

2

首次扫描出现了多个结果,那我们继续通过数据变化来继续跟踪

3

3

0x3在栽下一个向日葵以后阳光值变化为了0,那输入0再次扫描后就只得到了一个结果

4

4

0x4将该值添加到地址表,修改数值确认该值是否是阳光地址

5

5

更改后发现这个地址的值就是阳光的地址值
0x5我们此时知道这个地址的值就是阳光的地址值,所以我们就可以通过查看是那些代码访问了或改写了这个地址的值,就比如我们看到游戏右上角的阳关数就是通过不停访问阳光的值显示此时的阳光数量,我们栽下植物后或者收集阳光后则是对这个地址的值进行了更改(增加或减少),那我们选中地址列表中对应地址的值按下F5来选择附件进程跟踪是什么访问了这个地址,如果打开这个窗口是空内容的话那就栽下或者收集阳光就可以出现内容了,那为什么会出现没有内容呢?因为这个窗口的内容是从我们附加游戏进程后来记录对应的访问和改写记录

6

6

0x6此时我们选择再栽下一棵植物来找最新的记录,然后查看这条指令所在的汇编代码

7

7

0x7打开反汇编界面以后,可以看到在我们跟进这条记录的前一条指令是sub esi,ebx
我们知道sub是相减指令,而且刚才我们是栽下了植物,阳光减少了,所以猜测这里的esi存是未更改前的阳光值,ebx存的是对应植物所需的阳光值,则[edi+0x5578]存的是此时阳光的值,那我们此时可以通过修改sub esi,ebx 指令为add sub esi,ebx来验证我们的猜想,如果我们栽下植物后阳光增加了对应栽下植物所需的阳光就说明我们的猜想就正确了,此时阳光是9899,那我们栽下一个寒冰豌豆175试试

8

8

0x7果然,我们的猜想正确,那我们选中此时的add esi,ebx按下CTRL+G来查看这条指令的虚拟地址,并且把它记录下,00427694

9

9

2.挖掘卡槽冷却数据

0x1这里我们采用和挖掘阳关数据一样的方法来跟踪数据,即卡槽没在冷却则为一个状态值,在冷却为一个状态值,这里我们通过猜测状态值为1、0来挖掘(不对再通过模糊搜寻来挖掘),这里注意用状态值时基本都是字节类型,所以要记得更改数值类型再搜索

10

10

0x2最后找到22个可以数据我们全部把这些地址值加入地址列表,然后通过二分法来批量修改验证知道找到最后的卡槽冷却数据,这里我就不说二分法具体怎么用了,大家可以百度,最后我找到卡槽状态的地址值是0x1F5B2438(临时数据,不是特征,我只是说一下我找的数据方便接下来讲解),此时我们知道我们之所以看到植物卡槽的状态灰与亮都是由这个值来决定,那我们依旧采用挖掘阳光数据的方法去查找那些指令访问了这个地址,查看汇编代码

11

11

mov byte ptr [esi+49],00
mov byte ptr [esi+48],01
0x3mov byte ptr [esi+49],00代码是我载下植物时候产生的访问或者改写记录,可以看到上面两行代码一个赋值00,一个赋值01,那我们就将00改为01试试,发现依旧没实现无冷却,那么我们分析指令,发现以上两行指令是在一个jle条件不成立的情况下才会执行,那我们直接把jle那行指令nop了,让它无论什么情况都执行一下两行代码
mov byte ptr [esi+49],01
mov byte ptr [esi+48],01
0x4更改后发现的确没存在了冷却,和挖掘阳光一样,记下这几条指令的地址0049CE02

12

12

3.此时所有的修改都是内存中的值,都是临时,所以我们接下来用od对其进行永久性更改

0x1先对阳光反增长逻辑指令定位更改,CTRL+G跳转到00427694,将sub 该为add

13

13

0x2对卡槽冷却逻辑定位更改,CTRL+G跳转到0049CE02,jle用二进制填充,mov byte ptr ds:[esi+0x48],0x0改mov byte ptr ds:[esi+0x48],0x1

image-20220310171532420.png

0x3右键保存所有更改,再次运行更改后的程序发现已经实现阳光反向生长和卡槽无冷却

注意:以上所涉及到的工具和技术均只是用来学习分析!请勿利用其做任何违反国家法律、侵犯他人商业利益!

免费评分

参与人数 24吾爱币 +22 热心值 +24 收起 理由
YichenYC + 1 + 1 我很赞同!
wirhttn + 1 + 1 用心讨论,共获提升!
peaplay + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
panglihuan + 1 热心回复!
51QAQ + 1 + 1 谢谢@Thanks!
henaliu + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
nowthink + 1 + 1 我很赞同!
diwuc + 1 + 1 我很赞同!
llk0 + 1 热心回复!
meiyangyang1 + 1 我很赞同!
sigewangdaiduie + 1 + 1 热心回复!
杨辣子 + 1 + 1 谢谢@Thanks!
叶无道 + 1 + 1 热心回复!
z7138910 + 1 + 1 热心回复!
小白2555 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
izhoupeng + 1 + 1 我很赞同!
0620zhao + 1 + 1 谢谢@Thanks!
紫云剑主 + 1 + 1 用心讨论,共获提升!
bingshen + 1 + 1 谢谢@Thanks!
ycc2090 + 1 用心讨论,共获提升!
coder9527 + 1 + 1 热心回复!
志宇 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
维京海盗 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

GuiXiaoQi 发表于 2022-3-11 22:19
很简单易懂,楼主出个怎么破壳
blackrabbit2022 发表于 2022-3-14 20:29
Panel 发表于 2022-3-10 17:28
调试程序下载地址:https://www.aliyundrive.com/s/9ZBbLCSmPxz

这个是破解好的程序么?原文件是什么版本号?
 楼主| Panel 发表于 2022-3-10 17:28
调试程序下载地址:https://www.aliyundrive.com/s/9ZBbLCSmPxz
anyingaerfa 发表于 2022-3-10 17:30
感谢楼主分享
火蜥蜴 发表于 2022-3-10 17:32
Panel 发表于 2022-3-10 17:28
调试程序下载地址:https://www.aliyundrive.com/s/9ZBbLCSmPxz

里面是空的。
 楼主| Panel 发表于 2022-3-10 17:33

等我更改一下。可能是压缩包格式的问题
Andy6ro 发表于 2022-3-10 17:34

感谢楼主分享
 楼主| Panel 发表于 2022-3-10 17:35

已经更改,可正常下载
nljzl 发表于 2022-3-10 18:08
谢谢分享,我也试试看
林瑾瑜 发表于 2022-3-10 18:09
感谢楼主分享!!
y72463700 发表于 2022-3-10 18:25
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 05:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表