GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

应用安全 --- 应知应会 之 如何分析一个apk

1.熟悉操作。在一个安全的虚拟机比如mumu、挽念或空闲手机安装apk并使用一下,熟悉操作流程。

2.解包apk。apk的本质是zip,解压就能看见内部文件结构,解压工具建议使用jadx和mt

3.特征分析。首先用APKiD、mt分析apk的元数据,包含包名,版本,签名版本等等,然后分析这个app是用什么工具开发的,是脚本类app比如懒人精灵,浏览器类app比如uniapp,java类的app,kotlin类的app。知道这个可以极大的提高分析效率。最后看看有没有其他特征文件在。

开发框架识别

  • 原生开发 (Native): Java/Kotlin,分析 classes.dex 和 lib 目录下的原生库(*.so 文件)。

  • 混合开发 (Hybrid): 如 Cordova、Ionic、React Native。特征:assets 目录下有 www 文件夹包含 HTML/JS/CSS 文件。

  • 跨平台开发: Flutter (特征:lib/arm*/libflutter.solib/arm*/libapp.so),Unity (特征:assets/bin/Data/lib/arm*/libunity.so)。

  • 小程序/快应用: 如uni-app(特征:assets/apps/* 下有 www 目录和 manifest.json)。

  • 脚本引擎: 如懒人精灵、Auto.js,特征为内置其特有的引擎文件(如 libluaj.so)和项目脚本文件(如 project.jsonmain.js)。

4.加固分析。包含签名验证。有些apk在运行时会验证原始签名,可以直接使用mt签名这个apk,安装如果打开失败表示有签名验证,需要去签。使用加固识别工具mt识别是什么加固,即使没有提示加固,也可能有加固或者自己实现的加固算法。识别加固厂商:通过 lib 目录下的 so 库名称、assets 下的特定文件、Application 父类等特征判断使用的是哪家加固(360、腾讯、梆梆、爱加密等)。然后开始脱壳,

  静态脱壳:使用ida和mt进行去混淆和去加密

  • 动态脱壳:这是加固分析的核心。目标是获取内存中的 Dex 或 so 明文。

    • Dump Dex:在关键时机(如 ClassLoader 加载 dex 后)使用 Frida、Xposed 模块或内存取证工具(如 GDB, Fridump)将内存中的 dex 文件dump下来。

    • Dump so:针对so文件的加固,需要在so被加载并解密后,将其从内存中dump出来,再进行修复分析。

5.代码分析。去壳后就可以直接动态和静态分析源码,查看核心业务逻辑。,。动态使用frida分析一个函数的输入和输出值。

  1. 静态分析:

    • Java层: 用 MT管理器/NP管理器 或电脑端的 JADX-GUI 查看反编译的 dex 代码。

    • 原生层: 用 Ghidra 或 IDA Pro 进行反汇编分析 .so 文件。

    • 清单文件: 分析 AndroidManifest.xml,找出入口组件、权限、调试信息。

  2. 动态分析:

    • 环境准备: 使用 Magisk 隐藏 Root,用使用magisk+小黄鸟抓包工具辅助流量分析。

    • 行为监控: 运行应用,使用adb logcat > log.txt,观察 logcat 日志和网络请求。

    • 深入Hook: 针对关键函数,编写 Frida 脚本进行插桩,打印参数和返回值。

    • 内存操作: 使用 GameGuardian 搜索和修改运行时数据。

   同时辅助ai的编程工具进行分析

8.文件分析。使用mt在根文件下app目录有应用释放的内部文件可以辅助分析。

  • 实时监控:使用 ls -al 和 cat 检查文件固然重要,但更推荐使用 inotifywait 工具监控应用私有目录 (/data/data/<package_name>) 的文件创建、读写、删除事件,了解其文件操作行为。

  • 数据库分析:检查应用的 SQLite 数据库(.db 文件),使用 sqlite3 命令或图形化工具(如 DB Browser for SQLite)查看其中可能存储的敏感信息。

  • SharedPreferences:检查 shared_prefs 目录下的 XML 文件,这里常存放应用配置和缓存数据。

  • 检查数据是否加密:查看存储的数据库、配置文件、缓存文件内容是否是明文。敏感信息(如密码、token)明文存储是常见的安全漏洞。

9. 第三方 SDK 分析 (3rd-party SDK Analysis)

- **识别 SDK**:通过 `lib` 目录的 so 库、`assets` 下的文件、代码包名(如 `com.google.`, `com.tencent.`, `com.umeng.`)来识别应用集成了哪些第三方 SDK(广告、统计、推送、登录、支付等)。
  1. 修改与重打包: 使用 MT管理器 修改 Smali 代码或资源,然后重打包签名安装测试。ida修复so

  2. 自动化: 将成熟的 Frida 脚本或 Xposed 模块化,实现一劳永逸的修改。

posted on 2025-09-02 07:24  GKLBB  阅读(80)  评论(0)    收藏  举报