xposed模块开发第一篇
安装xposed
我这里用的逍遥模拟器,安装XposedInstaller_3.1.5.apk,再点一下安装Version 89,重启模拟器;这样就安装完成了。
开发xposed模块
- Androidstudio新建一个工程
- 修改AndroidManifest.xml中添加声明
添加3个meta-data
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.xposed"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme">//这里添加3个meta-data<meta-dataandroid:name="xposedmodule"android:value="true"/><meta-dataandroid:name="xposeddescription"android:value="Xposed Demo"/><meta-dataandroid:name="xposedminversion"android:value="83"/><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
添加依赖
在build.gradle文件中的dependencies添加两行compileOnly ‘de.robv.android.xposed:api:82’
//非必要
compileOnly ‘de.robv.android.xposed:api:82:sources’
dependencies {compileOnly 'de.robv.android.xposed:api:82'//非必要compileOnly 'de.robv.android.xposed:api:82:sources'implementation fileTree(dir: "libs", include: ["*.jar"])implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'}
创建xposed_init
新建一个Assets目录
然后在Assets目录下创建xposed_init文件,New->File文件名xposed_init;在xposed_init里面写入模块的入口;
XposedBridge 从assets 目录中的xposed_init 文件中获取入口点。xposed_init文件中每行配置一个;
例如:我这里新建一个类名为xphook的类作为模块入口,
那xposed_init里面就写上xphook的路径:com.example.xposed.xphook编写hook模块代码
入口类xphook实现接口IXposedHookLoadPackage重写handleLoadPackage方法;
然后在handleLoadPackage方法添加自己的逻辑代码;
例如:我这里hook 系统的Toast事件,打印调用堆栈
public class xphook implements IXposedHookLoadPackage {@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {//hook ToastClass<?> clazz = lpparam.classLoader.loadClass("android.widget.Toast");if (clazz!=null){XposedHelpers.findAndHookMethod(clazz, "show", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {super.afterHookedMethod(param);try{throw new NullPointerException();}catch (Exception e){Log.i("vicHook","Toast show trace "+Log.getStackTraceString(e));}}});}}
}
运行xposed模块
在XposedInstaller的模块里面勾选上我们写的应用。然后重启模拟器;
新建一个测试应用打印一个toast消息,用来测试我们的hook模块
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toast toast=Toast.makeText(getApplicationContext(), "这是一个测试的Toast", Toast.LENGTH_SHORT);toast.show();}
运行查看log:
调用Toast.show的调用链就打印出来了
xposed模块开发第一篇相关推荐
- (译)Xposed模块开发教程
(译)Xposed模块开发教程 原文地址.这是开发者所写的,可以说是官方开发指南.文章讲述了Xposed的原理,以及怎么开发Xposed框架的模块.头一次翻译技术文档,有错误的话请多包涵. 好了,你想 ...
- Nginx 模块开发高级篇
Nginx 模块开发高级篇 变量 综述 在Nginx中同一个请求需要在模块之间数据的传递或者说在配置文件里面使用模块动态的数据一般来说都是使用变量,比如在HTTP模块中导出了host/remote_a ...
- Xposed模块开发指南
1.Xposed框架是什么? Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运行. ...
- Xposed模块开发教程整理
Xposed模块开发教程 Xposed官网 Xposed官方文档 Xposed框架介绍 了解和使用Android神器Xposed框架 Xposed模块开发 Xposed模块开发入门 在手机状态栏增加显 ...
- AndriodStudio 开发环境下实现Xposed模块开发入门。Xposed框架模块编写教程
前言: Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.Xposed 就好比是 ...
- 语音技术(百度语音)开发 - 第一篇
语音技术(百度语音)开发 - 第一篇 AI接入指南 短语音识别标准版.查看文档 短语音识别API文档 .调用流程.speech 参数填写.参数说明.等等 官方demo地址 创建应用.百度云平台 网上案 ...
- Xposed 模块开发入门
Xposed模块开发入门 阅读本文之前,你应该准备好以下事项: 安装 Android Studio,并完成配置 掌握 Xposed 的安装和使用方法 拥有阅读 Java 代码的能力 阅读本文之后你将掌 ...
- Xposed 模块开发笔记
相关文章: Xposed 模块开发入门 最近使用 Xposed 过程中遇到一些问题以及常识, 所以做下记录, 方便之后再次使用 MyLog 为自定义的日志输出类, 可以使用 XposedBridge. ...
- Xposed模块开发教程(一) 了解并使用Xposed
系列教程: Xposed模块开发教程(一) 了解并使用Xposed http://blog.csdn.net/u014418171/article/details/52910768 Xposed模块开 ...
最新文章
- 小米手机qq不读取相册照片_小米手机越用越卡怎么办?
- HTML marquee标签详解
- python图形模块_使用Python图形模块:有没有办法将当前窗口保存为图像?
- 我要嫁给一个程序员你们怎么看?
- 【codevs1041NOIP01TG】Car的旅行路线,最短路中的数学题
- Airflow 中文文档:用upstart运行Airflow
- HTML:内存溢出和内存泄漏
- 计算机上可以插键盘吗,电脑键盘上这些按键竟然可以这样用?
- php如何做支付,php实现银联支付
- Python + OpenCv实现视频中的车辆检测计数(车流量统计) (2020.7.15已更新源码)
- 值得收藏的UmiJS 教程
- 三角形花园和向左走(三角形性质和点集排序)
- hbuilder 夜神模拟器 谷歌 联调
- 基于RV1126 Video分析-----链接 isp 与mipi csi 的media模块
- css元素类型哪几种
- Pytorch基础学习(第一章-PyTorch基础概念)
- 苹果工具条_苹果iOS 13.4 Beta 1来袭:网友直接吐槽0创新
- Excel PivotTable 使用心得手顺分享(四)
- VxWorks中文FAQ
- 世界最清楚tensorflow入门教程