# Analyzing Android apps using Frida **Repository Path**: frankzhang/analyzing-android-apps-using-frida ## Basic Information - **Project Name**: Analyzing Android apps using Frida - **Description**: 使用frida分析Android应用生命周期函数调用堆栈,Activity和View显示堆栈,以及分析页面显示耗时等。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-03 - **Last Updated**: 2026-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Analyzing Android apps using Frida ## 介绍 本代码仓使用frida分析Android应用生命周期函数调用堆栈,Activity和View显示堆栈,以及分析页面显示耗时等。 ## 脚本功能 - **activity_lifecycle_debug.js**:分析Android应用生命周期函数调用堆栈 - **activity_stack_trace.js**:分析Activity启动和切换堆栈 - **app_startup_debug.js**:分析应用启动流程和耗时 - **basic_stacktrace.js**:基础堆栈跟踪功能 - **fragment_stack.js**:分析Fragment生命周期和切换堆栈 - **native_stack_trace.js**:分析Native层函数调用堆栈 - **page_performance.js**:分析页面显示耗时和性能指标 - **recycler_view_stack.js**:分析RecyclerView相关操作堆栈 - **ui_thread_stack.js**:分析UI线程操作和耗时 - **view_draw_stack.js**:分析View绘制和显示堆栈 - **system_server_stack.js**: 分析SystemServer进程startActivity函数族堆栈 **运行脚本**: 以分析快手app为例,快手包名: com.smile.gifmaker ``` frida -U -f com.smile.gifmaker -l ``` ## 调试环境 - Android 设备(root 权限) - 开发环境(Windows 11) - Python 3.11.0 - pip(Python 包管理器) - Frida 17.6.2 ## 安装 Frida ### 1. 安装 Frida 客户端 使用 pip 安装 Frida 客户端: ```bash pip install frida frida-tools loguru click ``` ### 2. 安装 Frida Server 到设备 1. 下载对应设备架构的 Frida Server: - 访问 [Frida 发布页](https://github.com/frida/frida/releases) 下载适合设备架构的 frida-server 文件 - 常见架构:arm64-v8a、armeabi-v7a、x86 等 2. 将 Frida Server 推送到设备: ```bash adb push frida-server--android- /data/local/tmp/ ``` 3. 赋予执行权限并运行: Android开发人员需要root权限才能在设备上运行Frida Server。最好是刷userdebug版本的镜像。 ```bash adb shell chmod 755 /data/local/tmp/frida-server--android- adb shell su -c /data/local/tmp/frida-server--android- ``` ## 运行 Frida 命令 ### 1. 查看设备上的应用 ```bash frida-ps -U ``` ### 2. 附加到正在运行的应用 ```bash frida -U -f --no-pause ``` ### 3. 运行脚本 ```bash frida -U -f -l ``` ## Frida 原理 Frida 是一个动态代码插桩工具,其工作原理如下: 1. **客户端-服务器架构**: - Frida Server 运行在目标设备上(如 Android 设备) - Frida 客户端运行在开发机器上,通过 USB 或网络与 Server 通信 2. **动态代码注入**: - Frida Server 利用操作系统的动态链接机制,将 JavaScript 代码注入到目标进程 - 注入的代码可以 hook 目标函数、修改函数行为、获取函数调用堆栈等 3. **JavaScript 接口**: - Frida 提供了简洁的 JavaScript API,用于编写 hook 脚本 - 脚本可以访问目标进程的内存、调用目标函数、修改函数参数和返回值等 4. **跨平台支持**: - Frida 支持 Android、iOS、Windows、macOS、Linux 等多个平台 - 相同的脚本可以在不同平台上运行,只需调整少量代码 5. **实时交互**: - Frida 支持实时修改和重新加载脚本,无需重启目标应用 - 可以通过命令行或图形界面与运行中的脚本交互 Frida 的核心优势在于其灵活性和强大的动态分析能力,使其成为移动应用安全分析、性能分析和逆向工程的有力工具。