上一篇讲了Android hook框架Cydia,这一篇是Android hook的另一个框架Xposed,Xposed是一款广泛应用于安卓领域的开源框架。
其原理是Xposed框架主要通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。与采取传统的Inhook方式相比,Xposed在开机的时候完成对所有的Hook Function的劫持,在原Function执行的前后加上自定义代码。
本篇将基于Androidstudio3.4、Xposed-api:82演示Xposed框架开发的流程和关键接口,因为是最新的开发环境,因此在实际操作中花了不少时间来尝试,在这里记录下和网上教程不一样的地方。
Xposed同Cydia插件开发一样,都需要指定插件类入口、需要导入jar、需要权限声明。本篇案例的hook的对象还是上一篇中修改过的helloWord程序,目的是使用Xposed的插件将程序显示的"测试Cydia的Hook Dome"改为"测试Cydia的Hook Dome Xposed hook了"。
声明权限
在AndroidManifest.xml文件中application标签下增加如下固定标签:
<applicationandroid:allowBackup="tru