andriod hook工具xposed学习

一.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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值