Android中免root的hook框架Legend原理解析

一、前言

Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdiankong.cn;但是这两个框架用于破解逆向是非常有用的,可惜他们最大的局限性就是需要root权限,这个几乎现阶段可能阻碍了很多产品的商业化,毕竟国内人的安全意识越来越高了。所以这里就需要借助一个免root的hook框架了。而对于免root的框架最大的好处就在于无需root权限,但是弊端就是只能hook自身,对于系统其它app无能无力,就有人好奇了,只能hook自己有个卵用,的确是没什么用,但是也并非一点用都没有。

 

二、免root的hook功能用途

关于Android中的Hook机制,我在之前已经说得非常详细了,大致就两个方式:

第一个方式:root权限,直接hook系统,可以干掉所有app。

第二种方式:免root权限,但是只能hook自身。

对于免root权限只能hook自身,并非一点用都没有,比如我之前介绍到的自动破解签名校验工具kstools,就是借助这个原理实现,不了解原理的同学可以看这里:Android中自动破解签名校验工具kstools,我们在破解逆向app的时候,需要反编译,二次打包,那么这时候其实我们想针对于这个app做点手脚,就可以借助这个技术,比如现在想改一个app,使得他获取系统的imei值是随机的,有这种需求的,有的游戏有的功能会用设备的imei值做唯一处理,随机imei值的话就可以跳过这个功能了。那么这时候我们可以反编译这游戏,在游戏入口处加上hook代码,即hook游戏自身的imei值即可,这就是需求,只需要hook这一款游戏即可。这样无需在用xposed来编写外挂了。游戏二次打包即可使用了。

 

三、以往hook框架原理分析

那么其实免root进行hook功能在之前我已经介绍过了一款阿里的开源框架Dexposed了,不过这个框架已经废弃了,取而代之的是AndFix,原理很简单在native层把Java层的方法强制改成native类型,然后在将方法的native标志指向自定义的native函数即可。这样原来的方法就会走到自定义的native函数中,这个框架是非常优秀的AOP框架,可惜兼容性问题不能继续维护了。取而代之的是AndFix,关于它的原理就更简单了,他没有了AOP功能,直接将原始方法和自定义的新方法信息进行对换,这样原来方法执行的逻辑就是新的方法了。这个框架主要用于热修复,所以没必要需要AOP功能了。而今天介绍的这款框架原理也是类似,只不过觉得比

你可能感兴趣的:(Android中免root的hook框架Legend原理解析)