使用Android studio 开发xposed插件
1.在已经root的手机上安装xposed installer.apk
2.打开android studio 新建工程 如果不需要界面的 可以选择Add no activity
3.新建完成后,找到 app 目录下的 build.gradle 文件,将 dependencies 中的
compile fileTree(dir: 'libs', include: ['*.jar'])
改为
provided fileTree(dir: 'libs', include: ['*.jar'])
4.下载 XposedBridgeApi-54.jar 并放入app目录下的libs文件夹.
5.在 AndroidManifest.xml 文件的 application 中添加如下代码,其中的54是前面下载的文件中的号码.
<meta-dataandroid:name="xposedmodule"android:value="true" />
<meta-dataandroid:name="xposeddescription"android:value="kiya's test module" />
<meta-dataandroid:name="xposedminversion"android:value="54" />
6.新建一个 XposedModule 类,写入:
package com.lonelykin.xposedhelper;import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;import static de.robv.android.xposed.XposedHelpers.*;public class XposedModule implements IXposedHookLoadPackage
{@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable{if (android.os.Process.myUid() <= 10000){XposedBridge.log("系统应用" + loadPackageParam.packageName + android.os.Process.myUid());return;}else{XposedBridge.log("普通应用" + loadPackageParam.packageName + android.os.Process.myUid());}}
}
7.新建 assets 文件夹,在里面新建文件名为 xposed_init ,写入刚刚的类名,此处应为 com.lonelykin.xposedhelper.XposedModule
这时就可以编译安装了.
8.安装后 在xposed installer中的模块中 勾选刚刚装的插件 然后重启设备,等重新启动后可以在
日志中查看 是否调用成功
9.xposed怎样工作?
开机时, ./init.rc 脚本文件会启动 Zygote 进程,Zygote对应的具体程序是 /system/bin/app_process ,然后加载需要的类,调用初始化的方法,之后启动的每个应用都是Zygote的拷贝,所以Zygote进程是十分重要的.
通过在类路径中添加一个jar包,在 app_process 的特定位置调用jar包中的方法,Xposed框架实现了带扩展功能的 app_process ,然后将原有的 app_process 替换掉.
在 /data/data/de.robv.android.xposed.installer/bin/ 目录下有一个 XposedBridge.jar 文件,它就是被引用的jar包,源码在 github ,main函数在 /src/de/robv/android/xposed/XposedBridge.java 中,每个进程每次启动时都会被调用.加载模块的功能也是在这里实现.
Xposed真正强大的是它可以hook调用的方法.当你反编译修改apk时,你可以在里面插入xposed的命令,于是你就可以在方法调用前后注入自己的代码.
XposedBridge有一个私有的本地方法 hookMethodNative ,代码实现放在 app_process 中.在调用被hook的方法前会先调用此方法, hookMethodNative 有一个 handleHookedMethod 方法,可以修改传递给被hook函数的参数,变量甚至是调用其他方法.
使用Android studio 开发xposed插件相关推荐
- Android开发xposed,用Android Studio开发Xposed插件项目步骤
1.使用Android Studio新建项目,在app目录下新建lib,并导入xposed的jar包. jar包下载地址:https://jcenter.bintray.com/de/robv/and ...
- Android Studio开发-高效插件强烈推荐
Android Studio开发-高效插件强烈推荐 现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行).使用好And ...
- XM7 FOR ANDROID,如何使用Android Studio开发Gradle插件
缘由 首先说明一下为什么会有这篇文章.前段时间,插件化以及热修复的技术很热,Nuwa热修复的工具NuwaGradle,携程动态加载技术DynamicAPK,还有希望做最轻巧的插件化框架的Small.这 ...
- android studio 开发实用插件
1. JsonOnlineViewer android studio中调试接口数据 2. Sexy Editor 3. GsonFormat 4. CodeGlance 在右边可以预览代码,实现快速定 ...
- 安卓逆向——AS开发Xposed插件demo案例
AS开发Xposed插件demo案例 环境和工具 : 模拟器:雷电 4.0.43版本 安卓版本:7.1.2 x86 Xposed :xposed-installer-3-1-5 安装好 androi ...
- 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)
. 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...
- Android Studio最全插件整理
在Android开发中,合理的使用Android Studio插件不但可以提高开发效率,还能从整体上提高代码的质量.下面就Android开发中常见的一些插件做一个整理. 1,GsonFormat Gs ...
- Android studio 常用的插件
Android studio 常用的插件 Exynap Effortless Android Development [官网地址]( http://exynap.com/) ![Effortless ...
- android移动开发软件安装,android studio 开发的安卓软件怎么安装到手机上
android studio 开发中如何让运用运行在真机中. 大体实现方式有3种: 分别是: 真机通过usb插到电脑上进行开发. android studio 上面编写程序进行编译apk版本,通过其他 ...
最新文章
- 我有个师兄,毕业后投身了学术自媒体行业
- linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?
- js操作indexedDB增删改查示例
- 跟我学 Java 8 新特性之 Stream 流(二)关键知识点
- c#+handle.exe实现升级程序在运行时自动解除文件被占用的问题
- 生产问题分析!delete in子查询不走索引?!
- MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!...
- 微信也QQ服务器,妄想山海QQ区还是微信区好 平民服务器选择推荐
- 抖音快闪PPT制作教程
- 计算机终端保密检查 玩游戏,计算机终端保密检查工具(光盘版)
- js2D物理引擎插件
- 力学现象演示——圆周运动与弹簧弹力
- 机器视觉硬件之光源选型以及打光技巧
- python饿了么商家开放平台模拟网页http请求实战
- MySQL数据库,创建表空间
- 代码实现WIFI自动连接与连接指定WIFI源码
- Uncaught TypeError: Cannot read property 'opera' of undefined
- 软件架构哲学:和而不同、知行合一、大道自然
- can‘t load package: cannot find module providing package github.com/hyperledger/fabric/core/chaincod
- 关于校招那些事(一)—— 简历
热门文章
- android数字滚动控件,Ticker 滚动数字控件
- 忆黄霑(文/林青霞)
- 仿真软件测试基尔霍夫定律,标签:基尔霍夫定律
- 【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式
- Termux – Android运行aarch64 – Linux – 安卓设备建站 – 让旧安卓设备老树新花
- 自己制作脚手架——完整版
- Java各个版本的JDK下载地址你值得拥有
- python可以自动拆分表格吗_Python 拆分表格并发送邮件
- mysql 节假日判断_sql 节假日判断(春节、中秋、国庆、周末等)
- Calcite 原理解析