首页 > 其他分享 >Android-APK反编译

Android-APK反编译

时间:2023-04-11 17:45:55浏览次数:32  
标签:dex 文件 Apk APK 文件夹 反编译 Android

1.原理
学习反编译之前,建议先学习一下Apk打包的过程,明白打包完成后的Apk里面都有什么文件,各种文件都是怎么生成的。

Apk技术也有非常多的技术可以学习,主要都是围绕着如何减小体积,如何提高打包速度展开,这里先不多说了。下面是一张基本的Apk文件结构图。
Apk文件本质上其实是一个zip包。直接拿解压工具解压就可以看到其中包含了什么。下面简单介绍一下Apk文件的结构。

  • AndroidManifest.xml:应用的全局配置文件
  • assets文件夹:原始资源文件夹,对应着Android工程的assets文件夹,一般用于存放原始的网页、音频等等,与res文件夹的区别这里不再赘述,可以参考上面介绍的两篇文章。
  • classes.dex:源代码编译成class后,转成jar,再压缩成dex文件,dex是可以直接在Android虚拟机上运行的文件。
  • lib文件夹:引用的第三方sdk的so文件。
  • META-INF文件夹:Apk签名文件。
  • res文件夹:资源文件,包括了布局、图片等等。
  • resources.arsc:记录资源文件和资源id的映射关系。

反编译Apk的目的就是Apk拆成我们可以阅读的文件。
通过反编译,我们一般想要得到里面的**AndroidManifest.xml文件、res文件和java代码。

标签:dex,文件,Apk,APK,文件夹,反编译,Android
From: https://www.cnblogs.com/wangguanjia/p/17307058.html

相关文章

  • Android - AXMLPrinter2.jar的使用方法
    我们需要查看打出的apk包中AndroidManifest.xml文件,但是打开之后发现是一大堆的乱码这是就需要反编译工具,AXMLPrinter2.jarAXMLPrinter2.jar官方介绍:AXMLPrinter2.jarapk分析APK文件,取得APK文件中的包名、版本号及图标,很强大的工具,再一次感受到了批处理的牛逼。可以将android......
  • UIScrollView SnapKit使用
    直接上代码,看ViewDidLoad方法中的注释。一共10个约束,UIScrollView上下左右4个,其子试图contentView上下左右宽高6个。注意点:(以要求可以上下滚动为例,可以先看完代码再回头理解注意事项)1、contentView的宽高根据需求设置优先级,哪边需要滚动,优先级就必须低,因此这里设置高度优先......
  • 成品直播源码,Android实现监听Settings值变化的功能
    成品直播源码,Android实现监听Settings值变化的功能先创建一个内部类继承自ContentObserver   classSettingsContentObserverextendsContentObserver{    publicSettingsContentObserver(){      super(newHandler());    }    ......
  • Android Kotlin mapTo
     在Kotlin中,mapTo是一种用于将集合中的元素转换成另一个集合的函数。它可以将一个集合的元素映射到另一个集合,并将结果添加到目标集合中。mapTo的语法如下:fun<T,R,C:MutableCollection<inR>>Iterable<T>.mapTo(destination:C,transform:(T)->R):C其中:T是源集......
  • Android Debug (调试)注解处理器
     1.addremotedebugconfiguration2.copyjvmoptions:(-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005),andpasteittogradle.propertiesfile.  3.thenclickdebugbuttontoattachlocalhost:5005,expandthegradletasklist......
  • Android布局
    接下来,将文本转换为十进制数字。对 stringInTextField 调用 toDouble(),并将其存储在一个名为 cost 的变量中。valcost=stringInTextField.toDouble()不过,这样行不通-需要对 String 调用 toDouble()。原来 EditText 的 text 属性是 Editable,因为它表示可以......
  • Android MVVM之SavedStateHandle数据保存之详解与使用。
    一、介绍        SavedStateHandle从名字可以看出,是保存状态的。这个类常和MVVM中的ViewModel搭配使用,对页面生命周期的数据状态的缓存与恢复做一个容器。这个容易相对onSaveInstanceState(Bundle)要更强一点,保存的数据类型也比较丰富,数据量也相对较大二、分析     ......
  • Android 短视频和图片无读写权限TargetApi>=29解决方案
    一、背景        目前很多公司在适配API29,也就是targetSdkVersion=29的权限适配。不仅是权限的适配,还有政策的要求。目前就有很多大公司已收到工信部要求,不给读写权限:android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE      ......
  • Android 代码混淆 包名被混淆 主工程二次混淆 一站解决你的混淆
    代码混淆(Obfuscatedcode)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。已经存在许多种功能各异的代码混淆器。将代码中的各种元素,如......
  • Android DataStore Proto框架存储接入AndroidStudio教程详解与使用
    一、介绍        通过前面的文字,我们已掌握了DataStore的存储,但是留下一个尾巴,那就是Proto的接入。Proto是什么?Protobuf,类似于json和xml,是一种序列化结构数据机制,可以用于数据通讯等场景,相对于xml而言更小,相对于json而言解析更快,支持多语言官网:LanguageGuide(proto3)|......