V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
w568w
V2EX  ›  Android

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

  •  2
     
  •   w568w · 2020-08-09 09:21:50 +08:00 · 17687 次点击
    这是一个创建于 1560 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近一段时间一直在研究如何防止应用被 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

    41 条回复    2022-01-03 18:09:40 +08:00
    iFlicker
        1
    iFlicker  
       2020-08-09 10:08:09 +08:00 via Android
    hicdn
        2
    hicdn  
       2020-08-09 10:33:18 +08:00   ❤️ 2
    Xposed 安装后会导致 SafetyNet  检测不能通过,这个可以做为关键检测点。
    7LilUM0c66MGtJTD
        3
    7LilUM0c66MGtJTD  
       2020-08-09 10:35:42 +08:00
    原来是两年不见诈尸更新了,不过还是赞
    w568w
        4
    w568w  
    OP
       2020-08-09 10:55:25 +08:00
    @hicdn 感谢,这个思路很有意思!稍后加入到库里 :D
    littiefish
        5
    littiefish  
       2020-08-09 10:57:43 +08:00 via iPhone   ❤️ 45
    禁止用 xp 的 APP 都被我卸载拉黑了
    chinvo
        6
    chinvo  
       2020-08-09 11:34:10 +08:00 via iPhone
    @hicdn #2 SafetyNet 检测需要梯子吧
    w568w
        7
    w568w  
    OP
       2020-08-09 11:35:01 +08:00   ❤️ 4
    @littiefish 我知道那些一用 Xposed 就闪退的 app 有多让人恼火,但是对个人开发者来说并不是这样...

    如果你是个人开发者,并且有付费应用,除非你也想遭遇像这位老哥一样的处境: https://www.v2ex.com/t/696607 否则对于 Hook 这样的行为还是敏感点的好。倘若服务端身份验证没做好,被 Xposed 偷库闹出隐私问题,就更麻烦了。

    毕竟,工具怎么用在于人,工具本身没有错。
    luckycatio
        8
    luckycatio  
       2020-08-09 11:56:06 +08:00 via Android
    @w568w 被用 xp 的人拉黑对开发者来说是好事吧,不必在意那些少得可怜的用户。
    MePride
        9
    MePride  
       2020-08-09 11:57:14 +08:00
    @w568w 我来了😢,不知道增加 hook 检测会不会被用户骂。
    yongligua
        10
    yongligua  
       2020-08-09 12:00:57 +08:00 via Android
    我装 xp 只是为了状态栏能同时显示上行下行的网速…然而一些软件就不能用了,简直了
    hicdn
        11
    hicdn  
       2020-08-09 12:07:58 +08:00
    @chinvo 好像是需要梯子,多谢提醒。
    Lightbright
        12
    Lightbright  
       2020-08-09 12:09:59 +08:00 via Android
    内核查找 xposed 链接库在我这里有误报
    Kagari
        13
    Kagari  
       2020-08-09 12:11:20 +08:00 via Android   ❤️ 2
    “毕竟,工具怎么用在于人,工具本身没有错。”
    毕竟,xp 怎么用在于人,xp 本身没有错。
    Jirajine
        14
    Jirajine  
       2020-08-09 12:21:38 +08:00 via Android
    @luckycatio @MePride
    之前在 sof 上看到一个关于反破解的问题下面的回复,大概意思是:如果你到检测 root/xp 就禁止使用,那么对你的软件的破解就可以说是正当的,we won't blame them.
    c2const
        15
    c2const  
       2020-08-09 12:36:49 +08:00 via iPhone
    攻防方面,硬钢就完事了,双方见招拆招。
    azhangbing
        16
    azhangbing  
       2020-08-09 13:11:40 +08:00 via iPhone
    赞 马克一下
    canyie
        17
    canyie  
       2020-08-09 13:41:47 +08:00
    @hicdn 我自己写了个叫梦境的框架(用 riru ),在我的 pixel3 ( android 10)上完美通过 safetynet 检测。
    slamDunkLINk
        18
    slamDunkLINk  
       2020-08-09 13:53:14 +08:00
    我装 xp 也只是为了防止流氓应用,为什么不让用户本身选择呢?装了 xp 连应用都打不开真是太骚了.
    w568w
        19
    w568w  
    OP
       2020-08-09 14:33:43 +08:00 via Android
    @Lightbright 是安装了 Riru 吗? Riru 可能会影响检测…


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

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

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

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

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

    而且除了 VA 之外,脱壳还可以用 frida 或者定制系统,只要脱了壳,在软件层面做的 xposed 对抗仍然是很容易绕过的。
    zgzb
        32
    zgzb  
       2020-08-10 10:02:29 +08:00
    xposed 就是来造福人类的,都想避免 xposed 被检测,楼主搞了个强力检测的...,这是不给人卸载垃圾软件节省内存留余地啊。
    lwlizhe
        33
    lwlizhe  
       2020-08-10 10:02:55 +08:00
    如果用 flutter 是不是会好很多,目前差不多也只能破解 native 层面的东西……
    GeT1t
        34
    GeT1t  
       2020-08-10 10:12:12 +08:00
    作为一个第三方 SDK 提供 XPOSED 闪退的开发者路过。
    newmlp
        35
    newmlp  
       2020-08-10 10:27:01 +08:00
    hook 掉你的方法,然后返回 false
    weishu
        36
    weishu  
       2020-08-10 14:11:03 +08:00
    无法检测到魔改过的 Xposed,所以我觉得称不上终极方法。提个建议,检测 Xposed 的本质特征,而不是去看特定名字的 jar / so 或者符号。
    qihehulian
        37
    qihehulian  
       2020-08-11 10:48:35 +08:00 via Android   ❤️ 1
    @weishu 如果已经魔改了,那么已经不考虑兼容性了,为何不直接花式挂钩?例如用你的 epic 直接钩上即可,不考虑接口兼容性。检测 Xposed 其实是检测少数人里面的大多数,少数人里面的极少数没必要各种方案检测了。最好还是在业务逻辑里面做好安全,本身就不怕被修改。
    weishu
        38
    weishu  
       2020-08-11 13:23:57 +08:00   ❤️ 1
    @qihehulian 大多数普通用户用的都是公开的 Xposed,那些需要魔改的可以说绝大部分都是非正常用户。用这种方式去检测 Xposed,会误伤到普通人而真正作恶的却逍遥法外。我觉得魔改 Xposed 检测应该当作重点而不是把他们当作极少数置之不理。
    hyperdak288
        39
    hyperdak288  
       2020-08-13 14:34:57 +08:00
    @weishu 那么 xposed 的本质特征可以从哪些方面来检测呢?
    litaomn
        40
    litaomn  
       2020-10-17 13:08:04 +08:00
    一点用没有,定制版 xposed 直接秒杀
    ko1haha
        41
    ko1haha  
       2022-01-03 18:09:40 +08:00
    对某些人无语啦。你买的手机,需需要某些“正规”的功能,不去请求生产手机的人,反而要求其他发者给你买单、在安全和隐私方面为你让步、给 xp 和逆向开方便之门。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2523 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:54 · PVG 23:54 · LAX 07:54 · JFK 10:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.