文章目录

  • 一、Android 应用安装
  • 二、APK 文件格式
  • 三、使用 Python 提取 APK 文件

一、Android 应用安装


APK 是 Android 应用的安装文件 , 现在也有 AAB 格式的 , AAB 安装包也可以导出 APK 安装文件 ;

应用安装时 , 会将 APK 安装包拷贝到 /data/app/packageName/ 目录下的 base.apk ,

如 : 某应用会将 apk 文件拷贝到 /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/base.apk 位置 ;

APK 安装目录参考 【Android 逆向】应用安装目录 ( Android 应用的默认安装目录 | 查找 Android 应用的安装目录 | 查询当前正在运行的应用包名 | 根据包名查询应用安装路径 ) 博客 ;

/data/data/package.name/lib 是应用自带的 so 动态库 , 在应用安装时安装的文件 ;

/data/data/com.qidian.QDReader/lib文件是软链接文件 , 真实的文件地址是 /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/lib/arm 地址 , 这是应用的安装目录 ;

lrwxrwxrwx  1 root    root            66 2021-10-26 10:10 lib -> /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/lib/arm

参考 【Android 逆向】应用数据目录 ( files 数据目录 | lib 应用自带 so 动态库目录 | databases sqlite3 数据库目录 | cache 缓存目录 ) 博客 ;

二、APK 文件格式


Android 的 APK 安装包使用的数据格式就是 zip 格式 , 直接使用 zip 工具解压即可 , 也可以将文件命后缀改为 .zip 后解压 ;

Zip 文件格式中 , 每个文件都是由 文件头 + 文件数据 + 数据描述符 构成 , 如果有多个文件 , 则上面的 文件头 + 文件数据 + 数据描述符 数据 重复存放 即可 ;

Zip 文件中 还有一个 核心目录 , 以及 目录结束标识 ;

在 010 Editor 工具中 , 打开 apk 文件 , 然后选择 " 菜单栏 / 模板 / Zip 模板 " , 即可以 Zip 格式解析该 APK 文件 ;

50 4B 03 04 开始的文件 , 就是 Zip 文件 , 这是 Zip 文件的标识 ;

三、使用 Python 提取 APK 文件


使用 Python 提取 APK 文件完整代码 :

import os
# 如果没有使用 pip install zipfile 安装
import zipfile# 提取 APK 中的文件
def extract_apk(apk_path: str):# 创建 ZipFile 实例对象zip_file = zipfile.ZipFile(apk_path)# 解压目录 , 删除 "app.apk" 的后 4 个字符 ".apk" , 即 "app"out = apk_path[:-4]# 创建目录os.mkdir(out)# 提取 zip 文件zip_file.extractall(out)# 关闭 zip 文件zip_file.close()def main():extract_apk('app.apk')if __name__ == '__main__':main()

执行后会将 app.apk 文件解压到 app 目录中 ;

【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )相关推荐

  1. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

    文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...

  2. 【Android 逆向】Android 逆向通用工具开发 ( Android 逆向通用工具组成部分 | 各模块间的关联 )

    文章目录 一.Android 逆向通用工具组成部分 二.Android 逆向通用工具 各模块间的关联 一.Android 逆向通用工具组成部分 Android 逆向通用工具 肯定是跨平台的 , 涉及到 ...

  3. 【Android 逆向】修改 Android 的 apk 安装包内的文件并重新打包 ( apktool_2.6.0.jar 下载和使用 | zipalign 文件对齐 | apksigner 签名 )

    文章目录 一.apktool_2.6.0.jar 下载和使用 二.使用 zipalign 工具进行对齐操作 三.使用 apksigner 工具进行签名 四.完整命令行输出 一.apktool_2.6. ...

  4. Android逆向笔记-使用Android Studio调试Smali代码(方式二)

    这里我使用Android Studio写了这样的一个程序: 这里我使用Android Studio写了这样的一个程序: 然后点下BUTTON后: 下面写下如何调试这种程序. 开发环境: win 10: ...

  5. Android逆向笔记-使用Android Studio调试Smali代码(方式一)

    这里我使用Android Studio写了这样的一个程序: 然后点下BUTTON后: 下面写下如何调试这种程序. 开发环境: win 10: 使用的模拟器是雷神模拟器: Android Studio版 ...

  6. android逆向安全技术大全,Android逆向系列(一):初探Android逆向

    这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法. 谨此以本文开始记录 ...

  7. Android逆向之旅---Android中分析抖音和火山小视频的数据请求加密协议(IDA动态调试SO)

    一.前言 最近萌发了一个做app的念头,大致什么样的app先暂时不说,后面会详细介绍这个app的开发流程和架构,不过先要解决一些技术前提问题,技术问题就是需要分析解密当前短视频四小龙:抖音,火山,秒拍 ...

  8. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中创建 Python 程序 | 导入 ELFFile 库 | 解析 ELF 文件 )

    文章目录 一.PyCharm 中创建 Python 程序 二.导入 ELFFile 依赖库 三. 解析 ELF 文件 四. 博客源码 一.PyCharm 中创建 Python 程序 在 PyCharm ...

  9. 【Android 逆向】修改 Android 系统文件 ( Android 逆向中需要经常修改的文件和目录 | 在 root 后的设备中获取 / 目录的 rw 权限后注意事项 )

    文章目录 一.Android 逆向中需要经常修改的文件和目录 二.在 root 后的设备中获取 / 目录的 rw 权限后注意事项 1.不要随意执行 wipe 命令 2.不要随意执行 rm 命令 一.A ...

最新文章

  1. MyBatis入门示例
  2. wpf MVVM ViewModel 关闭View显示
  3. 天猫双11期间,阿里数据中心将由机器人完成巡检
  4. optee内核中malloc函数的原理介绍
  5. Prism安装、MVVM基础概念及一个简单的样例
  6. java web逻辑删除代码_MyBatis-Plus之逻辑删除的实现
  7. CEF3—在网页加载前给js对象填值
  8. 【Linux基础】查看硬件信息-CPU
  9. phantomjs debian不显示中文_Python 爬虫:Seleniumamp;PhantomJS 实例(一)
  10. graphpad prism显著性差异分析_【市场表现】2020年第三季度企业债利差分析
  11. c改java_如何将一个c程序改写成JAVA程序
  12. 《代码整洁之道》第14章 逐步改进 的代码片段
  13. Android WebView实现长截图
  14. 【Python】遗传算法求解二元函数最值
  15. Python 玩转数据 12 - 数据读写 Data I/O: Pandas 读写 JSON File Format
  16. IF:11+ 鳞癌基因标记预测肺腺癌患者的预后和免疫治疗的敏感性
  17. 计算机辅助技术英语,电子计算机辅助技术(CAD)
  18. JVM调优实战:to-space exhausted Evacuation Failure
  19. USACO题解——Section 1.2——Greedy Gift Givers
  20. JS 数组,对象。中划线、数字属性时值获取

热门文章

  1. ecshop 首页添加某个分类下面的商品
  2. 使用JS在textarea在光标处插入内容
  3. 在RHEL-4下半小时搭建Sendmail邮件服务器(下)
  4. POJ3335(半平面交)
  5. 使用postman模拟登录请求
  6. python 字符串的魔法 day11(2)
  7. C# Interlocked 笔记
  8. 《那些年啊,那些事——一个程序员的奋斗史》——117
  9. jQuery Alert Dialogs (Alert, Confirm, Prompt Replacements)(翻译)
  10. 简(kun)单(nan)到让我开(jue)心(wang)的后缀自动机全家桶(普通后缀、广义后缀、子序列)...