最近了解到Xposed这个框架,真乃神器,有了它,你就可以在root过的Android手机上“为所欲为”了,像之前朋友和我安利的微信抢红包插件、各种定制的修改系统默认ui的插件阿都可以通过这个框架来实现,想想都是美滋滋~于是抽空倒腾了一下,先跑个demo看看吧
hook前的准备步骤:
1.先把手机root了(root了之前不用了的小米手机,root以前,小米系统是爸爸,root以后,有root权限的app都是爸爸)
2.安装Xposed框架下载链接戳这里
安装以后打开app,界面是这个样子的,红字显示未激活:
3.点击进入“框架”,看到XposedBridge.jar对应激活那一栏显示的是“---“,确实没激活
4.点击“安装/更新”进行激活,这时会弹窗提示是否获取root权限,当然要获取啦。然后系统会自动重启,重启以后再次进入app,可以看到XposedBridge.jar已经激活成功了,版本是54
demo---hook TextView的setText方法
情景:往输入框中写东西,点击按钮,文本框中获取输入框中的数据并显示
目标:hook TextView的setText方法,把内容进行篡改
代码如下:
然后就是写hook程序啦,写hook程序有四步:
1.引入Xposed Api
2.配置hook 程序信息
3.写hook程序
4.运行程序,启动hook模块
1.引入Xposed Api
首先需要下载Xposed Api的jar包:
之前看到安装的框架里XposedBridge.jar的版本是54,因此我这里下了个53版本的Api(剩下的只有81、82了,都比54大)
下载下来的jar包,放入新建的AS工程的libs文件夹下,然后将其添加为library。
在build.gradle中添加依赖:
2.配置hook程序信息
在AndroidManifest中添加meta-data:
3.写hook程序
需要实现IXposedHookLoadPackage接口,实现handleLoadPackage方法:
在handleLoadPackage中可以设置要hook的包名,这里指定了先前写好的demo的包名。然后在XposedHelpers.findAndHookMethod中指定要hook的类、方法及方法的参数类型。新建一个XC_MethodHook的实例,里面的beforeHookedMethod方法会在hook到的方法前执行,在这里可以获取到hook到的方法的参数,做一些自己的处理,我这里就把原文本之前加了个”hooked“,里面的afterHookedMethod方法会在hook到的方法后处理,可以设置方法的结果,这里没有做处理。
在写好hook程序以后,需要对其做一个声明,这样XposedInstaller才能找到它,这里需要main下新建一个assets文件夹,在assets文件夹下新建xposed_init文件,在这个文件里做hook程序入口类的声明:
4.运行程序,启动hook模块
运行程序,然后在XposedInstaller中勾选hook程序
再重启手机,hook程序就能生效了!
demo效果
可以看到textView中设置的text果然被hook程序做了额外处理,hook成功~~~