本项目用于辅助逆向开发人员,快速获取和转换Android APP中所使用的protobuf协议的proto文件
当前仅支持基于com.squareup.wire
生成protobuf的相关类
原生通用的脚本编写ing
- 通过frida枚举全部类,根据类特征得到原proto中的字段名、字段类型、字段tag等信息
- 将信息转换、存储为特定的配置文件
- 按需求和规则转换proto至对应的py文件
- frida-server必须是14.x.x版本
- 因为
runtime
是qjs
,测试使用v8
会卡死,如果有人知道原因请告诉我
- 因为
- python 3.8.5
pip install -r requirements.txt
有手动编译_agent.js需求
agent
目录下安装
cd agent
npm install
- 编译_agent.js
npm run build
- 首先将frida-server推送至手机(只用做一次)
adb push frida-server-14.2.18-android-arm64 /data/local/tmp/fs14218
adb shell
su
chmod +x /data/local/tmp/fs14218
- 开启服务
/data/local/tmp/fs14218 -l 0.0.0.0:33333
python -m frida_protobuf.main -H 172.16.13.146:22222 -n com.tencent.qqlive --use-default-any --includes "com.tencent.qqlive.protocol.pb,com.tencent.spp_rpc"
python -m frida_protobuf.generate --proto ChangeSectionResponse --extra-import "Poster,Action,Attent,VideoIdKeyValueSet"
python -m frida_protobuf.proto2py --proto ChangeSectionResponse --extra-import "Poster,Action,Attent,VideoIdKeyValueSet"
python -m frida_protobuf.demo
- Q: 为何需要分三步进行
- A: 当遭遇某些字段类型为Any时,需要根据自己的需求对proto进行补充