Android学习总结——APK打包过程与反编译

本文详细介绍了Android APK的打包过程,包括APK文件的组成,如classes.dex和resources.arsc。同时,探讨了资源如何转换到APK中,以及XML和图片资源的处理方式。在反编译部分,提到了使用SDK的dexdump工具和apktool进行smali代码的生成,以及dex2jar和jd-gui进行Java源码的还原。
注:以下操作假定也设置好PATH

1. APK文件介绍

*.apk实际是一个rar格式的压缩包。

内容:

classes.dex : 所有的*.class字节码被重新编译,并组合成了classes.dex文件。可以由Dalvik虚拟机执行。

resources.arsc :资源的索引文件。

2. 资源->APK

图表 1源文件与APK对应关系

APK中的*.XML文件都是经过压缩加密的,只有在raw文件夹下的文件才不会加密。此外图标类资源也不会被压缩加密。

3. dex->smali->java

3.1. SDK自带的工具dexdump

作用:从*.dex中生成对类的完整描述,以smali语言表示。无目录结构。

dexdump -d filename.dex  > file.txt 

结果截图:

3.2. apktool

作用:将apk文件反编译为smali语言文件,并保留源程序的组织结构,反编译XML文件

语法:apktool d *.apk [<dir>] 意为:decode *.apk to dir.

4. dex->jar->class->java

4.1. dex->jar

工具:dex2jar

4.2. jar - > java 

核心JDCore

工具:jd-gui,图形化工具。可以将class文件反编译为java文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值