一.xposed工具简介
1.它部署在ROOT后的安卓手机上,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。可以让我们在不修改APK源码的情况下,通过自己编写的模块来影响程序运行的框架服务,实现类似于自动抢红包、微信消息自动回复等功能。
2.从本质讲xposed模块也是安卓程序,要想让写出的Andriod程序成为一个xposed模块,要完成以下四个硬件任务:
1. 让手机的xposed框架会知道我们安装的这个程序是个xposed模块
2. 模块里要包含xposed的API的jar包,以实现下一步的hook模块
3. 这个模块里面要有目标程序进行hook操作的方法
4. 要让手机上的xposed框架知道,我们编写的sposed模块中, 哪一个方法实现hook的操作
即::::对应四大件(与以上四个任务一一对应)
1. AndroidManifest.xml
2. XposeBridgeApi-xx.jar与build.gradle
3. 实现hook操作的代码
4. xposed_init<添加入口>
二.创建项目
1.root的手机(或模拟器)上安装Xposed Installe
2.打开andriod studio 编辑器,创建空白项目
3.将项目查看方式设置Project模式,在"项目名/app/main/"的目录下找到
AndroidManifest.xml文件,并在如下位置插入以下代码:
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="这是一个Xposed例程" />
<meta-data
android:name="xposedminversion"
android:value="53" />
位置如下图:
4.导入XposedBridgeApi.jar包
方法一:自动导包
在"项目名/app/"目录下找到build.gradle文件,在图示的位置加代码如下:
repositories {
jcenter()
}
及
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
这句代码告诉android studio使用jcenter作为代码仓库,从这个仓库里面远程寻找
具体位置如下图:
方法二:手动导包
1.将下载的的.jar包复制到"项目名/app/libs"下
2.选中要导入的包 鼠标右击 点击Add As Library…
5.开始编写hook代码
1.在"项目/app/src/mainjava/包名"写代码
代码略
6.添加入口
1.在"项目名/app/src/main"目录先创建assets文件夹在该文件夹中创建名为xposed_init文件,文件中内容为 包名.写的hook类名
注:文件中的内容一定没有"package"这个单词
创建assets文件的方法如图
复制xposed_init的内容如下:
选中写的hook类的文件,鼠标右击,点击Copy Reference然后直接粘贴到xposed_init文件中即可
小知识:
在build.gradle文件中compile和provide的区别:
compile汇编
compile 把jar在项目运行的时候, 编译并且程序在打包为apk的时候也发布到apk里面去
provided提供,假设,
项目在编译或者运行的时候,会调用其描述的jarapi但是项目被发布为apk的时候,不会打包到apk中
文件打成.jar命令:
jar -cvf *****.jar 需要打包的文件
运行.jar包:
在这里插入代码片
java -jar myjar.jar
给jar包添加main class入口:
java -cp myjar.jar com.example.MainClass