hook实践---Xposed框架hook源代码

2017-12-25  本文已影响502人  烧饼正努力

最近了解到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成功~~~

上一篇下一篇

猜你喜欢

热点阅读