-
-
[原创]【外挂分析】《天下任我行》外挂实现原理分析
-
发表于:
2017-11-27 15:00
4695
-
[原创]【外挂分析】《天下任我行》外挂实现原理分析
天下任我行是一款修改定位信息的外挂工具,本文针对该工具的实现原理进行深入分析。
外挂实现原理分析
外挂的原理大致来说,就是通过进程注入,注入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期)