检测 Xposed 安装、防止应用被劫持的终极解决方案

2020-08-09 09:21:50 +08:00
 w568w

最近一段时间一直在研究如何防止应用被 Xposed 劫持...

这个问题还真的头疼,目前已有的上Magisk Hide随机包名RootCloak等反 Xposed 检测的措施已经非常成熟了。退一万步来说,就算找到了新的检测方案,检测方法本身也可能被劫持而失去作用。

经过三番五次的寻找和反复推敲,最终还是决定在NativeJava层同时实现检测,
于是就有了这个终极版解决方案,融合了目前能够通过反编译在各大应用中找到的 11 种检测方式。

目前已经在不同机型测试过,误杀率几乎为 0,可以完美检测市面上已有的各种版本 Xposed 。
(不包括Taichi一类的通过插入原生库到 APP 中的 Xposed 框架,这些框架只要加入签名验证就可以完美反制,检测无意义)

Github 地址在这里,欢迎使用: https://github.com/w568w/XposedDetectLib

你也可以在这里下载 GUI 版本,在自己手机上调试: https://www.coolapk.com/apk/190247

13700 次点击
所在节点    Android
41 条回复
hicdn
2020-08-09 17:49:41 +08:00
@canyie 大佬,求链接
FlyPuff
2020-08-09 18:46:44 +08:00
看了下自己的机机,装了微 x/qx 围脖去广告,去启动页广告,还有个 miui 麻醉师~
我觉得大部分人都是用 xp 来给自己的手机提供(针对大部分流氓 app 行为)各种便利性的吧
lmslly
2020-08-09 22:09:23 +08:00
xp 已经不常用了 面具挺好的
greed1is9good
2020-08-09 23:13:00 +08:00
如果你的应用不耍流氓,你怕什么 xposed,既然你这么关心用户安全隐私那你应该去开发反流氓软件,而不是研究反反流氓。。。
wtdd
2020-08-10 02:15:23 +08:00
用 xposed 劫持小众软件干什么,很少人做的过分,基本就是干掉过分的广告而已。要针对性破解甚至复制的话,哪会用 xposed 呢
251
2020-08-10 03:03:37 +08:00
什么意思?我不能 hook 你这个方法,返回一个 false 吗
w568w
2020-08-10 07:08:39 +08:00
@251 后面会考虑完全迁移到 Native C 部分。

@greed1is9good 你的关注点在用户隐私上,然而那只是一方面。首先 V 站个人开发者有一定比例,这一部分基本上不会太 care 用户隐私;另外大厂自有检测方案也轮不到我干预;所以我认为这个库的用途主要还是防破解。

@wtdd Xposed 提供了一种非侵入式修改代码的机会,这种机会无论放在哪里都是有风险的。不妨了解一下: https://www.zhihu.com/question/265550793

另外,用 xposed 脱壳 /破解已经是常规操作了。
canyie
2020-08-10 08:36:07 +08:00
Blanke
2020-08-10 09:29:01 +08:00
直接 hook detectXposed 返回 false 不就行了。。。
InkStone
2020-08-10 09:41:31 +08:00
其实这种程度的反制措施只能略微提高门槛,没法真正反制破解。

我大致看了下代码,你似乎没做针对 VirtualXposed 之类基于 VA 的 xposed 的对抗。
InkStone
2020-08-10 09:43:43 +08:00
你提到了太极,但这类 VA 软件跟太极不一样,是没法通过签名校验来对抗的。

而且除了 VA 之外,脱壳还可以用 frida 或者定制系统,只要脱了壳,在软件层面做的 xposed 对抗仍然是很容易绕过的。
zgzb
2020-08-10 10:02:29 +08:00
xposed 就是来造福人类的,都想避免 xposed 被检测,楼主搞了个强力检测的...,这是不给人卸载垃圾软件节省内存留余地啊。
lwlizhe
2020-08-10 10:02:55 +08:00
如果用 flutter 是不是会好很多,目前差不多也只能破解 native 层面的东西……
GeT1t
2020-08-10 10:12:12 +08:00
作为一个第三方 SDK 提供 XPOSED 闪退的开发者路过。
newmlp
2020-08-10 10:27:01 +08:00
hook 掉你的方法,然后返回 false
weishu
2020-08-10 14:11:03 +08:00
无法检测到魔改过的 Xposed,所以我觉得称不上终极方法。提个建议,检测 Xposed 的本质特征,而不是去看特定名字的 jar / so 或者符号。
qihehulian
2020-08-11 10:48:35 +08:00
@weishu 如果已经魔改了,那么已经不考虑兼容性了,为何不直接花式挂钩?例如用你的 epic 直接钩上即可,不考虑接口兼容性。检测 Xposed 其实是检测少数人里面的大多数,少数人里面的极少数没必要各种方案检测了。最好还是在业务逻辑里面做好安全,本身就不怕被修改。
weishu
2020-08-11 13:23:57 +08:00
@qihehulian 大多数普通用户用的都是公开的 Xposed,那些需要魔改的可以说绝大部分都是非正常用户。用这种方式去检测 Xposed,会误伤到普通人而真正作恶的却逍遥法外。我觉得魔改 Xposed 检测应该当作重点而不是把他们当作极少数置之不理。
hyperdak288
2020-08-13 14:34:57 +08:00
@weishu 那么 xposed 的本质特征可以从哪些方面来检测呢?
litaomn
2020-10-17 13:08:04 +08:00
一点用没有,定制版 xposed 直接秒杀

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

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

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

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

© 2021 V2EX