返回首页

微信公众号

0x4.U3D游戏逆向修改深化-2

U3D游戏逆向修改深化-2 : U3D单机游戏修改分析实战


本文主要介绍某网站下载的修改版游戏的分析过程,对于初学者来讲,参照已修改游戏进行学习是很有效的学习途径。




本文样本是某游戏网站下载的已修改的游戏,与基础篇中的丛林方块有些类似,都是修改了金币的数量。

游戏样本地址 链接:https://pan.baidu.com/s/1t7k4mg5htSrrQKeXtwkj8Q 密码:tyxc

< 文中的apk修改仅用于研究学习,如涉及权益侵犯请随时联系处理。 >


我们照旧先安装看一下这个游戏都有哪些地方处理过或者需要处理:



发现两个异常点:1.打开游戏后有两次破解版本更新提示   2.金币被锁定为100100100

接下来开始我们这节课的内容:修改分析之数值搜索、代码对比、关键字搜索。


0x1.数值搜索

在基础课程中,我们已经讲过数值搜索了,这里我们再讲一遍,不过工具我们不再是用ildasm,而是dnSpy。

1.1  确认脚本文件

1
‘assetsbinDataManagedAssembly-CSharp.dll’

1.2  搜索数值

打开dnSpy,将Assembly-CSharp.dll拖拽进dnSpy打开,在搜索选项中选择“数字、字符串”搜索100100100。


1.3  修改数值

得到结果 get_coins,双击后可查看已修改的函数,在 “return 100100100”处右键单击,然后选择“编辑IL指令”,就可以看到IL指令。





如果要再次修改,将其修改为我们所需数值的十六进制形式即可。


0x2.代码对比

代码对比在破解版游戏分析是非常有用,可以帮助我们学习破解版是怎样进行修改的。

那么,既然要对比,我们就需要有一个未破解的版本用来做参照才可以实现对比,于是我们找来了这个样本的原版。

原版样本地址 链接:https://pan.baidu.com/s/1dy43mrper5oMvLKigkF1vg 密码:6ylh

< 文中的apk修改仅用于研究学习,如涉及权益侵犯请随时联系处理。 >

接下来我们对比一下原版和破解版反编译后的文件夹,看一下apk打开时的版本更新提示是哪些代码实现的。对比工具我们采用Araxis Merge。



破解版插入了如下smali文件,并在两处NativeActivity中对其进行了调用,也就是我们看到的两次更新提示窗口。



调用代码如下:

1
2
const/16 v0, 0x485a
invoke-static {p0, v0}, Landroid/support/v4/os/UnityPlayerup;->c(Landroid/app/Activity;I)V

java代码表示为(可在jd-gui中查看):

1
UnityPlayerup.c(this, 18522);


我们要去掉这个提示的话,删除这个调用即可。在此不具体分析所插入版本更新窗口的代码,有兴趣的可以分析看一下。

dll脚本也可以进行对比分析,需要用ildasm将其反编译为il代码,然后将原版和破解版的il文件进行对比,具体不做演示,大家自己尝试。


0x3.关键字搜索

这部分主要提供给大家一些可利用的搜索关键字,可用于金钱、属性等各方面的搜索。

3.1  金钱类

1
2
金币      gold、coin
钻石      Gem、diamond

3.2  属性类

1
2
3
4
5
6
生命      health、life、HP、Max HP
魔法      mp、sp、Power
冷却      CD、CoolDown、CoolTime
攻击      attack(atk)、fight、hit、damage
防御      defence(def)
速度      speed、movespeed、attackspeed
3.3  其他类

1
2
3
登录      login、sendlogin、loginserver
弹窗      Dialog、ShowDialog
按键      Button
以上只是介绍部分关键词,更多关键词需要大家在实践中总结积累。

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册