Skip to content

Usage CN

refate edited this page Aug 24, 2020 · 2 revisions

Usage

1. 启动

1.1 开发版(git clone)

启动前端 (React.js, 127.0.0.1:3000):

cd frontend
npm start

启动后端 (Django server):

cd backend 
python3 manage.py runserver

使用USB连接你的安卓手机,启动 最新的 frida-server (测试于12.11.9版)。

1.2 发布版(release)

下载最新的 release 压缩包并解压为frider文件夹。

在本地服务器(apache/nginx/IIS...)的3000端口上跑 frontend,

// 如果不想用apache那些,也可以用这个:
cd frider
npm install serve   
serve -l 3000 -s frontend

如果要改端口号,请在 backend/backend/settings.py 中更改跨域设置:

CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:3000',
    'https://127.0.0.1:3000',
    'http://localhost:3000',
    'https://localhost:3000',
)

启动后端 (Django server):

cd backend 
python3 manage.py runserver

使用USB连接你的安卓手机,启动 最新的 frida-server (测试于12.11.9版)。

2. 选择 APP

启动后按下 Connect. 请确保backend/server/functions/utils.py 中的GBK(默认)与cmd的编码保持一致。

encoding

点选一个APP,从侧面栏进入其他页面。

home

3-1. 查看APP信息

提供包含 versionCode, permissions, paths, instruction sets 等APP基础信息展示。写得烂,可能在某些adb版本下这页无法正常工作。

appInfo

3-2. 脱壳

阅读中文版的Tips,选择一个脱壳方案然后点GO。dex文件也会存放在/data/data/(packageName)/sdcard/Frider/(packageName)目录并不会自动清理,请留意。

appInfo

4-1. Java类/方法枚举

先点 Inject 注入frida脚本到 selected package(injected package是空的)。注入成功会显示在injected package。

选择A和B方案中的一种进行方法枚举。

点击Method List中你想要追踪的方法名,会将其追加到TraceList中。

javaEnum

4-2. Java method 参数追踪

从侧边栏进入Trace页面。

trace

Intercept方法的参数和返回值需要Burp Suite或者其他网络工具监听 127.0.0.1:8080 端口。 然后启动Intercept(Java) ?选项。

最后按Plan A 的 Start,从这一刻开始追踪。

  • Tracer 视图:

javaTrace

  • 在Burp Suite 中 intercept: URL = className + methodName + args/retval javaIntercept

5-1. Native 模块和导出函数枚举

先点 Inject 注入frida脚本到 selected package(injected package是空的)。注入成功会显示在 injected package。

如果你手太快了,目标 Module 还没有被加载,可以等下刷新此页面。

Enumerate Exports 展示导出函数/变量。

Click Trace to add native function into your TraceList.

nativeEnum

5-2. Native 函数追踪和拦截修改

暂未找到合适的方法自动处理参数类型,这部分需要手动在 backend\server\functions\frida_scripts\fridaAPI.js 中完成参数处理(参考网上的各种frida脚本)。因为可以在 fridaAPI.js 中直接修改参数,这部分不会再转发到 Burp。

enter() 和 exit() 函数是给前端的 Tracer 提供数据的,需要的话就用吧(当然,得先处理参数)。

写完 fridaAPI.js 之后请重新 inject

nativeTrace

该部分演示待补。

5-3 非导出的 Native 函数追踪和拦截修改

从前端的 Trace 界面中提供目标函数所在module的地址(可在NativeEnum页面中获取),然后手动在 fridaAPI.js 中写入 Offset 值并处理参数。

traceByAddr

traceByAddr2

该部分演示待补。