文章正文
oat文件结构(一)
由于我的nexus 6p手机耗电特别严重,基本上只能用半天,下载了android的源码,不能白下,所以想优化一下。编写了一个应用程序,这个应用程序使用了activitymanagerservice 的隐藏接口forceStopPackage,发现没有权限,通过配置systemuid,还是因为谷歌手机出厂的时候与aosp源码的签名不同,导致无法正常工作。想通过root权限,但是因为selinux的缘故,发现还是有问题,但是又不想关闭selinux。然后想试着更改services.odex直接push到手机中使用,但是将编译好的services.odex文件push到手机中,发现手机起不来了。通过对比手机原来的对应文件,发现只有四个字节不同,如下:
通过修改源代码,编译好services.odex,然后使用二进制编辑工具更改这四个字节,将其改为手机原来的值,发现手机可以正常工作,所以想搞清楚为什么更改这四个字节就可以正常工作,这就有了这篇文章,
原来这个是一个oat文件,谷歌已经给了一些工具可以解析这种文件,在源码中可以编译通过make artdump,可以得到一个oatdump程序,将这个程序放到手机中,通过命令可以解析出来oat文件的结构信息,结合对比那四个字节可以看出,这四个字节的含义是bootimage的校验值。
Dec. 2, 2016, 9:27 p.m. 作者:zachary 分类:Android 阅读(1633) 评论(0)
评论列表:
评论: