android 逆向 38 / 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 逻辑分析
仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。
前言
很久没有学习写过文章了,看着群友一个比一个牛逼,一天比一天厉害,而自己每天深度摆烂,满满的负罪感
刚好今天帮朋友看个问题,感觉挺有意思的,就打算分享一下分析思路,话不多说开始
样本下载: https://www.wandoujia.com/apps/279987
分析的是 10.2.0 版本,豌豆荚找不到了,大家自行找吧
参考资料
网上 tlv
的资料都差不多,我这里就随便贴一个了
这一篇主要是分析 tlv 的编码逻辑,不会过多讲解寻找加密函数的过程
抓包
分析这个登录接口,可以看到 request body
跟 response
都加密了,下面开始分析
java 分析
这个加密函数的入参就是 tlv
编码之后的,分析其来源
往前跟踪到 jd.wjlogin_sdk.net.c.a
这个函数,这里的 this.g
就是 tlv
数据,继续分析
到这个 jd.wjlogin_sdk.b.g.a
函数,tlv 数据 == this.d
继续分析 this.d
的来源,来到这个 jd.wjlogin_sdk.common.inland.WJLoginInland.getCaptchaSid
函数,上图框框里的就是 tlv
数据编码逻辑
先看 jd.wjlogin_sdk.c.d.a
函数,大部分的 tlv
编码逻辑都在这里
上面的分析逻辑,有点繁琐,可以使用 frida hook 打印调用栈定位到
tlv 分析
这里大家自行使用 frida hook 一下,获取 tlv 编码后的数据,用于后面的分析
到这一步默认你已经了解 tlv 了,回顾一下 tlv 的特点
1、tlv 由三部分组成 tag/type、length、value
2、value 可以是数据,也可以是结构体(俗称嵌套 tlv)
下面开始分析
先看看 hook
出来的 hex
,这里是能看到明文的,只要解析成结构化的数据即可
我是从中间开始分析的,先获取 unionId
的这个 json
转成 hex
搜索一下
根据 tlv
的特征,value
的前面两个字节是 length
,在前面两个是 tag
这里的 length
对应上了,但是 tag
不晓得对不对,那就继续往下分析
后面的字节先这样去分组,看着肯定很懵逼,这时再来看下 java
代码
这里有没有发现啥规律,解释一下
1、先是添加一个 tag = 101, hex = 0x65
2、在添加后面 value
数据的长度 0x24e = 590
3、随后添加三个空字符串,length
都等于零
4、0x246 = 582
对应后面 value
的长度,截取出来看一看
刚好能对上,根据这个逻辑再去分析下上面的 unionId
这样分完组之后,逻辑就比较清晰了
tlv
的结构是 tag -> length ->【length1 -> value1,length2 -> value2】
最后
根据上面的逻辑,写个 tlv
编码的解析脚本,效果还不错,能解析出来