众所周知,Xposed 是一个系统级别的软件框架,它与 Cydia Substrate 不同,Xposed 仅可 hook app_process 中的 java 函数,不过对于大部分的 Android 应用来说已经足够了;

它所提供的 API 可以供模块开发者在不修改目标应用字节码的前提下修改目标应用的行为,甚至是将自定义的代码注入进目标应用中,由目标应用代为执行。

Xposed 模块开发起来也非常简单,简单来说,获取目标应用的源码或者反编译出伪代码,找到目标方法,将相关逻辑写入模块,编译,完成。

于是,一种新的安全风险也随之出现了

某“步数模块”对【桃饱】应用插入淘口令

某“后台管理模块”做了一堆根本不应该它去做的功能

......

更有甚者利用【巨信】的公众号功能,为自己的帖子刷流量

而当你想要禁止掉这种滥用行为的时候,你会发现,也许它根本就没有申请正常情况下做这些事情需要的权限,更别谈禁止了

这是因为它将代码注入到了【巨信】应用中,所有的工作都是由【巨信】来完成的,如果你使用抓包软件来抓取流量包的话,你会发现所有的相关流量都是由【巨信】发送和接收的

应该庆幸的是,目前所抓到类似行为的模块都是使用 java(或 kotlin 等 jvm语言)层来编写的,反编译还算比较容易

可是如果模块使用 native(C/C++)层编写(据我所知已经有一些模块使用 native 层来编写),或者使用了一堆非常恶心人的加固/混淆呢?

要求所有模块必须开源一定是不可能的事情,第一这会大大打击模块开发者的积极性,第二即使开源也不能确保一定是安全的

(更何况某个自诩“安全”的 Xposed 框架商业化分支也还是闭源的,何谈模块开源?)

我相信 Xposed 的作者 rovo89(等一下,Xposed 停更的最后一个版本号是 89,我好像发现了什么zzz)一定也注意到了这个问题,只是因为某些原因最终弃坑掉了整个 Xposed 项目

于是,我们提出了一个新的概念

我将它称为

【模块作用域】(Modules Activation Scope)

*它能做什么?

简单来说,用户可以自主选择某个模块只对某些应用生效(或某个应用只激活某些模块,这个根据不同 Xposed 框架分支开发者的喜好自由安排)

这样虽说不可能完全解决 Xposed 模块滥用行为的安全问题,至少可以防止 Xposed 模块跨域对非目标应用进行 hook 操作

*如何才能用上这一功能?

当前(截至发稿)已经有好几种 Xposed 框架分支的开发者响应了这一概念

EdXposed 此功能正在开发中

EdXposed 此功能正在开发中

应用转生 已发布

用户需要做的就是等待当前使用的分支更新这一功能

同时,我修改了开源分支 XPatch 的代码以支持这一功能,高级用户可以尝试使用一下

演示视频:https://www.bilibili.com/video/av80958793

源代码(已修改):https://github.com/MlgmXyysd/xposed_module_loader

*(DEV)模块开发者需要特殊适配这一功能吗?

不需要

为 Xposed 框架分支添加新功能一定应该是建立在兼容原版 API 的基础上的(当然某个 Xposed 分支妄图分裂 Xposed 生态从而创建自己由 Xposed API 魔改而来的 TxxCxx API 我是不敢恭维,也不想在这里过多提及)

模块开发者唯一需要做的就是告知用户你的模块 hook 了哪个应用的包名,供用户来参考

*(DEV)我该如何为我的框架分支添加这一功能?

为单独的应用存储模块列表(推荐使用目标应用包名作为标识符),并设立全局列表(无法读取当前应用的列表时可读取全局列表)

具体代码自行实现

*(DEV)为什么不像 Android 软件在 Manifest 中声明权限那样要求模块声明 hook 列表?

在上文中我提到了兼容性

除此之外,要求模块适配自己的 API 同样是一种不可能的行为

一味的要求开发者适配自己的 API 会导致对其他 Xposed 框架分支的兼容性下降,或者同时兼容多个分支的难度上升

同时,保留原版 Xposed API 也是对 Xposed 原开发者 rovo89 的一种尊重

换一种问法,框架完全可以做到的事情为什么非要模块开发者来做呢?

这一概念经过测试完全是可行的(已有经由 XPatch 修改的 demo 测试成功,见上文)

但是,概念也有它本身的一个漏洞,它仅封堵掉了模块对于跨域应用的滥用行为,并没有从根本上杜绝滥用行为的发生(如,针对正常的目标应用的滥用行为),用户在选择模块时仍需谨慎


我是 MlgmXyysd,希望更多 Xposed 框架分支可以响应这一概念,同时也希望更多的开发者可以开发出自己的 Xposed 框架开源分支


附件:

目前已知的几种 Xposed 实现方案的「作者是个人还是公司、是否开源、是否商业化」的总结
鉴于阻止运行的前车之鉴「2.3.2之后(不含2.3.2)的阻止运行你敢用嘛?」( From @LetITFlyW ) 如果你没为服务付钱,那可能你就是产品。免费商业化比收费商业化更可怕。建议各位有使用 Xposed 的需求的朋友在条件适宜的情况下拥抱开源或者虽闭源但非商业化的实现方案。另:在任何情况下均不建议关注「某个 Xposed 实现方案的作者」的「推送过多次广告文章」的微信公众号。

xposed hook 静态函数_浅谈 Xposed 新概念【模块作用域】相关推荐

  1. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  2. ant man 什么意思_浅谈为什么很多蓝牙模块厂家选择nRF52832?

    浅谈为什么很多蓝牙模块厂家选择nRF52832? 现在蓝牙低功耗(BLE)SOC作为新一代蓝牙,以其低功耗的优势,正凸显出强大的市场竞争力,而其中Nordic公司的nRF52832这一款低功耗蓝牙芯片 ...

  3. python如何导入requests模块_浅谈python中requests模块导入的问题

    浅谈python中requests模块导入的问题 今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错. 原因: pyt ...

  4. xposed hook 静态函数_开源Hook框架-epic-实现浅析

    epic是weishu大神开源的一个Hook框架,支持ART上的Java方法HOOK. 实现原理:http://weishu.me/2017/11/23/dexposed-on-art/ 本文走马观花 ...

  5. python现在版本强势英雄_浅谈S15新赛季即将崛起的英雄,附新版本强势英雄推荐...

    明天是S15新赛季,本人之前在体验服玩过一段时间,对新版本有一定的了解,在这里跟大家分享一下我对于新版本的一些看法,以及认为S15赛季即将崛起的英雄,有什么问题可以在评论区探讨. 1,边射马可强度极高 ...

  6. 《计算机辅助教学及应用实践研究》,《论文_浅谈计算机辅助教学(定稿)》

    <论文_浅谈计算机辅助教学(定稿)> (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 摘要:计算机辅助教学中要用到多媒体课件 ...

  7. python判断两个对象是否为相等使用的运算符是_Python入门_浅谈逻辑判断与运算符...

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  8. 浅谈STM32的DMA模块的使用

    浅谈STM32的DMA模块的使用 转自:http://blog.ednchina.com/jack_chang/123085/message.aspx http://article.ednchina. ...

  9. xposed hook 构造函数_初识Xposed(上)

    " 前言:初学逆向 请多多指教" 总结: 1.学习了Xposed的正常hook,以及一些hook的时候需要注意的地方 Xposed介绍 - Android基于Linux,第一个启动 ...

最新文章

  1. [architecture]-AMBA AXI AHB APB学习总结
  2. Python教程:文件路径/目录获取教程
  3. c include 多层目录_python+C、C++混合编程的应用
  4. 博途v15安装过程中提示出错_博图V15为什么安装失败?
  5. Java7并发编程指南——第二章:线程同步基础
  6. centos7 访问php页面显示源码_运维干货分享:centos7下源码编译安装php-7.1.5(脚本)...
  7. 为什么8位二进制的取值范围是-128~127
  8. bnuoj16491
  9. 在线编辑器XhEditor
  10. python发展调研报告_实战 | Python自动生成PPT调研报告
  11. 对可道云KodExplorer去掉版权简单破解方法
  12. 机器学习笔记:特征处理——相关性分析GINI impurity
  13. Element-UI 上传图片到达一定数量后隐藏图片上传按钮
  14. 分析Android长按电源键事件并定制长按电源dialog
  15. 图像颜色空间转换--RGB to Lαβ
  16. 上海个人住房公积金复议材料
  17. Go2Shell 打开设置窗口
  18. nuxt.js实战asyncdata服务端渲染
  19. 如何利用视频监控系统遏制考试作弊行为?
  20. Qt之塔防游戏 c++(一)

热门文章

  1. ZooKeeper 的工作流程
  2. 乒乓球十一分制比赛规则_乒乓球的基本比赛规则
  3. Java 动态代理解析
  4. Linux进阶之路————Linux磁盘分区与挂载
  5. Java网络编程————UDP实现ThinkPad S5网络唤醒
  6. java用户界面项目_结对项目(带图型用户界面)Java实现【柴政-陈起廷】
  7. gdal获取像元的灰度值java_GDAL利用地理坐标读取图像像元值
  8. 找出不是两个数组共有的元素
  9. python颜色表_Python+matplotlib绘制不同大小和颜色散点图实例
  10. php 按照laravel5.5,Laravel5.5 综合使用