天天看点

APK文件介绍

APK文件:

APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。

APK文件目录:

assets   不经过 aapt 编译的资源文件

lib   .so文件

META-INF 文件摘要,摘要加密和签名证书文件目录

CERT.RSA 公钥和加密算法描述

CERT.SF 加密文件,它是使用私钥对摘要明文加密后得到的 密文信息,只有使用私钥配对的公钥才能解密该文 件

MANIFEST.MF 程序清单文件,它包含包中所有文件的摘要明文

res 资源文件目录,二进制格式

drawable         图片

layout 布局

menu 菜单

resources.arsc 经过 aapt 编译过的资源文件

classes.dex 可执行文件

AndroidManifest.xml   配置文件

APK打包流程: 

        打包资源(res/assets/AndroidManifest.xml/Android基础类库)文件,生成 R.java和resources.ap_文件

        处理AIDL文件,生成对应的.java文件

        编译Java文件,生成对应的.class文件

        把.class文件转化成Davik VM支持的.dex文件(.java=>.class=>.dex)

        打包生成未签名的.apk文件

        对未签名.apk文件进行签名

        对签名后的.apk文件进行对齐处理

APK安装流程:

1.安装方式

系统程序安装

通过Android市场安装

ADB安装(adb devices:显示当前连接的设备;adb install 安装包路径)

手机自带安装

2.安装过程

复制APK安装包到/data/app目录下,解压并扫描安装包,把dex文 件(Dalvik字节码)保存到/data/dalvik-cache目录,并/data/data目录 下创建对应的应用数据目录。

3.安装后文件所在目录

/system/app

系统自带的应用程序,获得adb root权限才能删除

/data/app

用户程序安装的目录,安装时把apk文件复制到此目录

/data/data

存放应用程序的数据

/data/dalvik-cache

将apk中的dex文件安装到dalvik-cache目录下

4.卸载过程

删除安装过程中在上述三个目录下创建的文件及目录。   

APK反编译与回编译:

先查壳,再反编译看验证

        .apk文件==>反编译apk(dex/配置文件/资源文件(apk反编译败)) ==>修改关键文件实现自己的目的==>重新打包签名(无法重新打包) ==>apk安装后无法 运行。

        apktool  .dex=>.smali  

          dex2jar  .dex=>.jar

        Apktool工具实际上只反编译以下三种类型文件:

        .xml文件、.dex文件、.arsc文件

        去除广告和弹窗,撇开不存在于smali的这种情况,容易的就是 可以在XML中寻到Activity,难的就是寻不到,发生这种情况时,        就要分析代码,程序逻辑,抓住关键信息,界面和函数。

注意:

        当字符串等关键信息搜不到时,可以从三个方向考虑:1.字符串 在so层;2.字符串被加密了3.结合了服务器,服务器返回,本地 显示。

虚拟机:

1.java虚拟机

java字节码

基于栈架构

2.dalvik虚拟机(jit机制)

Android 5.0以下

dalvik字节码

dalvik可执行文件体积更小

基于寄存器架构

3.art虚拟机(aot机制)

Android 5.0版本及以上

注意:

.dex =>dexopt=>.odex  dalvik加载执行的odex文件

.dex=>dex2oat=>.oat    art加载执行的是oat文件

继续阅读