APK逆向过程基础

本文详细介绍了APK的打包过程,包括资源文件打包、AIDL处理、源代码编译、 Dex转换等七个步骤。同时,探讨了Android反编译,重点讲解了apktool、dex2jar和jd-gui三个常用工具的使用方法,帮助开发者学习和理解APK内部机制。
摘要由CSDN通过智能技术生成

一.APK的打包过程

       了解apk的逆向过程首先需要了解apk包是怎么来的,都包括哪些内容,所以我会从apk的打包过程讲起。下面可以看到Android官网给出的一张apk打包的基本流程图:(蓝色格子是本人添加的)

      

从中可以梳理出apk打包的基本流程有如下7步:

1. 打包资源文件

对象:Resource文件(res目录中的文件)、 Assets文件(assets目录中的文件)、 AndroidManifest.xml文件

工具:aapt(Android Asset Package Tool)工具,负责编译和打包资源

产物:项目中的AndroidManifest.xml文件和布局文件XML都会编译,然后生成相应的R.java,另外AndroidManifest.xml会被aapt编译成二进制,除了assets和res中的raw资源被原封不动地打包进APK之外,其它的资源都会被编译或者处理,会生成一个resources.arsc文件和一个R.java,前者保存的是一个资源索引表,后者定义了各个资源ID常量

 

2. 处理AIDL文件

对象:aidl文件

工具:aidl(Android Interface Definition Language)工具,即Android接口描述语言工具

产物:生成相应的Java文件供程序调用,若项目中没有使用到aidl文件,则跳过这步

 

3. 编译项目源代码

对象:R.java、Java接口文件以及工程源代码

工具:Java编译器(javac)

产物:生成多个.class文件(字节码文件)

 

4. 转换所有.class文件

对象:.class文件和第三方库的jar包

工具:dx工具

产物:生成classes.dex文件(Dalvik字节码)

 

5. 打包生成apk

对象:classes.dex文件、resources.arsc和其他的资源(没有编译的资源,如assets目录下资源、/res/raw目录下的资源)

工具:apkbuilder

产物:未签名的apk文件

 

  • 23
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值