如何检查Dalvik Cache是​​否被修改

时间:2012-04-01 14:34:42

标签: java android dalvik anti-piracy

所以有一些工具可以修补App的Dalvik缓存来删除复制保护 - 实际上是否有办法检查dalvik缓存?

是否只是复制的DEX文件,如果是,它是否仍然具有相同的校验和?非root应用程序是否有可能获得校验和?

2 个答案:

答案 0 :(得分:4)

dalvik缓存中的文件不是原始的dex文件 - 它们是odex(优化的dex)文件。安装应用程序时,将解压缩其dex文件,然后dalvik在其上运行优化传递并将结果存储在dalvik缓存中。

dalvik缓存目录上的目录权限阻止非系统应用程序列出目录内容,但是设置了执行权限并且odex文件本身是世界可读的,因此如果应用程序知道其文件名,则可以访问它们

但是,检查odex文件的完整性会很困难,因为它们在每个设备上可能都不同。所以你将无法进行简单的校验和检查。

我想你必须对dex文件结构进行深入比较,并将它们与原始dex文件进行比较。如果你想确定,首先需要对odex文件进行去索引,然后将结果与原始dex文件进行比较。

答案 1 :(得分:1)

我认为您可以调用dexopt进程(直接在设备中)并将新生成的dex与dalvik缓存中的dex进行比较,当然如果您的缓存dex被修改,则更改可以禁用检查本身。幸运补丁的作者建议从资产中加载外部代码然后执行到位,但这并不容易且100%有效