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

众所周知,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 实现方案的作者」的「推送过多次广告文章」的微信公众号。

v2-4faf4c5dfff34579eb5fa5413df427f6_b.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

adc0808温度换算公式_温湿度传感器的三种模拟量换算关系

气候的变化常常会导致空气当中的湿度以及温度随之而产生相应的变化,如果想及时感知空气中温湿度的变化,那就需要温湿度传感器。在日常生活中,温湿度传感器种类有很多,按照数据上传方式分有RS485型温湿度传感器、模拟量型温湿度传感…

共阳数码管段码表_简单共阴极数码管电路图大全

共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。判断公阴极和公阳极找公共共阴和公共共…

linux find 报错路径必须在表达式之前

执行 find -name yum*,查看当前文件夹下以yum开头的文件。 报错路径必须在表达式之前,如下图所示: 解决方案: 会出现“find: 路径必须在表达式之前”的错误提示。解决的方法有两种 使用转义符把*转义,即 yum\*用引号引起来 &am…

css 动态生成圆形区域内扇形个数_CSS实用技巧总结

❝作者:幻灵尔依 (授权原创)https://juejin.im/post/5e0fef935188253a624a6a72❞《css揭秘》中讲了47个css技巧,其中有很多日常编码中并不会用到,本文除了将书中部分实用技巧罗列出来之外,还尝试用帮助读者搞明白background、anim…

python怎么返回上一行代码_一行Python代码能做出哪些神器的事情

原标题:一行Python代码能做出哪些神器的事情 (1)一行代码启动一个Web服务 python -m SimpleHTTPServer 8080 # python2 python3 -m http.server 8080 # python3 (2)一行代码实现变量值互换a, b 1, 2; a, b b, a &…

c++ string 字符_C/C++知识分享:C++标准库之 string 类型,各种运算全部掌握

简介:C标准库提供的类型:string。长度可变的字符串,操作简单仅为包含个人常用函数头文件string 类型与其它的标准库类型相同,都需要包含对应的头文件string 类型的定义和初始化string 类型的函数(1)字符串的赋值输入及…

为什么机油使用后变红_水泥固化剂的使用原理是什么,涂洒后时间为什么要足够长?...

水泥固化剂由于具有提高水磨地面的强度、硬度、使地面不起灰,抗压强度、抗腐蚀的能力,广泛应用于现代工厂、仓储、停车场、商场、超市的装饰材料。那么,水泥固化剂涂洒后时间为什么足够长呢?下面听听好牛环境科技的小编的意见吧&a…

CentOS虚拟机访问外部网络

这里写自定义目录标题虚拟机无网络测试解决方案1、设置VM(关闭虚拟机)2、查看当前IP、网关、子网掩码3、设置虚拟机IP、网卡、子网掩码虚拟机无网络测试 CentOS使用yum下载gcc时报错:cannot find a valid baseurl for repo:base/7/x86_64,百…

4x4矩阵键盘工作原理及扫描程序_基于复杂可编程逻辑器件实现键盘接口电路的设计...

1 引言无功补偿装置是用于补偿电网无功功率的不足,提高功率因数,保证供电系统安全运行和节约电能的设备,其核心是控制仪。本控制仪集无功补偿、电度量计量、电能质量监测及通信于一体,对电网参数进行实时采样与计算并把各项参数显…

python opencv轮廓检测_OpenCV 轮廓检测的实现方法

轮廓概述 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny…

4.3 媒资管理模块 - Minio系统上传图片与视频

文章目录 一、上传图片1.1 需求分析1.2 数据模型1.2.1 media_files 媒资信息表 1.3 准备Minio环境1.3.1 桶环境1.3.2 连接Minio参数1.3.3 Minio配置类 1.4 接口定义1.4.1 上传图片接口请求参数1.4.2 上传图片接口返回值1.4.3 接口代码 1.5 MediaFilesMapper1.6 MediaFileServic…

如何有效开展小组教学_如何有效地开展小组合作学习——数学科主题教研活动...

教学中如何有效地开展小组合作学习——数学科主题教研活动2019年2月20日下午第三节课,我校数学科组进行了由马少清老师主讲的小学数学课堂教学中如何有效地开展小组合作学习教研活动。活动中马老师从营造和谐的合作氛围、认真组织、明确要求、优选内容、及时指导总结…

linux命令-管理用户

目录 一、导入 1、基础 2、切换用户 二、用户与用户组基本信息 1、用户基本信息: /etc/passwd 2、用户密码信息: /etc/shadow 3、用户组配置信息: /etc/group 4、用户组密码信息: /etc/gshadow 三、管理用户 1、添加用户-useradd命…

springboot配置文件_SpringBoot系列干货:配置文件详解

在Spring Boot中,配置文件有两种不同的格式:1.一个是application.propertiesserver.port8888server.servlet.context-pathdemo2.另一个是application.ymlserver:port: 8888servlet:context-path: /demo配置文件与配置类的属性映射方式person:name: zhangsanage: 18实…

activemq 开启监听_SpringBoot集成ActiveMQ怎么实现Topic发布/订阅模式通信?

上一期我们讲了SpringBoot集成activeMQ实现Queue模式点对点通信,这一期我们接着讲SpringBoot集成activeMQ实现Topic发布/订阅模式通信。发布/订阅模式通信是对点对点通信模式的扩展。Queue模式下一个人发送的消息只能由一个人接收,而Topic模式下&#xf…

电脑右击新建没有Word、Excel怎么办

方法/步骤 1.点击开始,找到运行命令行,输入regedit,打开注册表。 2.在左侧找到HKEY_CLASSES_ROOT目录,并展开。 3.利用CTRL F 快捷键,查找“docx”的位置,当然这里也可以自己下拉查找。 4.找到.docx,不用展…

实习日志_【人医札记】护理实习日志

实习日志:新起点01章莹 (河南鹤壁职业技术学院)盛夏七月,开始了我的实习生活……有幸可以来到兰溪市人民医院,经历了几十年风雨历程,一个花甲的峥嵘岁月,几十年璀璨硕果的积累,也让我对实习充满了期待&…

等价类划分法-案例剖析-设计测试用例

目录 等价类划分法概念 有效等价类和无效等价类 等价类设计测试用例步骤 案例1 案例2 案例3 等价类划分法概念 等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集即等价类,然后从每个等价类中选取少量具有代表性的数据作为…

mysql8.0版本的服务器名称_Linux服务器配置-VSFTP服务配置(六)

上文:Linux服务器配置-VSFTP服务配置(五)上文中已经介绍了使用数据库文件方式配置虚拟用户认证登录FTP服务器,这篇文件将介绍通过数据库方式(vsftpd服务pam_mysqlMySQL)配置虚拟用户认证登录FTP服务器。一、安装配置MySQL数据库这里以在CentOS6中安装MyS…

java导出csv文件_R语言数据导入与导出

R语言数据导入与导出整这么一个系列,还是因为学R语言时遇到过一个非常“小白友好”的网站“DataScience Made Simple”。相信很多人搜到过这个网站,或许你在意到或许并没在意。年前试着和作者发了一封邮件,想要把他这个网站做成汉语版的帖子发…