浅谈 Xposed 新概念 [模块作用域]

2020-02-20 14:26:43 +08:00
 mlgmxyysd

众所周知,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 此功能正在开发中

应用转生 已发布

还有其他分支未收集

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

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

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

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

不需要

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

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

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

具体代码自行实现

在上文中我提到了兼容性

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

一味的要求开发者适配自己的 API 会导致对其他 Xposed 框架分支的兼容性下降,或者同时兼容多个分支的难度上升 同时,保留原版 Xposed API 也是对 Xposed 原开发者 rovo89 的一种尊重

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


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

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


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


附件:

目前已知的几种 Xposed 实现方案的「作者是个人还是公司、是否开源、是否商业化」的总结

鉴于阻止运行的前车之鉴「 2.3.2 之后(不含 2.3.2 )的阻止运行你敢用嘛?」( From @LetITFlyW

如果你没为服务付钱,那可能你就是产品。免费商业化比收费商业化更可怕。建议各位有使用 Xposed 的需求的朋友在条件适宜的情况下拥抱开源或者虽闭源但非商业化的实现方案。另:在任何情况下均不建议关注「某个 Xposed 实现方案的作者」的「推送过多次广告文章」的微信公众号。

31786 次点击
所在节点    Android
126 条回复
weishu
2020-02-21 13:27:32 +08:00
我从头到尾都没有说过“模块生效范围”这个东西是我首创的,我也不需要这个所谓的名头。不过就是用户提了建议,我实现一下罢了;做完之后我默默更新了官网的链接,甚至都没有在公众号发文告诉大家。那么是谁,在我内测完的几天后,在各个平台到处发文,说是自己首创的?顶着 edxp 作者头衔的你,为什么 edxp 不支持呢?
mlgmxyysd
2020-02-21 13:27:45 +08:00
mlgmxyysd
2020-02-21 13:28:47 +08:00
@weishu 内测完的几天?看来您内测的时间真早,都早到去年了
edxp 支不支持你还没有资格来评头论足
mlgmxyysd
2020-02-21 13:30:23 +08:00
weishu
2020-02-21 13:31:58 +08:00
请你解释一下,为什么 Google 在 2 月 18 号收录你的博客的时候,只有一篇文章?

http://webcache.googleusercontent.com/search?q=cache:tkI9Se2EWQMJ:mlgmxyysd.meowcat.org/+&cd=1&hl=en&ct=clnk&gl=kr

你为什么要做这个假,居心何在?
mlgmxyysd
2020-02-21 13:36:12 +08:00
@weishu 我在酷安说过了,域名绑定的是老的 github pages ip 地址,github 一直给我发邮件说暂停自定义域名的访问,我没有在意,所以你看到的和爬虫抓到的都是之前 cdn 缓存的页面,直连是根本连不上的

![IMG_20200221_122447_124.jpg]( https://i.loli.net/2020/02/21/FaEtCQ78hZSmzns.jpg)
weishu
2020-02-21 13:43:47 +08:00
哦,你这意思是不是说你的博客之前在网上压根不存在啊?你自己 YY 了一下写在自己电脑的记事本里面,来个死无对证?要不我等会也去我用 **hexo** 做的博客上面发表一篇 1990 年的文章,然后拿着这个文章出来大放阙词?
mlgmxyysd
2020-02-21 13:47:49 +08:00
@weishu 在网上存在,github 传上去过了,通过自定义的 cname 访问不了,当时如果你翻我 blog 的 gh-pages 是能看到这编译出来的静态 html 的
mlgmxyysd
2020-02-21 13:52:13 +08:00
@weishu 我只能说造谣抄代码的人其心可诛,好像是您管理组的人出来造的谣吧
https://vip1.loli.net/2020/02/21/c89oEHlXevPNbqV.jpg (出处 https://www.coolapk.com/feed/16662299?shareKey=YzU0MGQ5NDMyYWE4NWU0ZjVjODA~&)
yll2002
2020-02-21 14:18:18 +08:00
虽然用着太极,但看二位之争,还是
@mlgmxyysd 让人舒服一点。

@weishu 大佬戾气太重了。
NTAULTzM
2020-02-21 14:52:47 +08:00
@mlgmxyysd 您好,好久没用安卓了,打算近期转安卓,请问一下 xposed 官方停止更新这个事情,是 rovo89 发公告了,还是他默默放弃了?
mlgmxyysd
2020-02-21 14:58:56 +08:00
@NTAULTzM
我找原版 xp 制作组问过了,确认停更了
没发公告,直接弃坑了(
labulaka521
2020-02-21 15:57:27 +08:00
吃瓜
j137tt736CExzlfM
2020-02-21 16:26:45 +08:00
@mlgmxyysd 原来 EdXposed 是你自己的项目啊,懂了

@weishu 还是没有理清楚你们的关系
server
2020-02-21 16:34:34 +08:00
有个时光机网站 https://web.archive.org/ ,虽然不可能全部记录,仅做参考
locoz
2020-02-21 16:51:02 +08:00
@yll2002 #70 戾气都有点重😂毕竟撕挺久了,去年年底就看到在撕逼...

不过换位思考一下之后,我感觉是这样的:
维术可能是想着“这种应该是个人都能理解用途的做法为什么也能拿出来黑我?”
mlgmxyysd 可能是想着“我锤都在这了你还能狡辩?”

---
@weishu @mlgmxyysd
然后有些东西确实是与事实存在偏差的,比如:

1、协议条款问题:在软件挂在企业名下的情况下, [条款写得严谨一些没什么毛病] ,要不然指不定哪天莫名其妙地就被搞事的人告了...如果要说这个协议代表着太极会在后台做啥见不得人的事情的话,还是拿出抓包或者反编译得到的实锤出来说比较好。

2、公众号问题:这种盈利方式其实挺好的,只是部分高粘性用户会去点广告给维术创收而已,剩下大部分用户都是完全白嫖的。从阅读量来看的话,维术的公众号一条推文广告收益约为 1W 人民币左右。虽然他公众号还有一些其他可创收的地方,但是毕竟没有看到怎么导流,目测推文广告收益的占比应该是能达到整个公众号收入的 90%甚至更高的。

推广告的频率的话,我关注他公众号很久了,刚刚翻记录看了一下, [发广告的频率极低] ,大部分推文都是技术分享、日常分享、太极更新等, [并不像 mlgmxyysd 所说] 的“公众号里还 [经常] 可以看到标题党广告”。

3、太极与维术的企业有关联问题:确实,为了高新企业认证是需要有多个软件著作权的。作为开发者和企业法人,拿自己开发的东西去做这个著作权认证完全没有问题, [并不能证明太极是由深圳次元空间网络科技有限公司运营和管理的] 。

官网方面,如果只是为了搞著作权的话,官网本来就是随便搞了给审核人员看的, [搞完之后把原本的“官网”全部下掉也是很正常的事情] 。

4、太极联网问题:“我记得,太极如果服务器不稳定,手机上太极就出错。酷安当时好多人问太极崩了?我觉得这种机制和应用控制器一样可怕。” [这个情况我没有遇到过] ,我觉得这个崩了 [应该是指以前有校验的版本?] (好像什么时候去掉了校验来着?)

5、模块作用域是否抄袭问题:虽然 mlgmxyysd 博客的评论区在 github 上对应的 issue 创建时间是昨天,但是 [B 站上的视频确实是 2019-12-28 13:12:12 发布的] 。而 [太极这边的这个功能建议] 我也确实在维术的群里看到过, [确实是有人提过这种需求] 。只能说有抄袭嫌疑,但无法证明,拿这个出来撕逼我个人认为也没啥必要...
locoz
2020-02-21 16:53:46 +08:00
@locoz #76 拿中文方括号划的重点被自动转英文方括号了...想直接看重点的复制出来自行替换一下吧
j137tt736CExzlfM
2020-02-21 17:04:51 +08:00
> 1、协议条款问题:在软件挂在企业名下的情况下, [条款写得严谨一些没什么毛病] ,要不然指不定哪天莫名其妙地就被搞事的人告了...如果要说这个协议代表着太极会在后台做啥见不得人的事情的话,还是拿出抓包或者反编译得到的实锤出来说比较好。

这点说的很好,凡是企业挂名的软件,隐私条款都会写的比较严格,但是并不代表一定做了什么见不得人的事情,一切还是以事实说话,不要因为一个人长得像流氓,就说他是流氓!

> 2、公众号问题:这种盈利方式其实挺好的,只是部分高粘性用户会去点广告给维术创收而已,剩下大部分用户都是完全白嫖的。从阅读量来看的话,维术的公众号一条推文广告收益约为 1W 人民币左右。虽然他公众号还有一些其他可创收的地方,但是毕竟没有看到怎么导流,目测推文广告收益的占比应该是能达到整个公众号收入的 90%甚至更高的。

> 推广告的频率的话,我关注他公众号很久了,刚刚翻记录看了一下, [发广告的频率极低] ,大部分推文都是技术分享、日常分享、太极更新等, [并不像 mlgmxyysd 所说] 的“公众号里还 [经常] 可以看到标题党广告”。

凡是做开源,有付出,通过这种方式获取点许收益本来就无可厚非。

3、太极与维术的企业有关联问题:确实,为了高新企业认证是需要有多个软件著作权的。作为开发者和企业法人,拿自己开发的东西去做这个著作权认证完全没有问题, [并不能证明太极是由深圳次元空间网络科技有限公司运营和管理的] 。

官网方面,如果只是为了搞著作权的话,官网本来就是随便搞了给审核人员看的, [搞完之后把原本的“官网”全部下掉也是很正常的事情] 。

4、太极联网问题:“我记得,太极如果服务器不稳定,手机上太极就出错。酷安当时好多人问太极崩了?我觉得这种机制和应用控制器一样可怕。” [这个情况我没有遇到过] ,我觉得这个崩了 [应该是指以前有校验的版本?] (好像什么时候去掉了校验来着?)

“我觉得这种机制和应用控制器一样可怕“ ,你觉的东西不一定是事实。

5、模块作用域是否抄袭问题:虽然 mlgmxyysd 博客的评论区在 github 上对应的 issue 创建时间是昨天,但是 [B 站上的视频确实是 2019-12-28 13:12:12 发布的] 。而 [太极这边的这个功能建议] 我也确实在维术的群里看到过, [确实是有人提过这种需求] 。只能说有抄袭嫌疑,但无法证明,拿这个出来撕逼我个人认为也没啥必要...

先实锤别人抄袭再说吧,没有实锤都是猜测,这种猜测很容易让人反感,哪怕是别人不了解情况,看到也会反感
mlgmxyysd
2020-02-21 17:21:05 +08:00
@lazzyboy
>1、为什么老用户[不配]看到用户协议?
>4、这不是我说的,引用网友的话。云控之类的 hhhh,不多评价
>5、我没提过有关“抄袭”的问题,整个抄袭的节奏是他们太极管理组里一个叫“韵の祈”的人在酷安带起来的
locoz
2020-02-21 17:31:16 +08:00
@mlgmxyysd #79

1、我印象中在某次版本更新后是看到过用户协议的,并不是没提示。

5、“抄袭”相关话题其实是你自己挑起来的...你这个帖子的第一条附言发布的时间比维术在这帖里回复的时间更早。
“本来是懒得提个人 blog 的,某个小人照搬的太舒服了”,在你发酷安那个 feed 说“我可没说过这句话”之前(今天凌晨),我对这句话的理解都是“某个小人洗稿 /抄代码”,本身这条附言的倾向性就很明显...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/646108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX