DVM

了解Android的人都知道,可以用Java语言开发Android应用。但是Android操作系统其实只是使用了Java语言而已,真正运行Java代码的虚拟机,并不是JVM,而是DVM(Dalvik Virtual Machine)。DVM并不符合JVM规范,主要表现在以下几个方面:

  • JVM是Stack Based,DVM是Register Based
  • JVM执行的是Java Bytecode,DVM有自己的Bytecode
  • JVM要求Java代码编译成.class文件,而DVM要求把.class文件合并成.dex文件


分析DEX文件

因为DVM和JVM的区别,.dex文件和.class文件格式也有很大的不同。在前面的一篇文章里,我介绍了Classpy,用它可以很直观的观察.class文件。经过一番修改之后,现在它也可以打开.dex文件了,下面是几幅屏幕截图:

-

下载和运行Classpy

可以克隆Gradle项目自己编译,也可以下载可执行jar双击运行。但是注意,需要Java8环境!另外要注意,打开稍微大一点的文件,Classpy就会很慢,不知道是不是JavaFX的原因 :(



更多相关文章

  1. android2.3修改ethernet默认为不选中状态
  2. android 建立sdcard 并放文件 在程序中取文件
  3. 使用和管理Android中Activity的切换动画(二)
  4. android studio 3.0 -Aapt2Exception
  5. 转[Android]APK打包过程详解(二)
  6. 解决平台apk签名错误:no conscrypt_openjdk_jni in java.library.
  7. Android学习2
  8. android jni开发,用javah生成***.h头文件,用ndk在libs下生成***.so
  9. Android设备上使用WiFinspect抓取网络通讯包

随机推荐

  1. 写给小白的SQL学习文章
  2. 有了四步解题法模板,再也不害怕动态规划!
  3. 额,没想到,背包问题解题也有套路。。。
  4. 库/表/记录的增查删改
  5. 第八周
  6. JavaScript数据结构(4):树
  7. (进阶版)有了四步解题法模板,再也不害怕动态
  8. 对列和行的操作
  9. 一道 LeetCode 的多种解法,打消了我的自以
  10. 数据对比分析法,看这篇就够了!