Xposed作为Android开发中的神器,功能强大之处就不做过多介绍了,本文主要讲解一些常用的API,基本包含常用的Hook操作。

Hook静态变量
Class cla = XposedHelpers.findClass(claName, loadPackageParam.classLoader);
XposedHelpers.setStaticBooleanField(cla, fieldName, val);

XposedHelpers下包含有各种变量类型的api:

Hook 修改方法返回值
 XposedHelpers.findAndHookMethod(clazz, method, new Object[]{new XC_MethodHook() {protected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult(result);  // 设置返回值}}});
Hook 获取方法返回值
XposedHelpers.findAndHookMethod(clazz, method, new Object[]{new XC_MethodHook() {protected void afterHookedMethod(MethodHookParam param) throws Throwable {Object result = param.getResult(); //获取返回值}}});
Hook 获取方法传入的参数值
XposedHelpers.findAndHookMethod(claName, cl, "i", String.class, String.class, Object[].class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {// 数组param.args存储的参数列表里的值XposedBridge.log(TAG + param.args[0]);XposedBridge.log(TAG + param.args[1]);XposedBridge.log(TAG + param.args[2]);}});
Hook 给方法传值
Class cla = XposedHelpers.findClass(className, loadPackageParam.classLoader);
Object com = XposedHelpers.callStaticMethod(cla, "getInstance");
XposedHelpers.callMethod(com, "setDebug", true); // 传入指定值
Hook 获取Intent的值
    private void hookGetIntent(XC_LoadPackage.LoadPackageParam loadPackageParam) {try {XposedHelpers.findAndHookMethod("android.app.Activity", loadPackageParam.classLoader, "getIntent", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {Intent sou = (Intent) param.getResult();KLog.d("hookGetIntent:" + sou.toURI().toString());}});} catch (Exception e) {e.printStackTrace();}}
Hook 广播发送的Intent信息
    private void hookSendBroadcast(XC_LoadPackage.LoadPackageParam loadPackageParam) {try {XposedHelpers.findAndHookMethod("android.content.ContextWrapper", loadPackageParam.classLoader, "sendBroadcast", Intent.class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {Intent sou = (Intent) param.args[0];KLog.d("sendBroadcast:" + sou.toURI().toString());}});} catch (Exception e) {e.printStackTrace();}}

Xposed一般Hook的是默认的dex文件,但是现在很多的APP都有多个Dex文件,所以使用Xposed时,经常遇到类名路径正确却出现ClassNotFoundError找不到类的错误。要解决这个问题,需要获取对应Dex文件的上下文环境。

Android在加载dex文件后会创建一个Application类,然后会调用attach方法,attach方法的参数就是上下文context,而且attach方法是final方法,不会因为被覆盖而hook不到,拿到这个context就可以获取对应的classload,然后就可以顺利hook到multidex的类了。

XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {ClassLoader cl = ((Context) param.args[0]).getClassLoader(); // 获取ClassLoaderClass<?> hookClass = null;try {hookClass = cl.loadClass(claName); // 获取Class// 使用cl 和 hookClass 完成hookXposedHelpers.setStaticIntField(hookClass, fieldName, val);XposedHelpers.findAndHookMethod(claName, cl, "i", String.class, String.class, Object[].class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {XposedBridge.log(TAG + param.args[0]);XposedBridge.log(TAG + param.args[1]);XposedBridge.log(TAG + param.args[2]);}});} catch (Exception e) {e.printStackTrace();}}
});

Xposed 使用教程相关推荐

  1. 乐视1s 安装android6,乐视1S全机型安装Xposed框架教程

    乐视1S拿到手这么久想必各位早就已经通过自己的方法成功的获取到了Root权限.在Android平台上有一款大家都知晓的神器Xposed.那么也是时候开始安装了.不过Xposed自从Android 4. ...

  2. 最简单红米系统一键激活xposed框架教程

    对于频繁玩机的朋友来说,xposed框架绝对都不陌生,不少功能牛逼的APP都基于xposed框架下工作,但对于不少入门屌丝来说,却频繁不知道这是个什么框架,一听到xposed框架激活异常烦恼,恰好近期 ...

  3. 解决Xposed不联网问题,附带Xposed安装教程雷电夜神逍遥模拟器

    Xposed不联网问题: 你已经安装好Xposed框架,但是下载里提示无法链接,如图 修改方法如下:下载对应版本Xposed,自己反编译apk:进入:\smali\de\robv\android\xp ...

  4. 6.0系统设备Root激活Xposed框架教程

    xposed框架简单简介 XPOSED框架是基于ANDROID系统平台的神器,大伙可以通过安装框架对应的功能模块来达到各种神奇的功能以及对系统各种底层的修改. 怎么样在安卓手机上安装激活XPosed框 ...

  5. Xposed 开发教程(翻译自官方)

    官方原文:https://github.com/rovo89/XposedBridge/wiki/Development-tutorial 开发教程 好吧 -- 你打算学习怎么建立一个新的 Xpose ...

  6. 逍遥模拟器使用指南(四、逍遥安卓模拟器电脑版xposed框架教程)

    xposed 下载工具:支持安卓5.1 7.1(点击64位安装方法) xposed 服务器经常被河蟹如果 无法下载安装 使用 离线方法 1.需要国外ip全自动安装 网盘下载 链接: https://p ...

  7. 最简单小米机器一键激活XPOSED框架教程

    对于经常研究安卓的朋友而言,XPOSED框架肯定都不陌生,太多功能强大的APP都基于XPOSED框架下启用,但对于太多入门朋友而言,却经常搞不懂这是个什么框架,一听到XPOSED框架激活真心纳闷,刚好 ...

  8. virtualxposed使用教程_不需要Root使用Xposed模块教程EXposed(非VirtualXposed)

    介绍一款新的免Root使用Xposed模块的方法,并非之前的VirtualXposed,而是基于安卓内核的--EXposed! 下载地址 :点击下载 EXposed 和之前介绍的VirtualXpos ...

  9. Xposed入门教程

    2019年8月27日16时51分47秒以前一直没机会接触Android Hook方式的逆向今天有空试了下,以前也很少写这种东西,今天第一次,认真写下,记录一下? 准备 准备搞太极的,但是Xposed都 ...

最新文章

  1. 如何在JavaScript中切片和拼接数组
  2. Extjs 打包 failed to find any files
  3. 1001.害死人不偿命的(3n+1)猜想
  4. 音视频技术开发周刊 | 195
  5. eclipse 工程中使用引入maven项目遇到maven-resources-plugin:2.6 找不到
  6. android int 首位值_Android应用视图的管理者Window
  7. python 命令模式 设计模式_Python 设计模式——命令模式
  8. (二)linux内核镜像制作
  9. html5 mask,HTML5 Canvas渐进填充与透明实现图像的Mask效果
  10. 【ElasticSearch】ElasticSearch 节点 性能 健康 监控
  11. 【iOS开发-60】案例学习:多组数据的tableView设置、添加右側组索引、多层数据模型设置以及valueForKeyPath...
  12. mysql 3列索引_正确理解Mysql的列索引和多列索引
  13. 分享一病毒源代码,破坏MBR,危险!!仅供学习参考,勿运行(vc++2010已编译通过)
  14. 小程序tab栏菜单的切换
  15. java浮点类型数据运算并保留小数点后几位工具类
  16. logcat查询日志
  17. Python数据分析案例-分别使用时间序列ARIMA、SARIMAX模型与Auto ARIMA预测国内汽车月销量
  18. Java的开发架构---浅谈
  19. 第十二节 SprnigBoot使用定时任务
  20. 数字电子技术基础 原码 反码 补码及运算

热门文章

  1. mysql 双主问题_MYSQL双主故障解决实例。
  2. 2019信用卡权益总结之七:生日多倍积分
  3. 用scrapy写爬虫 显示 Filtered offsite request to 错误.
  4. java复试容易被刷掉吗_拟录取之后还会被刷?这5个被刷原因尽量避免!
  5. anaconda历史版本下载
  6. WEP cracking
  7. HDMI设计3--HDMI 1.4/2.0 Transmitter Subsystem IP
  8. 临床预测模型评鉴(PMID28259045)-乳腺癌
  9. HashTab基于链表简单实现(java,不包含扩容)
  10. bigdecimal正确用法_Java BigDecimal详解-Fun言