本文主要是介绍Android Xposed框架 -- 开发篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Xposed模块
一、简介
【1】基于前面对Xposed框架的学习,下面将演示如何使用Android Studio创建并编写一个自定义的Xposed模块
【2】目标APP功能:点击按钮时,调用toastMessage()方法,弹出一个“我未被劫持”的Toast信息
【3】Xposed模块功能:实现对toastMessage()方法的Hook,并返回一个“你已被劫持”的字符串信息
Xposed框架API:http://api.xposed.info/reference/packages.html
二、模块开发流程
【1】目标APP:新建一个Activity,并添加一个按钮,实现目标APP的功能
【2】gradle配置:app/build.gradle文件中添加Xposed API对应的依赖
Note >>> 这一步也可以通过下载导入XposedBridge.jar的方式完成
1,下载链接:https://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067
2,安装参照教程:https://miketech.it/android-xposed-carrier-edit/
【3】AndroidManifest配置:application标签下添加3组meta-data配置
【4】Xposed模块:新建一个类HookToast,并实现IXposedHookLoadPackage接口
1,实现IXposedHookLoadPackage接口中的handleLoadPackage方法,并首先筛选到我们目标程序的包名
2, 调用XposedHelpers中的findAndHookMethod方法,对MainActivity中的toastMessage方法进行Hook
3,在Hook回调中的beforeHookedMethod或afterHookedMethod方法里进行劫持操作
【5】assets目录下创建xposed_init文件:告诉Xposed框架模块的主入口类
1,添加assets文件夹:右键点击 app这个module --> new --> Folder -->Assets Folder,然后确认即可
2,创建xposed_init文件:assets中new一个file,并在其中写上入口类的完整路径
【6】关闭Android Studio的Instant Run功能,否则直接run会报错
【7】运行项目:结果如下所示
Note >>> 因为Xposed框架是从根上Hook了Android Java虚拟机,所以需要Root权限,并且每次为它启用新插件APP时都需要重新启动才能生效!!!
【8】开启Xposed模块并软重启
1,选中模块
2,选择重启
3,运行结果
至此,一个简单的xposed模块就编写完成了,并且可以看到劫持篡改后的结果。
-------------------------------------------------------------------------------------------------------------------------------
【讨论】???直接手机重启,一直是未劫持,上面流程中是使用xposedInstaller进行软重启后的运行效果
两种重启方式对应的日志,如下所示:
三、参考资料
【1】http://blog.csdn.net/mrglaucusss/article/details/50963542?utm_source=itdadao&utm_medium=referral
【2】http://www.jianshu.com/p/2b8343c774df#
这篇关于Android Xposed框架 -- 开发篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!