美文网首页
hook实践---Xposed框架hook源代码

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

作者: 烧饼正努力 | 来源:发表于2017-12-25 22:21 被阅读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成功~~~

    相关文章

      网友评论

          本文标题:hook实践---Xposed框架hook源代码

          本文链接:https://www.haomeiwen.com/subject/ovlrgxtx.html