##Xposed框架的使用

###1.xposed是什么?
框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。Xposed 就好比是 Google 模块化手机的主体,只是一个框架的存在,在添加其他功能模块(Modules)之前,发挥不了什么作用,但是没了它也不行。也正因为如此,Xposed 具有比较高的可定制化程度。Moto X 用户可定制手机的外观、壁纸、开机动画等,Xposed 则允许用户自选模块对手机功能进行自定义扩充。

###2.xposed框架的使用
xposed的主要作用是hook应用方法,动态劫持方法的运行。xposed的使用需要xposed框架.apk和XposedBridgeApi-54.jar配合使用 。而xposed框架apk可以看成是个Xposed 框架的管理工具,在这里可以安装、更新Xposed 框架,也可以卸载Xposed 框架,查看安装日志。也可设置Xposed 框架安装器是否联网更新框架及模块。
xposed框架.apk需要root权限,所以需要一台root后的手机或者模拟器,这里推荐使用模拟器即可。首先下载一个模拟器,常用的模拟器有bluestacks蓝叠,夜神模拟器,genemotion等,由于genemotion的cpu框架是x86的,很多应用无法运行,所以选择了夜神模拟器。下载地址:https://www.yeshen.com/。下载安装之后如下界面:

模拟器是自带root权限的,下面下载xposed框架.apk
链接: https://pan.baidu.com/s/1QjQ2CG1Br2SUoGbgHoRfTA 密码: imt4!

下载完成后直接拖到模拟器上安装,安装之后打开apk,点击框架,进去点击安装更新:

授予root权限,然后重启模拟器。xposed框架apk可以工作了,但是现在只是安装好了xposed框架apk,并没有任何hook模块工作。hook模块可以自己去下载,也可以自己编写模块。
###3.xposed模块的编写
下面通过简单的demo演示如何编写一个xposed模块,来hook住我们想要hook的方法。这里就hook自己的app的一个加载广告的代码,来动态拦截广告的加载。

1.使用AS新建一个项目XposedDemo:

2.在MainActivity 模拟加载广告的代码,正常点击加载广告按钮,会加载广告,但是使用xposed对该方法进行hook之后,可以改变这个方法的执行。:

public class MainActivity extends AppCompatActivity {private TextView tv_ad;
private Button btn_load_ad;@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_ad = findViewById(R.id.tv_ad);btn_load_ad = findViewById(R.id.btn_load_ad);btn_load_ad.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {tv_ad.setText(getTTAd());}});
}public String getTTAd(){return "广告加载成功";
}
}

在MainActivity 的布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_ad"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="等待广告加载"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/btn_load_ad"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="加载广告"/>
</android.support.constraint.ConstraintLayout>

2.下载XposedBridgeApi-54.jar的依赖包,地址
https://pan.baidu.com/s/1HfDapCF0rLxKa_HIZ9orew
密码:iy2p 下载完成后在app目录下创建文件夹mylib(名字随意),并把XposedBridgeApi-54.jar复制到mylib下面,注意不能直接放到lib里面,然后再app的build.gradle的dependencies加上provided fileTree(dir: ‘mylib’, include: [’.jar’]),或者compileOnly fileTree(dir: ‘mylib’, include: [’.jar’]),根据你的gradle版本选择。

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'compileOnly fileTree(dir: 'mylib', include: ['*.jar'])}

3.修改AndroidManifest.xml文件,在applicatio标签下面加入以下标签:

<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"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><meta-dataandroid:name="xposedmodule"android:value="true"/><meta-dataandroid:name="xposeddescription"android:value="这是一个xposed应用"/><meta-dataandroid:name="xposedminversion"android:value="54"/>
</application>

注意这里面的三个meta-data标签的name不能错误,不然xposed框架apk无法识别自定义编写的xposed模块。

4.编写hook工具类XposedHookUtil对getTTAd方法进行拦截替换,XposedHookUtil实现IXposedHookLoadPackage接口,复写handleLoadPackage方法,并替换原有的getTTAd方法,来进行拦截。

public class XposedHookUtil implements IXposedHookLoadPackage {
String class_name = "com.hdc.xposeddemo.MainActivity";
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {Class clazz = loadPackageParam.classLoader.loadClass(class_name);XposedHelpers.findAndHookMethod(clazz, "getTTAd", new XC_MethodReplacement() {@Overrideprotected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {return "广告被拦截了";}});
}
}

5.在main文件夹下创建文件夹assets,并在assets下面创建xposed_init文本文件,注意这里文件名必须是xposed_init。并在xposed_init里面添加hook工具类的完整包名路径:com.hdc.xposeddemo.xposed.XposedHookUtil

6.运行apk
点击run app按钮运行apk,如果android studio 没有找到夜神模拟器,可能是模拟器还没有关联起来。关联方法:cmd 进入命令窗口,执行
cd C:\Program Files\Nox\bin,注意cd到你的夜神模拟器的安装路径,之后执行:nox_adb.exe connect 127.0.0.1:62001
然后AS可以关联成功,运行apk。

点击加载广告,这时候显示广告加载成功,因为还有使这个xposed模块工作。

7.安装xposed模块
打开Xposed框架apk,

点击模块,看到里面有刚刚编写的模块,勾选之后重启:

重启之后,xposed模块生效,点击加载广告,显示广告被拦截了:

###总结
总的来说此demo也借鉴了许多前人的经验,至此xposed框架的基本使用已经完成。如有错误,欢迎指正。

Xposed框架的使用--简单入门相关推荐

  1. python sanic_Sanic框架安装与简单入门示例

    本文实例讲述了Sanic框架安装与简单用法.分享给大家供大家参考,具体如下: Sanic是一个类似Flask的Python 3.5+ Web服务器,它的写入速度非常快.除了Flask之外,Sanic还 ...

  2. 荣耀7.0系统机器最简单激活Xposed框架的步骤

    对于喜欢搞机的哥们而言,经常会用到xposed框架和种类繁多功能无敌的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活xposed框架是非常简单的,但随着系统版本的持续更新,5. ...

  3. 三星6.0系统手机最简单激活XPOSED框架的教程

    对于喜欢玩手机的朋友来说,经常会接触到Xposed框架及其种种功能强悍的模块,对于5.0以下的系统版本,只要手机能获得root权限,安装和激活Xposed框架是比较简单的,但随着系统版本的不断更新,5 ...

  4. 安卓5.0以上设备最简单激活XPOSED框架的步骤

    对于喜欢研究手机的机友而言,经常会使用到Xposed框架及其各类功能强悍的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活Xposed框架是非常简单的,但随着系统版本的持续更新, ...

  5. 小米9.0系统最简单激活xposed框架的教程

    对于喜欢玩手机的哥们而言,常常会使用上xposed框架及种类繁多功能彪悍的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活xposed框架是比较简单的,但随着系统版本的升级,5. ...

  6. vivo5.0以上机器最简单激活xposed框架的教程

    对于喜欢搞机的哥们而言,很多时候会使用上XPOSED框架及其种种功能彪悍的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活XPOSED框架是异常简单的,但随着系统版本的升级,5. ...

  7. 小米5.0以上系统(亲测有效)激活Xposed框架的步骤

    对于喜欢搞机的朋友来说,大多时候会使用上xposed框架及其各类功能牛逼的模块,对于5.0以下的系统版本,只要手机能获得root权限,安装和激活xposed框架是非常简单的,但随着系统版本的不断升级, ...

  8. xposed 修改参数_【Android 原创】2020春节红包第三题Xposed框架Hook的应用

    作者论坛账号:CrazyNut 准备工具以及思路 首先不了解Xposed框架Hook的可以看看大佬的基础教程 - <教我兄弟学Android逆向12 编写xposed模块> 本文不需要会看 ...

  9. 万物皆可 Hook,探究 Xposed 框架 Hook 原理

    作者 |俞家欢 低头需要勇气,抬头需要实力 引言 平时用着 Android 手机,喜欢折腾的同学或多或少都接触过 Xposed 框架,解锁.Root.刷包,一气呵成.本文将从原理和实践两部分带大家了解 ...

  10. 魅族5.0以上设备(亲测有效)激活Xposed框架的流程

    对于喜欢研究手机的哥们来说,大多时候会使用到Xposed框架及种种功能强大的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活Xposed框架是比较简单的,但随着系统版本的持续更新 ...

最新文章

  1. mysql 事务_MySQL事务
  2. 【深度学习篇】--Windows 64下tensorflow-gpu安装到应用
  3. 精简 opencv python_01_opencv_python_基本图像处理
  4. python wand安装_Python Wand posterize()用法及代码示例
  5. 10道腾讯的Java面试题
  6. C语言 socket 编程学习
  7. 哈斯机床进去debug模式_责任链模式
  8. JavaScript-鼠标事件(鼠标点击松开移动效果)
  9. Linux内核分析 读书笔记 (第四章)
  10. tcmalloc内存分配器分析笔记:基于gperftools-2.4
  11. Php 安装 zend_loader,在Linux系统中为PHP5.x安装Zend Guard Loader
  12. 保留小数点后三位_三年后想买车?Excel理财小助手pmt函数帮你算
  13. 大数据方面核心技术有哪些?
  14. Chrome的视频加速插件
  15. linux 启动服务 sys,从磁盘启动的过程与SYSLINUX
  16. 每月与英国签证官网聊?
  17. 直播:京东大数据的应用!
  18. jsp/java智能井盖管理系统
  19. x射线mas_X射线视觉
  20. 可以借助Studio Display 实现旧款Macbook上的“Hey Siri”功能

热门文章

  1. PTA-哥尼斯堡的“七桥问题” (20 分)
  2. 数学中有因果关系吗?
  3. Excel多列数据的连接
  4. 历史要横着读,故事要竖着看!嘻哈~
  5. 个人申请软件著作权的记录
  6. MIPS计算公式总结
  7. Web页面的常见字体有哪些
  8. 基于人脸识别的门禁系统设计与实现--论文
  9. 海风教育荣获第七届中国财经峰会最具成长价值奖
  10. 【ASO项目使用的技术】(例如:1、hook CFUserNotificationCreat 截取Header 部分信息、Message内容 进行任务处理2、设备信息的修改、清理数据3、js逆向)