gpt4 book ai didi

android - 以编程方式验证 Android odex 文件

转载 作者:搜寻专家 更新时间:2023-11-01 08:03:44 26 4
gpt4 key购买 nike

是否可以通过编程方式验证系统生成的 odex 文件的完整性/校验和?

我想知道如何检测已获得 root 权限的 Android 手机上的攻击者是否为应用程序安装了他自己版本的 odex 文件。

最佳答案

假设是,如果攻击者能够替换 .odex 文件,他们就有足够的权限来做任何其他事情。

构建生成的 odex 文件位于/system 上的 protected 目录中,该目录以只读方式挂载。任何能够修改这些文件的人都可以简单地破解 VM 或替换系统的主要部分。

installd 生成的 odex 文件位于/data/dalvik-cache 中,并受文件系统权限保护。任何有权修改 .odex 文件的人都可以做各种各样的事情,比如在你不注意的时候重新安装应用程序。对于攻击者来说,这将是一种更好的方法,因为它可以在 OTA 更新(导致重新 dexopt)中幸存下来。

就地修改优化的 DEX 数据是可行的,但有点痛苦。这样做比替换应用程序的优势在于它更微妙——要重新安装应用程序,您要么需要原始签名 key ,要么希望用户没有意识到他们现在运行的应用程序具有相同的名称但不同的签名者。

所以,.odex 文件有一个校验和,如果您怀疑文件系统的完整性,您可以查看它,但除了重新执行 dexopt 和前后比较之外,没有检查篡改的规定。

有关 dexopt 和 odex 的一般信息可在 dalvik/docs/dexopt.html 中的 Android 源中找到。 ;格式良好的版本是 available here .

编辑:我应该提一下,DEX 和 ODEX 文件确实在文件头中存储了校验和。这些通常被忽略,因为出于性能原因,您不希望每次启动应用程序时都扫描整个文件。您可以通过将 dalvik.vm.check-dex-sum 属性设置为 true(或在命令中传递 -Xchecksum)来启用强制校验和验证线)。

校验和旨在检测文件损坏,而不是故意更改。 (您可以使用 dexdump -c 手动扫描。)篡改文件的人可能会重新计算有效的校验和并将其存储,因此您需要在别处保存已知完好的副本。并且您希望使用 SHA1 或类似而不是 adler32 来使操纵二进制文件以获得相同的校验和值变得更加困难。

关于android - 以编程方式验证 Android odex 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com