APK结构

Apk 全称 Android Package,其实它就相当于一个压缩包,只需要将文件后缀转换为 zip 即可解包
这里以高校体育为例
image

首先看文件夹内直接存放的内容
image
其中比较重要的文件有配置清单文件AndroidManifest.xml,他是 App 的“全局说明书”,声明了所有页面(Activity)、所需权限(如定位、网络)、应用名称和版本信息。这里使用 apktool 进行解包后可以进行查看

java -jar apktool_3.0.1.jar d "C:\Users\jie ge\Desktop\高校体育\高校体育.apk" -o output

image
下面这些就是APP会向用户申请的权限。

这是申请权限(需要用户授权)
<uses-permission android:name="android.permission.CAMERA"/>

这是自定义权限(App自己定义的)
<permission android:name="com.example.gita.gxty.permission.JPUSH_MESSAGE" .../>

这是硬件声明(不是权限,是告诉系统用到了这个硬件)
<uses-feature android:name="android.hardware.sensor.accelerometer"/>

image
这里是广告变现的第三方 SDK,这里面塞了很多广告的接口 api。
这里还可以看见一些程序启动相关的信息
image
image
image
程序启动获取当前 APK 的文件路径(sourceDir),用于后续读取 APK 自身内容,然后将 APK 当成一个 Zip 压缩包打开,准备从中提取被加密的真正的代码文件,接下来如果无法打开 APK(文件损坏或被篡改),直接杀死当前进程并退出。最后调用 Util.PrepareSecurefiles 方法,从 APK 的加密区域中提取出真正的 dex/so 文件,解密后释放到应用的私有目录如(data/data/com.example.gita.gxty/下)。这一步完成了脱壳——真正的业务代码在此时才被还原到文件系统中

assets 目录存放 APK 的静态资源文件,比如视频,音频,图片等

image
可以看出来这个文件夹里面的文件很大一部分都是 png 图片或者是 data 文件
image
神秘天气符号
image
神秘推广码

Lib 目录 armeabi-v7a 基本通用所有 android 设备,arm64-v8a 只适用于 64 位的 android 设备,x86常见用于android 模拟器,其目录下的. So 文件是 c 或 c++编译的动态链接库文件

image
高校体育拥有四个 lib 文件夹说明他包含了市面上四大主流 Android CPU 架构的 native 库
它同时支持 ARM 架构arm64-v8a 高端机、armeabi-v7a 老旧机)和 x 86 架构x86 模拟器/平板、x86_64 部分高端模拟器/Chromebook)。
我们点进去看看内容,以 arm64-v8a 这个文件夹中的内容为例
image
文件名中出现了 libshell-4.6.2.2.so 和 libshell-super.xxx.so
这两个是十分出名的腾讯加固方案,包括腾讯御安全和腾讯腾讯乐固,其中腾讯乐固为旧版本的,新版本的腾讯乐固大多数为libBugly. So,libtup. So, libexec. So。但其中还有一个点值得我们注意的是libsgcore.So, 这个是阿里出品的安全服务:阿里聚安全。推测应该是在上学期启用 NFC 刷卡打卡校园跑引入支付宝后新增的手段。
另外一个 so 文件也可以看看就是 libAMapSDK_MAP_v 7_6_0.So,这个 libAMapSDK 就是高德地图(AMap)的官方底层定位库,说明高校体育是通过高德地图提供的服务进行记录的。
还有其他的一些安全服务就不一一展开,由此可知这个文件夹可以看出这个APP 配置了些什么服务。这可以为我们进行逆向提供参考。

META-INF 目录,保存应用的签名信息,签名信息可以验证 APK 文件的完整性,相当于 APK 的身份证 (验证文件是否又被修改)

image

Res 目录,res 目录存放资源文件,包括图片,字符串等等,APK 的脸蛋由他的 layout 文件设计

image

Classes.Dex 文件,Classes.Dex 是 java 源码编译后生成的 java 字节码文件,APK 运行的主要逻辑,对于这种比较大型的商业软件,一般会分为多个 dex 文件,但是在实际运行时就会合并为一个 dex 文件运行。

image

Resources.Arsc 文件 resources. Arsc 是编译后的二进制资源文件,它是一个映射表,映射着资源和 id,通过 R 文件中的 id 就可以找到对应的资源

在我们使用 apktool 对 apk 进行分析过后,resources. Arsc 已经被自动处理了,处理结果放入了 res 文件夹中。
image
这里面各种 value 子文件夹就是处理之后的结果

posted @ 2026-09-11 13:44  JIEGE328  阅读(13)  评论(0)    收藏  举报