使用Android studio 开发xposed插件
2016-05-22 21:33
453 查看
1.在已经root的手机上安装xposed installer.apk
2.打开android studio 新建工程 如果不需要界面的 可以选择Add no activity
3.新建完成后,找到 app 目录下的 build.gradle 文件,将 dependencies 中的
改为
4.下载 XposedBridgeApi-54.jar 并放入app目录下的libs文件夹.
5.在 AndroidManifest.xml 文件的 application 中添加如下代码,其中的54是前面下载的文件中的号码.
6.新建一个 XposedModule 类,写入:
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函数的参数,变量甚至是调用其他方法.
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-data android:name="xposedmodule" android:value="true" /> <meta-data android:name="xposeddescription" android:value="kiya's test module" /> <meta-data android: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 { @Override public 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函数的参数,变量甚至是调用其他方法.
相关文章推荐
- java自动生成验证码插件-kaptcha
- jQuery插件实现文字无缝向上滚动效果代码
- jQuery菜单插件用法实例
- 加载flash9.ocx出现错误的解决方法
- jquery实现的代替传统checkbox样式插件
- 10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
- 推荐40个非常优秀的jQuery插件和教程【系列三】
- Node.js插件的正确编写方式
- 推荐十款免费 WordPress 插件
- NopCommerce架构分析之(四)基于路由实现灵活的插件机制
- Bootstrap教程JS插件弹出框学习笔记分享
- 使用JavaScript开发IE浏览器本地插件实例
- jQuery实现的简单提示信息插件
- 推荐25个超炫的jQuery网格插件
- 纯JavaScript实现的分页插件实例
- JQuery插件jcarousellite的参数中文说明
- Bootstrap每天必学之弹出框(Popover)插件
- 拥有一个属于自己的javascript表单验证插件
- 基于bootstrap插件实现autocomplete自动完成表单
- 基于Bootstrap3表格插件和分页插件实例详解