Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查Dalvik缓存是否已修改_Java_Android_Dalvik_Anti Piracy - Fatal编程技术网

Java 如何检查Dalvik缓存是否已修改

Java 如何检查Dalvik缓存是否已修改,java,android,dalvik,anti-piracy,Java,Android,Dalvik,Anti Piracy,因此,有一些工具可以修补应用程序的Dalvik缓存以删除复制保护-是否有一种方法可以检查Dalvik缓存 是否只是复制的DEX文件,如果是,是否仍具有相同的校验和?非根应用程序是否可能获得校验和?dalvik缓存中的文件不是原始的dex文件-它们是odex(优化的dex)文件。安装应用程序时,提取其dex文件,然后dalvik对其运行优化传递,并将结果存储在dalvik缓存中 dalvik缓存目录上的目录权限阻止非系统应用程序列出目录内容,但是设置了执行权限,并且odex文件本身是世界可读的,因

因此,有一些工具可以修补应用程序的Dalvik缓存以删除复制保护-是否有一种方法可以检查Dalvik缓存


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

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

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

但是,很难检查odex文件的完整性,因为每个设备上的odex文件都可能不同。所以你不能做一个简单的校验和检查


我想您必须对dex文件结构进行深入比较,并将其与原始dex文件进行比较。如果您想真正确定,您需要先对odex文件进行反排序,然后将结果与原始dex文件进行比较。

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