您的位置:首页 > 其它

关闭patchoat

2015-07-22 15:33 239 查看

art patchoat

This tool takes already compiled images and oat files and changes their base address, acting as a cheap form of relocation.

Add a –include-patch-information flag to dex2oat and code to add required patch information to oat files created with the quick compiler.

https://android.googlesource.com/platform/art/+/53cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3c

关闭patchoat

尽管打开了WITH_PREODEX之后,已经生成了odex文件,但是第一次开机的时候,android会去做patchoat的动作,会修改odex文件偏移量,并放到/data/dalvik-cache/arm/目录下面。这样做主要是为了安全考虑,因为ELF文件被load进系统之后,如果每一次都映射同样的位置,很容易被hack利用这一点进行攻击。如果不考虑这种安全性问题,可以把这个属性给关闭。

关闭方法如下:

/art/runtime/globals.h

static constexpr bool kDefaultMustRelocate = false; //从而可以取消patch oat。


MTK平台还要修改如下的地方,否则有一些三方工具运行不起来:

/frameworks/base/core/jni/AndroidRuntime.cpp

#if 1 //将if 1改为#if 0,从而避免等待。
if (!bootOatDone) {
if (!strcmp(className, "com.android.internal.os.RuntimeInit")) {
waitOatDone();
bootOatDone = true;
}
}
#endif


这样修改之后既可以减小data分区的空间,又可以加快开机速度,但风险就是容易被hack利用固定映射地址进行攻击。

/data空间从开机后占用686.4M减少到212.4M,空间占用减少69%。

第一次开机时间从179s减少到42s,耗时减少76%。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息