欢迎光临散文网 会员登陆 & 注册

安卓逆向之APK的基本结构

2023-03-13 12:13 作者:初代目葱娘  | 我要投稿

APK:Android application package


一般包含以下内容:


[文件夹]assets:静态资源文件

存放未经编译的资源文件

一般是Apk中的静态文件,配置文件,原始数据及其他不常改变的文件,不会被解压缩,访问速度较快但空间占用较大


[文件夹]lib:库文件

存放运行App所需要的动态链接库(*.so)

内部分文件夹存放用于适配不同系统及处理器的版本

关于库文件:安卓系统中库文件分为以下两种

1.SharedLibraries:共享库文件

存放于系统目录中,为可供多个应用程序使用的库

2.NativeLibraries:本地库文件

存放于Apk中的lib文件夹中(APP安装后会被放到私有目录中),为应用程序特有的库文件,不会被其他应用程序使用


[文件夹]META-INF:签名文件

存放签名证书,App安装时作为校验的凭据(防止Apk被篡改)以及作为Apk著作权和所有权的声明

在打包Apk文件的时候会自动生成这些文件,若更改包内文件,签名会更改

CERT.RSA

CERT.SF

#App签名信息,安装时会检查这两个文件

MANIFEST.MF

#存放应用程序所有文件的清单信息

...


[文件夹]res:编译资源文件

存放编译后的资源文件

drawable

#存放图片资源文件(位图,矢量图)

layout

#存放布局文件(描述应用程序界面结构)

values

#存放值资源文件(存放App中使用的常量值和颜色信息)

...


[文件]AndroidManifest.xml:配置清单文件

描述应用程序的清单信息(包名,应用名,权限,安卓四大组件,版本等信息)

声明应用程序的主要组件-安卓四大组件(活动Activity,服务Service,广播接收器BroadcastReceiver等)

打包apk时该文件自动生成


[文件]classes.dex:核心代码文件

为Dalvik虚拟机的可执行文件,内部存放java字节码,可反编译为smail代码

因单个dex文件有大小限制,较大的apk会存在多个dex文件,运行时合并为一个dex文件运行

安装Apk后会被解压到私有目录中,然后被Dalvik虚拟机加载并运行

优点:可以使得应用程序的下载包变小

缺点:访问速度略慢于共享库文件

打包apk时该文件自动生成


[文件]resources.arsc:资源映射文件

辅助文件,存放应用程序的资源表

(资源表:存放应用程序的资源ID和类型的映射关系)

优点:可以使应用程序的资源文件变小

缺点:访问速度略慢于文本文件

安卓逆向之APK的基本结构的评论 (共 条)

分享到微博请遵守国家法律