Android动态加载oat文件总结一

本文探讨了Android从Dalvik到Art虚拟机的动态加载机制变化。在Art时代,apk在安装时即被编译为oat文件,运行时直接执行ARM指令。动态加载在Art环境下同样涉及将dex文件转换为oat文件的过程。作者关注安全方面,尝试直接加载oat文件以增加保密性和逆向工程难度,并分享了在Mac上搭建JNI环境遇到的问题及解决办法。
摘要由CSDN通过智能技术生成

   Andriod的Dalvik时代已经过去,Art时代的到来,引发了一些列的变化,或许在开发者的眼里,没有任何的改变,概念上的一些解释也只是入耳即过,但是作为学习安全的一名菜鸟级人物,虽说没有大牛们的高瞻远瞩,但是也略有自己的一点看法与总结。

    早在Dalvik上就有动态加载这么回事,当然到了Art时代,动态加载依旧存在,好了,现在开始开门见山地来说说吧!

    Dalvik上地动态加载机制是说动态加载一个apk,zip或dex文件进内存,然后开始解析dex文件到一个数据结构中,最后Dalvik会边解释边执行Dex文件中的每一条smali指令;

然而在Art时代时,却发生了质的改变,早在apk进行安装的时候,Android系统就将apk中的dex文件编译成了集dex内容和arm指令于一身的oat文件,这样当开始运行软件的时候,就可以直接运行arm指令,而这时候art虚拟机只是充当了一个索引一样,从dex中找寻和arm相关的映射,于是就舍去了原来的"大无畏”的解释的职责,那么可想而知,软件的运行效率自然上升了,同样会说编译的时候做了牺牲,但这点牺牲应当是在用户能够接受的范围内的!那么,说到这里,动态加载载art时代究竟是怎样的?

    大家可以想像,当你开发一款产品时,如果你时开发者,那么你写的一段代码中动态加载的文件,会是什么文件?毫无疑问,还是dex文件或apk,zip等格式的压缩文件,对,那么这时候就有一个文件,既然apk里面的dex主文件已经被翻译成了oat文件,那

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值