APK反编译的那些事

这篇具有很好参考价值的文章主要介绍了APK反编译的那些事。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

谷歌对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.工具介绍:

APK反编译的那些事

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文件就可以看到)

APK反编译的那些事文章来源地址https://www.toymoban.com/news/detail-508868.html

到了这里,关于APK反编译的那些事的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言常量(整型、实型、字符型、字符串、符号常量)

    对于C语言常量,该文章有详讲,由于文章太长,可参考如下思维导图和目录,可通过目录选择自己所需要的内容阅读。 整型常量即整数,包括正整数、负整数和零。C语言中,整型常量可以用十进制、八进制、和十六进制表示。 十进制表示: 由数字0-9,正、负号组成,如3

    2024年02月07日
    浏览(41)
  • JVM的内存分配及各种常量池的区别(静态常量池、运行时常量池、字符串常量池)

    先了解下JVM中的内存分配,此处以hotspot vm为例(官方jdk采用的vm) 堆内存是各个线程共享的区域 它用于存储已经被虚拟机加载的类信息、常量、静态变量、即编译器编译后的代码等数据。静态变量、常量在方法区,所有方法,包括静态和非静态的,也在方法区 这里解释一下方法

    2023年04月14日
    浏览(52)
  • springboot yml文件自定义配置的读取、使用 字符串 数组 对象 集合

    .yml 配置 controller代码 实体类 Student.java Users.java User.java 方式一、 http://localhost:9801/test/test1 方式二、 http://localhost:9801/test/test2 方式三、 http://localhost:9801/test/test3 参考: SpringBoot:yml文件详解-CSDN博客 https://www.jb51.net/article/216769.htm

    2024年02月05日
    浏览(49)
  • C语言——字符串常量初始化

            使用双引号括住字符串的字符来创建字符串常量。         使用字符数组来存储字符串常量。         使用字符串指针来初始化字符数组。         无论使用哪种方法,字符串常量在C语言中都是不可修改的。尝试修改字符串常量会导致未定义的行为。

    2024年01月23日
    浏览(51)
  • C语言入门之变量、常量、字符串、转义字符

    文章目录 变量 常量 字符串 转义字符 1.变量的命名规则: 只能由字母(包括大写和小写)、数字和下划线( _ )组成。 不能以数字开头。 长度不能超过63个字符。 变量名中区分大小写的。 变量名不能使用。 2.变量的分类:         变量可以分为局部变量以及全局

    2023年04月19日
    浏览(61)
  • IDEA java: 常量字符串过长问题解决

    Error:(41, 41) java: 常量字符串过长 1、字符串长度过长,导致idea默认使用的javac编译器编译不了。 解决办法: Javac编译器改为Eclipse编译器。 File-Settings-Build.Execution,Deployment-Compiler-Java Compiler 旭东怪的个人空间-旭东怪个人主页-哔哩哔哩视频 哔哩哔哩旭东怪的个人空间,提供旭东

    2024年02月11日
    浏览(58)
  • Java中关于字符串常量池的详解!!!

    Java使用 “ ” 称为字符串常量,为了提高程序的运行速度,节省空间,JVM会维护一个字符串常量池。当字符串常量第一次出现,则产生新对象并将该对象置入常量池中,后续如果再出现该字符串常量,不会产生新对象,直接复用常量池中的已有对象。 “ ” 内容都是字符串常

    2024年02月09日
    浏览(44)
  • JVM运行时数据区——字符串常量池位置的调整

            在JDK6及之前,使用永久代来实现方法区,字符串常量池(StringTable)是在 永久代(方法区)中 的,但是方法区的回收效率不高,在Full GC时才会回收。           在JDK7中,将字符串常量池 转移到了堆中 ,分配在年轻代和老年代中。         在JDK8中,为了 融合

    2024年02月16日
    浏览(33)
  • 数据结构(Java实现)-字符串常量池与通配符

    字符串常量池 在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、更节省内存,Java为8种基本数据类型和String类都提供了常量池。 “池” 是编程中的一种常见的, 重要的提升效率的方式, 我们会在未来的学习中遇到各

    2024年02月10日
    浏览(50)
  • 谷歌aab包在Android 14闪退而apk没问题(targetsdk 34)

    Unity应用(target SDK 34)上线到GooglePlay,有用户反馈fold5设备上(Android14系统)疯狂闪退,经测试,在小米手机Android14系统的版本复现成功了,奇怪的是apk直接安装没问题,而打包成aab就是疯狂闪退。 Unity版本Unity2020.3.18f1c1。 老办法,logcat抓包,看看闪退日志。 日志有一行引起了

    2024年02月21日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包