首页
社区
课程
招聘
[原创]【外挂分析】《天下任我行》外挂实现原理分析
发表于: 2017-11-27 15:00 4694

[原创]【外挂分析】《天下任我行》外挂实现原理分析

2017-11-27 15:00
4694

天下任我行是一款修改定位信息的外挂工具,本文针对该工具的实现原理进行深入分析。


外挂实现原理分析


   外挂的原理大致来说,就是通过进程注入,注入Android的服务进程——system_ server。System_server进程是系统服务的主入口,其他应用程序对系统服务的调用,会通过进程通信的方式把调用传递过来,最终在system_server中实现,并返回结果。因此外挂直接对system_server中的具体实现服务的类进行了替换,接管了定位组件会用到的所有服务,包括wifi、基站、gps等。Dex中会加载一个so文件,用来实现类的替换,就是常见的java hook的方式。

1、注入system_server

游戏使用的是常见的注入器,使用了常规的Ptrace注入,注入后会删除自身。使用工具在特定时机可以把注入器dump出来。注入器也使用了一定的对抗手段,对于字符串有做动态解密。

2、hook service

注入器最后会加载外挂的主逻辑dex,主逻辑dex有做Java层混淆,包括代码混淆和字符串加密。字符串加密通过直接重写外挂的解密逻辑,经过分析,确认了其中的一些关键逻辑,以及实现方式,并作了相关的注释和改名。下面列举几个关键点的代码截图:

Java hook service

上图可以看出外挂对这些服务都做了篡改。具体的hook实现如下图:

外挂为了实现方便,有一个自实现服务baseService,所有的伪装类都继承自这个基类,这个基类的onTransact函数会在一系列判断会调用子类实现的new_onTransact,如图:

以lac服务为例,简单看一下相关服务实现代码。首先在初始化的时候拿到各个关键transact的服务code,如图:

具体的onTransact函数,如图:

    以上便是天下任我行工具修改定位功能的实现原理。





 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
2
它so层的java hook应该是逆向参考了 LBE安全大师的主动防御功能
com.lbe.security.service.core.client.proxy.ServiceProxy.nativeEnableProxy

很久以前大概逆过一些,主要是处理 New_OnTransact() ...



参考资料:
2017-11-27 16:29
0
雪    币: 190
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
能不能分享下端游外挂源码,我要AS的工程文件,不要带模块
2017-11-27 20:14
0
游客
登录 | 注册 方可回帖
返回
//