Xposed开发初体验
来源:互联网 发布:手机淘宝查看订单编号 编辑:程序博客网 时间:2024/06/13 16:54
本篇文章具体是Xposed开发,如何安装Xposed需自行上网查找,本文同步更新于旺仔的个人博客,访问可能有点慢,多刷新几次。
Xposed
什么是Xposed呢?
“Xposed是一个适用于Android的框架。基于这个框架开发的模块可以改变系统和app应用的行为,而不需要修改APK。这是一个很棒的特性,意味着Xposed模块可以不经过任何修改,安装在各种不同的ROM上。Xposed模块可以很容易的开启和关闭。你只需要激活或者禁用Xposed模块,然后重启手机即可。”
很好理解,就是替换了/system/bin/app_process可执行文件,在启动Zygote时加载额外的jar文件(XposedBridge.jar),并执行一些初始化操作(执行XposedBridge的main方法),从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持,然后我们就可以在这个Zygote上下文中进行某些hook操作。
前提
安装Xposed的前提是手机必须root,所以没有root手机的,就不用往下看了。
开发Xposed项目
介绍完Xposed,那么接下来我们来开发Xposed的项目。
创建AS项目
使用Android Studio创建一个新的项目,具体内容就不详细说了,基本都会创建项目的。
导入Xposed的api库
要使用Xposed的东西,就必须导入相对应的api库,
导入jar包
首先我们需要下载对应的jar包,然后导入到项目中的Libs文件夹里面,下载api-82-sources.jar,api-82.jar
注意这里要将compile
改为provided
,原因是Xposed里已有该jar包内容,再次打包进去会冲突,所以要改为provided
。
同时也要将compile fileTree(include: ['*.jar'], dir: 'libs')
也改为provided
,如果不修改的话,就会导致handleLoadPackage没有回调。
Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。
gradle
当然也可以用gradle导入Xposed,同样将compile
改为provided
dependencies { provided fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' provided 'de.robv.android.xposed:api:82'}
声明Xposed模块
创建Xposed项目后,还需要在AndroidMenafest.xml
文件里面声明Xposed模块,在application
里面添加三个meta-data
标签(xposedmodule、xposeddescription、xposedminversion)。
<application android: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"> <meta-data android:name="xposedmodule" android:value="true"/> <meta-data android:name="xposeddescription" android:value="Hook log test"/> <meta-data android:name="xposedminversion" android:value="53"/> </application>
xposedmodule
表示作为Xposed的一个模块
xposeddescription
表示对本模块的描述,该描述会显示在安装好后的程序名称下方
xposedminversion
表示jar包的最低版本号
创建hook类
我们新建一个类,类名随意,然后实现IXposedHookLoadPackage
接口,并且重写handleLoadPackage
方法,里面就是我们要具体操作的地方。
package top.jowanxu.xposedtest;import de.robv.android.xposed.IXposedHookLoadPackage;import de.robv.android.xposed.XposedBridge;import de.robv.android.xposed.callbacks.XC_LoadPackage;public class Tutorial implements IXposedHookLoadPackage { @Override public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { XposedBridge.log("=========Loaded app: " + lpparam.packageName); }}
声明类的入口
创建完我们hook类之后,我们需要将该类加载到XposedInstaller中,也就是我们必须声明该类的位置,需要在xposed_init中声明。
xposed_init文件
创建assests文件夹
然后在里面新建一个文件,文件名为xposed_init
,没有后缀,然后在里面写入我们刚刚创建的类的完整类名,
运行
搞完上面的步骤之后,我们直接run起来,程序跑起来之后,Xposed会提示是否激活
我们可以在Xposed里面看到我们的我们刚刚创建的项目
打勾,然后重启
重启之后然后打开Xposed的日志,点击保存
然后导出到电脑,搜索一下,就能找到我们自己打印的内容了
结语
通过上面的例子我们可以很容易的通过Xposed来对app进行修改,所以使用Xposed需谨慎,不要乱下载一些有后台的模块,指不定那天就把你的帐号密码给泄露出去了。
- Xposed开发初体验
- Xposed初体验
- xposed初体验
- Xposed Xposed插件开发
- xposed 模块开发
- Xposed模块开发入门教程
- Xposed开发入门笔记
- Xposed模块开发
- Xposed开发指南
- Xposed模块开发教程
- Xposed模块开发
- [Android开发] Xposed 插件开发之一: Xposed入门
- [Android开发] Xposed 插件开发之二: Xposed一些知识
- Android xposed框架开发入门
- Xposed插件开发基础篇
- Xposed插件开发进阶篇
- xposed模块开发步骤总结
- Android Xposed框架 -- 开发篇
- axure rp8.1 注册码
- 十年一顾, iOS 与 Android 这样改变了我们
- 通过GitHub和Hexo来搭建自己的个人博客
- 关于PHP的框架和CMS的区别,以及为什么我要好好学习框架
- Swing ——JFrame类
- Xposed开发初体验
- Linux网络编程——tcp并发服务器(poll实现)
- Linux时间子系统之三:时间的维护者:timekeeper
- C#动态创建窗口和创建事件,在新窗口添加控件和控件事件
- web信息搜索之域名遍历篇
- 九度oj:求哈夫曼树(vector)
- 论list内部数据排序
- 2017.10.12 小Q的无敌异或 失败总结
- 怎样设置路由器端口映射(以TP-Link为例)?