首页
社区
课程
招聘
[原创]IOS游戏辅助--天天酷跑助手的实现
2014-4-16 20:20 23084

[原创]IOS游戏辅助--天天酷跑助手的实现

2014-4-16 20:20
23084
继上一篇<<IOS游戏辅助--QQ斗地主记牌器的实现>>,下面继续和各位探讨下"天天酷跑"这款游戏辅助的关键实现,分析思路和记牌器一致,所以下面就只贴主要的实现代码.

1. 查找要 Hook 的函数
   用IDAPro打开叉叉助手里关于天天酷跑的游戏插件--xxKPPlugin.dylib, 对 MSHookFunction 函数查找引用,会发现该dylib对符号名如下的函数进行Hook,

_ZN10BreezeGame10StarAIComp17ComputeBonusScoreEv

_ZN10BreezeGame8GameData8AddScoreERKNS_9ScoreDataENS_9ScoreTypeEi

_ZN10BreezeGame8GameData11GetXYFWCCJLEv
_ZN10BreezeGame8GameData20GetLuckyRushDistanceEv

_ZN10BreezeGame13MonsterAIComp12IsCollidableEv
_ZN10BreezeGame15BreakableAIComp12IsCollidableEv
_ZN10BreezeGame14AeroliteAIComp12IsCollidableEv

_ZN10BreezeGame12PlayerAIComp17UpdatePropsEffectEf
_ZN10BreezeGame13PlayerManager11IsCurMagnetEv


2.搜寻真实函数
用IDA Pro 打开天天酷跑的二进制--BreezeGame,搜寻上面这些符号所对应的真正函数,如下所示,然后再发挥下你对单词的想象力,你基本能猜测到每个函数的作用.

// 奖励倍数
BreezeGame::StarAIComp::ComputeBonusScore(void) --> _ZN10BreezeGame10StarAIComp17ComputeBonusScoreEv
BreezeGame::GameData::AddScore(BreezeGame::ScoreData const&, BreezeGame::ScoreType, int) --> _ZN10BreezeGame8GameData8AddScoreERKNS_9ScoreDataENS_9ScoreTypeEi

// 飞行距离
BreezeGame::GameData::GetXYFWCCJL(void) --> _ZN10BreezeGame8GameData11GetXYFWCCJLEv
BreezeGame::GameData::GetLuckyRushDistanceEv(int) --> _ZN10BreezeGame8GameData20GetLuckyRushDistanceEv

// 自动穿透
BreezeGame::MonsterAIComp::IsCollidable(void) -->  _ZN10BreezeGame13MonsterAIComp12IsCollidableEv
BreezeGame::BreakableAIComp::IsCollidable(void) --> _ZN10BreezeGame15BreakableAIComp12IsCollidableEv
BreezeGame::AeroliteAIComp::IsCollidable(void) --> _ZN10BreezeGame14AeroliteAIComp12IsCollidableEv

// 道具延时
BreezeGame::PlayerAIComp::UpdatePropsEffect(float) --> _ZN10BreezeGame12PlayerAIComp17UpdatePropsEffectEf

// 无限吸金
BreezeGame::PlayerManager::IsCurMagnet(void) --> _ZN10BreezeGame13PlayerManager11IsCurMagnetEv

// 无限跳
不在导出函数里面,通过PatchMemory来实现的.

3. 查找游戏辅助函数
用IDA Pro打开 xxKPPlugin.dylib,定位到 XXAssistControl 类. 可以看到如下的游戏辅助函数


这些辅助函数的作用如下:
(set)hackAddScore:分数加倍
(set)hackFlyDistance: 设置飞行距离
changeisColliable: 自动穿透
changeisMagnet: 自动吸金
setDelay: 道具延时
changeCJ:无限跳

4. 辅助函数的实现
这些游戏辅助函数的实现基本一致,下面以设置飞行距离的函数为例来说明.
(set)hackFlyDistance:函数接受一个参数,表示飞行距离,然后赋值给全局变量 _hack_fly_distance;
对该变量查找引用,我们会发现,下面这两个函数会调用:

func_hook__ZN10BreezeGame8GameData11GetXYFWCCJLEv
func_hook__ZN10BreezeGame8GameData20GetLuckyRushDistanceEv

这两个函数实现都很简单,

func_hook__ZN10BreezeGame8GameData20GetLuckyRushDistanceEv:
调用OrigFunc,获得返回值,然后将hack_fly_distance赋值给返回的value.

func_hook__ZN10BreezeGame8GameData11GetXYFWCCJLEv,也是做着同样的事情.
代码如下:


4.1 分析 (set)hackAddScore : 分数加倍
这个函数,它的实现和飞行距离一致,代码如下:


4.2 分析changeisColliable: 自动穿透
代码如下:


4.3 分析changeisMagnet: 自动吸金
代码如下:


4.4 分析changeCJ:无限跳
无限跳前面的不一样的地方,是找到BreezeGame特定的Offset,然后将里Patch掉,填充为Nop指令(ARM的Nop指令是 0x00 ). 这里Patch 的地址是 offset = 0x000D5A8C,使用IdaPro 打开BreeZeGame,然后定位到该offset,你会发现这里确实是一个判断跳跃次数的地方,然后Patch掉就好,具体实现代码如下:



补充一下关于 memory patch 的代码,修改内存属性为可写,然后填充你要patch的内容,都比较简单,可以用来参考:


5. 总结
其实分析叉叉助手的游戏辅助其实都很简单,而游戏辅助运用到的技术也就是这些.
不过通过游戏辅助可以吸引到大批的用户来使用你的产品,然后再把这批用户转换为流量,然后再... 产品思路看起来不错,所以现在叉叉助手的百度搜索指数都非常高,基本上是360手机助手的一半,贴个图帮大家了解下叉叉助手的活跃度.
最后还是希望有同仁一块交流!


Author: coltor
Email(QQ): coltor#qq.com
交流群: 12399218 (欢迎各位童鞋加入讨论)

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (20)
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiaoabing 2014-4-16 21:07
2
0
IOS高大上
雪    币: 322
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
高军 2014-4-16 21:39
3
0
继续跟踪关注!
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhoshilong 2014-4-16 21:57
4
0
学习当中。
雪    币: 67
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小龙程序 2014-4-16 22:05
5
0
收藏学习,虽然还看不懂!
雪    币: 35
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vvLinker 2014-4-16 22:11
6
0
牛掰,都IOS辅助了
雪    币: 216
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lovecm 2014-4-16 22:38
7
0
学习,慢慢吸收!
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
white、、 2014-4-17 09:14
8
0
sum 用的好,
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GATEOX 2014-4-17 09:37
9
0
这个一看就是1.0.8.0版本的,酷跑1.0.10.0里面没那么好找了,不过楼主的教程很不错!.SO文件我来了~
雪    币: 2321
活跃值: (4028)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
熊猫正正 9 2014-4-17 10:09
10
0
谢谢分享
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
NightGuard 1 2014-4-17 10:33
11
0
这是老版本的,新版已经没符号表了。。
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
fosom 8 2014-4-18 09:39
12
0
持续关注
雪    币: 649
活跃值: (1673)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
pushmop 2014-4-18 13:50
13
0
IOS 高大上啊。
雪    币: 14
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
kgxxx 2014-4-18 19:24
14
0
楼主是在做哪块的?
雪    币: 2378
活跃值: (2242)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
gtict 2014-4-23 14:13
15
0
没符号表怎么解决
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋月夜 2014-5-8 18:47
16
0
mark
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kuelite 2015-1-25 18:57
17
0
叉叉助手你也不放过,不过好样的
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
笨鸟世纪 2016-11-11 13:00
18
0
加个好友q:80113366
雪    币: 345
活跃值: (90)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
龙幽 1 2016-11-15 16:09
19
0
不可能没有。。。
雪    币: 121
活跃值: (1517)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xxRea 2017-1-24 23:45
20
0
企鹅的游戏,大部分都去掉了符号表,求大腿指导方法
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
岁月q 2017-3-18 15:18
21
0
求安卓手游的教程视频,可以付费
游客
登录 | 注册 方可回帖
返回