• 369阅读
  • 0回复

任鸟飞安卓手游逆向----无敌 [复制链接]

上一主题 下一主题
离线任鸟飞
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2017-12-18
对于一款弱联网的手游来说,实现无敌的方式有很多,下面我们对《狂暴之刃》进行静态调试,实现无敌功能。

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,即可达到无敌的效果。

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

通过010Editor编辑工具对so文件进行改写
0075D228
01 00
00
CA
改为
0F
02
E0
E3
0075D22C
01 30
A0
E3
改为
00
30
A0
E3
重编译APK后即可测试效果(如图)
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个