从零开始学习安卓逆向(二)

一、apk的打包流程

在这里插入图片描述
1、打包资源文件Application Recourse,生成R.java文件
aapt来打包res资源文件,生成R.java、recources.arsc和res文件
- R.java:我们在编写代码的时候会用到的,里面有静态内部类,资源等。
- recources.arsc: 编译之后的二进制文件,记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID/以及所配置的维度信息,这是一个资源索引表,在给定资源ID和设备配置信息的情况下,能够快速找到资源。
- res:存放的是经过编译之后的资源文件,其中的每一个资源都会生成资源ID

2、处理aidl文件,生成相应的JAVA文件
aidl:安卓接口描述语言,它是安卓提供的用于进程间通讯的机制,位于android-sdk/platform-tools目录下,aidl工具解析接口定义文件然后生成相应的java代码接口供程序调用。如果项目没用到aidl则跳过这一步。

3、编译项目源代码,生成class文件
java compiler阶段,项目中所有的java代码,包括R.java和第二步生成java代码接口文件都会被java编译器javac编译成.class文件,生成的class文件位于工程中的bin/classes目录下

4、转换所有的class文件,生成classes.dex文件
dex阶段,通过dx工具,将.class文件和第三方库中的.class文件处理生成classes.dex文件,该工具位于android-sdk/platform-tools目录下,dx工具的主要工作是将java字节码转成Dalvik字节码

5、打包生成apk文件
apkbuilder阶段,通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和class.dex一起打包生成apk,打包工具apkbuilder位于android-sdk/tools目录下

6、对apk文件进行签名
jarsigner阶段,通过jarsigner工具,对上面的apk进行debug或release签名

7、对签名后的apk文件进行对齐处理
通过zipalign工具,将签名后的apk进行对齐处理,工具位于android-sdk/tools目录下。对齐的主要过程是将apk包中所有的资源文件距离文件其实便宜为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快,对齐的作用就是减少运行时内存的使用。

二、apk的安装、卸载流程

安装流程:
1、在data中的app路径下,以包名创建一个文件夹,并把apk文件放入进去,并产生了一个lib文件夹,放置了加载app所用的so文件
2、在data/data下,以包名为文件夹,把程序所用的资源文件放在其中,在这其中也是有相应的so文件的,如果我们不想加载so文件,那这个文件夹中的so文件也需要进行删除
3、在data/dalvik-cache把相应架构的dex文件写入其中
4、在data/system/package.xml把我们整个app进行声明,包括源码路径

卸载流程:
删除过程与上述过程相同

三、虚拟机

3.1 java虚拟机
基于栈架构,自己实现了与硬件交互的系统,执行的是.java编译之后的.class文件

3.2 dalvik虚拟机(jit机制)
android5.0以下系统的手机使用的dalvik虚拟机,执行的是dalvik字节码,dalvik可执行文件体积更小,基于寄存器架构。我们知道apk在打包的时候会将.java代码编译成.class文件,但是dalvik虚拟机只会执行.dex文件,这个时候dx会将.class文件转换成dalvik虚拟机执行的.dex文件。dalvik虚拟机在程序启动的时候会先将.dex文件转换成快速运行的机器码,又因为65535这个问题,导致我们在应用冷启动的时候有一个合包的过程,最后导致一个结果就是我们的app启动慢,这就是dalvik虚拟机的特性。注意,dexopt对.dex文件进行优化成为.odex文件,dalvik虚拟机加载执行的为.odex文件

3.3 art虚拟机(aot机制)
android5.0及以上的系统使用的是art虚拟机, art虚拟机兼容dalvik虚拟机的特性,但是art有一个很好的特性AOT,这个特性就是我们在安装apk的时候就将dex直接处理成可直接供art虚拟机使用的机器码,art虚拟机将.dex文件转换成可直接运行的.oat文件,art虚拟机天生支持多dex,所以不会又一个合包的过程,所以art虚拟机会很大的提升app的冷启动速度。注意:dex2oat将.dex文件转化为.oat文件,art虚拟机执行的是.oat文件

xposed hook的是java代码,所以xposed 87版本不支持5.0以及以上系统,89版本的支持5.0-7.1

四、android killer的安装及配置
  • 下载链接:http://pan.baidu.com/s/1dFzYtA5 密码:2gep
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值