跳到正文

Root 与 Hook

防护 Root 与 Hook

已 Root 的设备和 Hook 框架如何被用来攻击涉及资金流转的应用,以及应用可以怎么做。

简短回答

Root 让人完全控制操作系统;Frida、Xposed 等 Hook 框架会在应用运行时改写其行为。要同时防护两者,应用需要结合多项检测(Root 痕迹、插桩、被 Hook 的函数、被修改的代码),通过策略决定响应,并在服务器端确认敏感操作。

Root 改变了什么

在已 Root 的设备上,操作系统的保护不再有效:其他应用和工具可以读取你的应用的文件和内存并改变其行为。许多进阶用户出于正当理由 Root 手机,所以 Root 是信号,而不是判定。

Hook 做了什么

Hook 框架会拦截你的进程中的函数:可以让检查直接返回“通过”,在令牌加密前读取它,或者改变转账的收款方。它可以在已 Root 的设备上运行,也可以通过注入的 gadget 在重新打包的应用副本中运行。

如何响应

检测多个信号,而不是一个。先记录,再警告或要求额外验证,只拦截重要的操作,比如付款。将决策保存在经过审核的策略中,并用服务器可以核验的判定来确认敏感操作。

来源怎么说

  • Frida 将自己描述为动态代码插桩工具包,正是这种能力被用来 Hook 运行中应用的函数。

    来源 · 核实于

  • OWASP MASVS-RESILIENCE-2 要求应用实施防篡改机制。

    来源 · 核实于

  • Play Integrity 的设备判定会标明设备是否满足基本、设备或强完整性,帮助服务器评估环境。

    来源 · 核实于

Moatgator 能做什么

  • Runtime 检测 Root 和越狱迹象、Frida server 与 gadget、Xposed 及类似框架,以及被 Hook 的系统函数。

    来源 · 核实于

  • 每项检测在 moatgator.yml 中都有自己的响应,且全部从监控模式开始。

    来源 · 核实于

  • Attest 以 Play Integrity 为基础,并加入 Moatgator 的运行时信号,形成一个由你的后端验证的判定。

    来源 · 核实于

Runtime

边界在哪里

检测 Root 和 Hook 是一场持续的较量:工具在变化,有些还会躲避检查。没有完美的检测,因此 Runtime 结合多个信号,并与 Shield 和服务器端验证配合使用。

阅读完整文章

常见问题

应该拦截所有已 Root 的设备吗?

通常不应该。Root 是信号;许多用户出于正当理由 Root。拦截敏感操作而不是整个应用,并先查看数据。

能检测到 Frida 吗?

Frida server、gadget 和被 Hook 的函数都会留下应用可以检测到的痕迹。这些检查单独都不完美,所以要结合多项。

Magisk 隐藏 Root 怎么办?

隐藏 Root 的工具能骗过简单检查。把设备信号与服务器端核验的判定(如 Play Integrity)结合起来,设备无法轻易伪造这类判定。

检测会让应用变慢吗?

检查会带来一定开销。请在你的应用上实测,并选择运行哪些检测以及运行频率。

看看你的应用现状如何

将 APK、AAB 或 IPA 上传到免费的 Scan,无需注册即可获得评分。