谷歌对dex文件的介绍:常量数组/字符串 DEX_FILE_MAGIC 是字节列表,这类字节必须出现在 .dex 文件的开头,以便系统将其原样识别。该值会特意包含一个换行符("\n" 或 0x0a)和空字节("\0" 或 0x00),以便协助检测某些形式的损坏问题。该值还可以将格式版本号编码为 3 个十进制数字;随着格式的演变,预计该值会单调递增。
注意:Android 9.0 版本中新增了对 039 版格式的支持,其中引入了两个新字节码 const-method-handle 和 const-method-type。(字节码集合的总结表中介绍了这些字节码。)在 Android 10 中,版本 039 扩展了 DEX 文件格式,以包含仅适用于启动类路径上的 DEX 文件的隐藏 API 信息。
注意:Android 8.0 版本中新增了对 038 版格式的支持。038 版本中添加了新字节码(invoke-polymorphic 和 invoke-custom)和用于方法句柄的数据。
注意:Android 7.0 版本中新增了对 037 版格式的支持。在 037 版本之前,大多数 Android 版本都使用过 035 版格式。035 版与 037 版之间的唯一区别是,是否添加默认方法以及是否调整 invoke.
反编译工具地址下载:
链接:https://pan.baidu.com/s/1MVwZLsXM9S8itkZmWav5TQ?pwd=bjvu
提取码:bjvu
1.工具介绍:
dex2文件夹是用来解析代码的,我提供的工具里面有使用方法
jd-gui是用来查看解析完成的代码
解析文档.txt是把布局等xml反编译出来的介绍文档
2.工具使用的时候出现的问题之:com.googlecode.d2j.DexException: not support version异常
这里直接提供解决方式,如果你在反编译过程中出现这个报错,那么使用文本工具打开你反编译的那个dex文件,把头改为036或者035,因为Android Studio中配置的minSdkVersion参数对应的系统版本是多少,dex文件头就会是多少,比如minSdkVersion配置成24(对应7.0的系统),编译出来的dex头为037版本(使用notepad++打开dex文件就可以看到)