有关Xposed框架的说明有一大堆,这篇blog写得比较详细。最近也在利用Xposed框架开发基于短信的应用,这里进行总结一下。
Xposed框架是是GitHUB上rovo89设计的一个针对Android平台的动态劫持项目。通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。与采取传统的Inhook方式相比,Xposed在开机的时候完成对所有的Hook Function的劫持,在原Function执行的前后加上自定义代码。
因为Xposed工作原理是在/system/bin目录下替换文件,在install的时候需要root权限,但是运行时不需要root权限。此外,需要在Android 4.0以上版本的机器中才能运行。
Xposed的部分核心源码在github上是开源的,主要的模块和包如下:
XposedBridge.jar
Xposed提供的jar文件,负责在native层和framework层进行交互,Android系统的/system/bin/app_process进程启动过程中会加载该jar包,Xposed框架所有Modules的开发与运行都是基于该jar包的支持Xposed
Xposed框架中的C++部分,主要用来替换app_process文件,同时为XposedBridge提供JNI方法XposedInstall