文章目录[隐藏]
android 逆向 36 / 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 逻辑分析
仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。
前言
sgmain 6.4.x
版本的x-mini-wua
参数加密算法研究分析
样本https://www.wandoujia.com/apps/38221/history_v1843
本文主要使用 ida + unidbg + frida
动静态分析
样本 unidbg
参考文章
之前有位大佬发了篇 x-sign
的加密流程(已经被删),我也是基于此来的灵感,大概的流程是
1、SGSAFETOKEN_IN = READFILE("file/app_SGLib/SG_INNER_DATA")
2、json = AES_DECRYPT(SGSAFETOKEN_IN)
3、sdfsd = BASE64_DECODE(json.getString("sdfsd"))
4、x1 = AESDECRYPT(sdfsd)
5、x2 = XOR(x1)
6、result = "HHnB" + BASE64_ENCODE(AES_ENCRYPT(x2))
本文基于上面的流程,简单说一下,不会扩展到其他的细节上
Tips:因为 unidbg 跑出来的 x-mini-wua 是短的,所以只能辅助分析大概的算法流程,具体细节博主是使用 frida hook 的方式来验证的
0x1 读取文件
SG_INNER_DATA
文件在手机目录下就能找到。读取出来获取 SGSAFETOKEN_IN
字段
0x2 AES 解密 SGSAFETOKEN_IN
这个如何定位有两种方法(假设你已经分析过 xsign 参数了,那对 sgmain 的 aes 会有所了解)
-
1、直接去
hook aes decrypt
函数 -
2、通过
traceRead
看看SGSAFETOKEN_IN
在哪里读的
博主这里就直接说答案了,在这里就是 aes cbc decrypt
逻辑,通过 inlinehook
可以直接获取到 data key iv result
等数据
分析到这里,就卡住了,因为 SGSAFETOKEN_IN
解密出来的结果是个 json
有四个字段,但是没有 sdfsd
,可能是这个版本名称不一样
然后经过 n
多次的 trace
也还是没有找到想要的答案,这里各位读者大佬可以自己尝试呀,过程很心酸
最后还是决定从后往前追(当然也是遇到了 n
多个问题,有些问题卡了很久,这个后面在说)
0x6 base64 encode && aes encrypt
最后的结果是 "HHnB" + BASE64_ENCODE(AES_ENCRYPT(x2))
这里直接进行 base decode
结果可以正常出来,然后就可以进行 unidbg trace
了
-
1、在最后的结果下断点,使用
shr
搜索堆 -
2、搜索到之后就可以使用
traceWrite
了 -
3、不出意外的情况下,
trace
到的地址就是aes encrypt
-
4、然后根据代码接口,就可以判断出这是个
aes cbc
模式的加密,因为密钥编排、iv ^ data 的特征都很明显,还有 pkcs7 的填充标志
以上都是博主亲测出来的流程,只不过以文字的方式描述,而没有加上图片,各位读者大佬如果没有思路可根据以上的思路尝试一下
0x5 x2 = xor(x1)
这一步最复杂,为何复杂,因为博主的 unidbg
没有跑出全的 x-mini-wua
所以使用 unidbg
不好去分析,这一步也是卡了很久
这里就是最后 aes encrypt
加密的数据
博主在进行 trace
的过程,发现这些字节是在 n
多处 write
的
而且 so
还看不到 c
代码,很难根据 arm
分析出数据的计算逻辑,这一步也是卡了很久,具体分析的过程细节就不说了,简单说下思路
-
1、使用
unidbg
进行hook trace
,根据结果,来猜测尝试 -
2、使用
frida hook
完成验证,hook
出一些关键数据,进行计算
0x4 aes decrypt sdfsd
这一步就比较简单了,没啥可说的
最后放上一张测试请求成功的图片
江来一定有
2022-11-14感谢楼主的思路。unidbg把一份真机的sg data放进去,只要能从中解析出和真机一样的umt,也能算出长的miniwua参数。主要是unidbg补参数代码跑出来aes decode key的地方不对,我手动hook了一下,让unidbg顺利解析从sg data出一样的umt就能成了。
lqhunter
2022-09-15大佬,评论后刷新就不见了?
qinless
2022-09-22@lqhunter 评论需要审核的哦,很久没登录后台了,抱歉
lqhunter
2022-09-15楼主你好,我目前到了“0x5 x2 = xor(x1)”这一步,也traceWrite发现aes输入的字节是很多地方写入的,但是继续跟踪下去碰到了可能是LiteVM的东西,请问需要完全弄清楚vm的逻辑才行吗,还是只需要按照之前的逻辑继续traceCode下去?