文章目录[隐藏]
android 逆向 24 / 38
- app OAuth api_sign 分析
- app sig 参数加密分析 unidbg 模拟黑盒调用
- app sign so 加密参数破解|unidbg
- sgmain x-sign 分析 - unidbg
- androidAsync fridaManager sgmain 70102 rpc 远程调用
- app edata 参数 so aes 加密分析破解|unidbg
- frida 加载 sekiro dex 文件 实现与服务端交互
- frida sekiro 实现 sgmain 70102 远程 rpc 调用
- xposed sekiro hook 获取 wx 万能 key
- unidbg console debugger 使用
- unidbg hook inline hook 使用
- app 公众号文章列表 so 加解密算法分析还原 | 简单分析
- app 公众号文章列表 so 加解密算法分析还原 | 加密 rsa base64 分析
- app 公众号文章列表 so 加解密算法分析还原 | 加密 zip aes 分析
- app 公众号文章列表 so 加解密算法分析还原 | response 内容解密分析
- app sign so 加密算法分析还原|简单分析
- app sign so 加密算法分析还原|so 算法分析
- app sign so 加密算法分析还原|so sub_126AC 函数算法还原
- app so signkeyV1 参数分析
- ida 动态调试 android so 文件|基础入门环境搭建
- app so newSign 参数分析破解
- app tzRgz52a 参数分析破解
- app sign-v2 签名算法 aes 加解密分析
- app so 加密参数分析|protocbuf 分析
- mxtakatak android app 加解密分析
- android app so 加密算法分析破解|mtgsig unidbg
- android app so 加密算法分析破解|siua unidbg
- android app nsign so 加密算法分析
- android app sig 参数 so 加密逻辑逆向分析
- android app so sig 加密参数 unidbg
- 狗狗音乐登陆协议加密参数逆向分析
- android sign so 加密参数分析|unidbg
- android app X-SS-QUERIES 参数分析
- unidbg android app xgorgon 加密参数 leviathan
- sgmain 6.4.x xsign 加密算法分析研究
- sgmain 6.4.x xminiwua 加密算法分析研究
- 某 app mas 算法分析还原 cms so
- 某东登陆协议 tlv 逻辑分析
本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!
推荐阅读
龙哥 csdn 样本 10
更多 Unidbg 使用和算法还原的教程可见星球: 点击加入龙哥星球
看雪大佬的 protocbuf 分析,可以参考
前言
某程旅行 app,版本 8.37.4,机票接口
r0capture 抓包
经过测试使用 charles
无法抓包,最后选用 frida hook
的方式抓包,使用的工具 r0capture,具体使用参考 github
即可。
巨佬们如果有更好的选择可以分享一下,感谢各位巨老
r0capture
跑起来,成功 hook
,可以看到输出的内容全部加密的,不是明文,如果看了上面看雪的文章,就知道这里是 gzip + protocbuf
具体咱们就来分析一下
或者是通过一些特征也能判断出来 1f 8b
就是 gzip
的特征
可以使用 cyberchef
看一下
下面有打印调用栈,可以根据这个去追踪具体细节,先来看看 request
分析 java request protocbuf
打开 jeb
搜索 ctrip.business.sotp.SOTPConnection.sendRequest
类
分析 Executors.buildRequest
这函数,点击去
arg4.a
函数点进去
看到 ProcoltolHandle.buileRequest
这个函数,这里应该就开始构建 protocbuf
了
继续跟进 getRequestDataBeanV6
函数
这里先是调用了 ProcoltolHandle.buileRequestHeadV6
函数,来构建 protocbuf
在调用 GzipUtil.compress
函数
在跟进 ProcoltolHandle.buileRequestHeadV6
函数,这里初始化了 RequestHead
对象,下面是开始赋值
点进 RequestHead
这里应该就是 protocbuf
的 message
了,后面分析完再自己去构建 message
反序列化
这个是该函数的返回值
v1_1 是 request protocbuf,获取 v1_1 的长度,在取出 4: v1_1 length 长度的数据,也就是省略前四个元素的数据
返回再来个 gzip 压缩数据
分析 java response protocbuf
打开 ctrip.business.comm.ProcoltolHandle
类下有 buildRequest
函数,往下翻一番就会发现有个 buileResponse
函数,这个就是处理 response
的逻辑
逻辑跟 request
差不多,先 gzip
解压缩在 protocbuf
反序列化
点进 getResponseDataBeanV6 -> buileResponseHeadV6
函数,里面有个 ResponseHead
这里就是 response protocbuf message
Tips: 这个样本只是 header 做了 protocbuf,body data 部分还是 gzip
编写 proto 文件
jeb
打开 ctrip.business.model.header
这个类,打开 RequestHead
根据这些来编写 protocbuf
的 request.proto
文件,写完后使用 protoc ./request.proto --python_out=./
命令生成 python
文件
同样在继续编写 response.proto
文件
protocbuf 反序列化
request
使用 r0capture
抓的包都是 hexdump
格式,可以使用 cyberchef
转成 hex
因为内容比较多,我就直接复制 hex
到文件里
然后使用 python
去解码
运行代码 request head
已经解出来了,下面的就是 request body
response
response
跟上面逻辑一样
response head
跟 response body
也是全部解码出来了