174888 发表于 2020-2-21 15:27

《从零开始学Android逆向(07)-什么是dalvik虚拟机》

本帖最后由 174888 于 2020-2-21 15:30 编辑


本帖最后由 174888 于 2020-2-21 15:23 编辑

前言    写这从零开始学破解的教程是因为有很多人想学习Android逆向但是不知道怎么去学习,网上教程是找到一大堆,但是大多讲的都杂乱无章,看了都看不懂的感觉,也有不少刚接触Android逆向或者说也学习了一段时间的逆向了.但是还是不知道自己学的啥,感到很迷茫.
    从今天开始我会通过写图文的教程方式手把手的教大家如何学习逆向.由于Android系统在电脑运行的特殊性,那么我们需要提前准备好可以调试运行安卓的环境以及各项工具的使用通用性,下面我会逐步讲解每一个详细的步骤.


    如果有不明白的小伙伴,可以私信给我,告诉我哪里没有看懂,我会在教程中再作补充.

    本教程还有后续内容,更新时间不固定,但会持续更新,目前我总结出来的差不多应该有200个帖子左右的内容,由浅及深,但由于我本人水平有限,关于更难的部分,我会在更靠后的章节部分来讲解,由于是免费分享给大家.所以本教程仅以图文方式展现,并无视频.

那么下面开始今天的课程吧:

->跨平台,不需要硬件支持,自己实现了和硬件交互的系统
->基于栈架构
->安卓5.0以下
->dalvik字节码
->3.art虚拟机(aot机制)——5.0是个翻天覆地的变化
->.dex=>dex2oat=>.oat 基于art虚拟机
<span]
java虚拟机 通过软件来模拟出来的具有完整的硬件系统功能、运行在完全隔离的环境中的完整的计算机系统基于java字节码跨平台虚拟机 基于栈结构
Dalvik虚拟机Dalvik虚拟机( Dalvik Virtual Machine ),是由Dan Bornstein编写的,DVM是Google专门为Android平台开发的虚拟机,它运行在Android运行时库中。需要注意的是DVM并不是一个Java虚拟机(以下简称JVM)
Dalvik虚拟机采用的是JIT(Just-In-Time)编译模式,意思为即时编译,我们知道apk被安装到手机中时,对应目录会有dex或odex和apk文件,apk文件存储的是资源文件,而dex或odex(经过优化后的dex文件内部存储class文件)内部存储class文件,每次运行app时虚拟机会将dex文件解释翻译成机器码,这样才算是本地可执行代码,之后被系统运行。
Dalvik虚拟机负责解释dex文件为机器码,如果我们不做处理的话,每次执行代码,都需要Dalvik将dex代码翻译为微处理器指令,然后交给系统处理,这样效率不高。为了解决这个问题,Google在2.2版本添加了JIT编译器,当App运行时,每当遇到一个新类,JIT编译器就会对这个类进行编译,经过编译后的代码,会被优化成相当精简的原生型指令码(即native code),这样在下次执行到相同逻辑的时候,速度就会更快。安卓虚拟机ARTAndroid4.4版本以前是Dalvik虚拟机,4.4版本开始引入ART虚拟机(Android Runtime)。在4.4版本上,两种运行时环境共存,可以相互切换,但是在5.0版本以后,Dalvik虚拟机(简称DVM)则被彻底的丢弃,全部采用ART。
ART(Android Runtime) 是一种执行效率更高且更省电的运行机制,执行的是本地机器码,这些本地机器码是从dex字节码转换而来。ART采用的是AOT(Ahead-Of-Time)编译,应用在第一次安装的时候,字节码就会预先编译成机器码存储在本地。在App运行时,ART模式就较Dalvik模式少了解释字节码的过程,所以App的运行效率会有所提高,占用内存也会相应减少。谷哥在5.0以后的Android版本中默认了ART模式启动,就是希望Android能摆脱卡顿这个毛病。
ART和Dalvik的区别Dalvik就好像拖拉机打火,而ART则只需要一拧就可以了。* Dalvik每次都要编译再运行,ART只会安装时启动编译* ART占用空间比Dalvik大(原生代码占用的存储空间更大),就是用“空间换时间”* ART减少编译,减少了CPU使用频率,使用明显改善电池续航* ART应用启动更快、运行更快、体验更流畅、触感反馈更及时
===============================


《从零开始学Android逆向(01)-逆向环境搭建-JDK的安装与配置》
https://www.52hb.com/thread-45952-1-1.html
(出处: 吾爱汇编论坛)

《从零开始学Android逆向(02)-逆向环境搭建-SDK与NDK的安装与配置》
https://www.52hb.com/thread-45953-1-1.html
(出处: 吾爱汇编论坛)
《从零开始学Android逆向(03)-APK的文件结构》
https://www.52hb.com/thread-45955-1-1.html
(出处: 吾爱汇编论坛)

《从零开始学Android逆向(04)-APK的打包流程》https://www.52hb.com/thread-45957-1-1.html(出处: 吾爱汇编论坛)
《从零开始学Android逆向(05)-APK的安装流程》
https://www.52hb.com/thread-46022-1-1.html
(出处: 吾爱汇编论坛)

《从零开始学Android逆向(06)-ADB常用命令指令集》https://www.52hb.com/thread-46023-1-1.html(出处: 吾爱汇编论坛)
下次更新->什么是dalvik字节码!


依次帖子更新内容如下:
什么是dalvik字节码
如何配置Androidkiller与使用
如何篡改APK的名称与图标.
怎样修改包名和实现应用的分身
如何通过修改AndroidManifest.xml去除单机游戏的广告
更多精彩内容,容我慢慢更新,本次帖子仅更新在吾爱汇编论坛.非允许,请勿转载~

拿着雪糕 发表于 2022-2-3 10:27

十分感谢大佬

CkipEgYnbL 发表于 2022-2-22 22:04

刚好需要 谢谢大佬

zwVqG0972 发表于 2022-2-23 08:57

回复,顶帖,赚币,谢谢楼主

aVksWF94 发表于 2022-3-2 20:14

谢谢分享

mfleB 发表于 2022-3-2 20:51

感谢楼主

CRQTnMsFS 发表于 2022-3-2 22:08

感谢楼主

yDIld285 发表于 2022-3-4 02:00

楼主的帖子不错,多发点~

ghostxu 发表于 2022-3-4 02:00

此处应该有鼓励~

tzxM48 发表于 2022-3-4 02:00

谢谢分享
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 《从零开始学Android逆向(07)-什么是dalvik虚拟机》