找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 257|回复: 0

任鸟飞安卓手游逆向----无敌

[复制链接]

管理员

Rank: 9Rank: 9Rank: 9

阅读权限
200
积分
109298
精华
71
主题
138
帖子
154
分享
0
日志
0
在线时间
54 小时
最后登录
2018-4-22
注册时间
2016-11-22
听众
0
收听
0
发表于 2017-12-18 11:52:52 | 显示全部楼层 |阅读模式
对于一款弱联网的手游来说,实现无敌的方式有很多,下面我们对《狂暴之刃》进行静态调试,实现无敌功能。

Androidkiller反编译得出APK基于Cocos2D(如图)

IDA加载libGodOfWarcpp.so,导出函数中搜索Hp得到很多结果(如图)
MyData::getHeroHP很明显是获得英雄HP的函数,我们通过该函数入手继续分析。跳转到该函数的所在的汇编代码处,通过交叉引用发现函数被EnemyActor::checkHeroBehit调用,而函数很明显和被攻击相关。跳到该函数所在汇编代码处,发现该函数中有大量的交叉引用,也就是说有很多判断和跳转,F5还原代码后对函数进行整体的观察,我们发现了一个很关键的函数,也就是EnemyActor::HeroSubHP函数(如图)

该函数是英雄的扣血函数,我们只需要改变函数的返回值为0即可达到无敌的效果。进入EnemyActor::HeroSubHP函数内部进行观察,发现这里有三处if语句,第一处和扣血量的计算相关,而第三处则和扣血的显示相关。(如图)


第三处跳转的作用可以理解为,如果计算结果不大于0,则结果赋值为1,也就是说如果怪物对英雄的伤害结果小于或者等于0,则强制扣血1点,我们只需要将跳转去掉,直接赋值v21为0,即可达到无敌的效果。

在反汇编窗口中找到改调代码,记录下地址(如图)

通过010 Editor编辑工具对so文件进行改写
0075D228
01 00
00
CA
改为
0F
02
E0
E3
0075D22C
01 30
A0
E3
改为
00
30
A0
E3
重编译APK后即可测试效果(如图)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|鑫郁飞网络科技有限公司 ( 渝ICP备16011958号-1 )

GMT+8, 2018-4-22 16:30 , Processed in 0.072117 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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