0xdad0/PAPIMonitor
GitHub: 0xdad0/PAPIMonitor
基于 Frida 的 Android 应用 API 调用监控工具,支持运行时追踪敏感 API 并记录完整调用上下文。
Stars: 87 | Forks: 11

[](https://www.python.org/downloads/)
[](https://github.com/Dado1513/AndroidApiMonitoring/blob/master/LICENSE)
**PAPIMonitor** (用于 Android 应用的 **P**ython **API** **Monitor**) 是一个基于 [Frida](https://frida.re/docs/android/) 的 Python 工具,用于在应用执行期间监控用户选择的 API。
该应用应安装在已通过 ADB 连接到主机 PC 的模拟器中。
用户可以选择监控预定义的 API 列表(分为多个类别,如设备数据、设备信息、短信等),或者通过命令行传递自定义的 API 列表给脚本。
该工具会存储被调用的 API、参数、返回值,以及调用发生的行号和文件。
以下是输出示例:
```
{
"category": "Custom",
"class": "com.dave.popupre.MainActivity",
"method": "getText",
"args": [],
"calledFrom": "com.dave.popupre.MainActivity$1.onClick(MainActivity.java:26)",
"returnValue": "Hello Toast!",
"time": "03/09/2021, 14:43:06"
}
```
:warning: **关于 Google 模拟器的警告**
| Google 模拟器 | Ubuntu | Windows | MacOS |
|:----------------------:|:------------------------:|:------------------------:|:------------------------:|
| **7.x x86** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| **8.x x86** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| **9.0 x86** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| **10.0 x86** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| **11.0 x86** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| **12.0 x86** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
:warning: Frida 在 Android 11-12 (x86_64) (Google Emulator) 上似乎存在问题。
- [issue-1917](https://github.com/frida/frida/issues/1917)
- [issue-1977](https://github.com/frida/frida/issues/1977)
- [issue-1982](https://github.com/frida/frida/issues/1982)
## 安装
常规要求:
```
sudo apt-get install libjpeg-dev zlib1g-dev
```
### 使用 pyenv 和 virtualenv 安装
- 安装 [pyenv](https://github.com/pyenv/pyenv) 和 [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv)
```
pyenv install 3.8.0
pyenv virtualenv 3.8.0 papi-monitor
pyenv activate 3.8.0/envs/papi-monitor
pip3 install -r requirements
```
### 使用 virtualenv 安装
- 安装 virtualenv
```
sudo apt-get install python3-virtualenv
```
- 激活 virtualenv
```
virtualenv env
source env/bin/activate
```
- 安装依赖
```
pip install -r requirements
```
- 下载 frida-server 到 `resources/frida-server/` 目录
## 安装后步骤
- adb 在 PATH 环境变量中
- 模拟器/设备已运行并连接
## 使用方法
```
python papi_monitor.py --package-name com.package.name --filter "Crypto"
python papi_monitor.py --file-apk app.apk --api-monitor api_personalized.json
python papi_monitor.py --package-name com.package.name --api-monitor api_personalized.json
python papi_monitor.py --package-name com.package.name --filter "ALL"
python papi_monitor.py --package-name com.package.name --api-monitor api_personalized.json --store-script True --filter "Crypto" "Crypto - Hash"
python papi_monitor.py --package-name com.package.name --api-monitor api_personalized.json --pinning-bypass --antiroot-bypass
```
### 预定义类别
- Device Data
- Device Info
- SMS
- System Manager
- Base64 encode/decode
- Dex Class Loader
- Network
- Crypto
- Crypto - Hash
- Binder
- IPC
- Database
- SharedPreferences
- WebView
- Java Native Interface
- Command
- Process
- FileSytem - Java
### Frida 脚本
许多用于 Android 的 Frida 脚本可以在[这里](https://github.com/Dado1513/frida-script-android)找到。
标签:ADB, Android安全, API监控, Docker支持, Frida, Homebrew安装, Hook技术, Python, SSH蜜罐, URL抓取, 云资产清单, 安卓模拟器, 应用行为分析, 数据抓取, 无后门, 目录枚举, 移动安全, 自定义脚本, 自定义脚本, 进程注入, 逆向工具, 逆向工程, 隐私合规检测