android逆向基础【I】虚拟机概念

写在最前面:我是有一点安卓经验的,所以很基础的一些东西,我这里就不累赘了,只是作为日常笔记!

1.1虚拟机概念

虚拟机是用来运行操作系统或应用程序的,向用户提供虚拟体验;从技术方面讲就是一个可运行环境,可以在上面执行如:.class 文件、odex文件、oat文件等等

1.2相关虚拟机分类

1.java虚拟机
	java虚拟机执行的是java字节码,java字节码是程序编译生成java字节码并保存到
		class文件中	,java虚拟机通过解码class文件中的字节码内容来运行程序
	java虚拟机**基于栈架构**,虚拟机需要频繁的从栈上读取写入数据,这个过程需要指令分派与内存访问次数,会耗费很多CPU的时间。

大致流程如图:1.1


2.davilk虚拟机
	Android 5.0以下采用jit机制,
	1.dalvik虚拟机运行的是dalvik字节码,
	所有的dalvik字节码由,java字节码转换而来,并被打包到一个DEX可执行
	文件中,dalvik虚拟机通过解释DEX文件执行这些字节码。
	2.dalvik虚拟机基于寄存器架构,数据的访问通过寄存器间直接传 递,
	这样的访问方式比基于栈方式要快很多。
	3.alvik可执行文件体积更小。
	4.dalvik中的寄存器都是32位大小

3.art虚拟机
	1.Android 5.0版本及以上基于aot机制
	2.ART虚拟机执行的是本地机器码。
	
	在前面两种虚拟机中我们接触到了两种编译模式:
	JIT:Just In Time 即时编译技术,是dalvik虚拟机使用的模式。
	AOT:Ahead Of Time,预编译技术,是art虚拟机使用的模式 。



	文件格式区别:
	
	.dex =>dexopt=>.odex  dalvik加载执行的odex文件
	.dex=>dex2oat=>.oat   art加载执行的是oat文件

1.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值