文章目录[隐藏]
android 逆向 17 / 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 逻辑分析
仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。
const 龙哥 = Function() {}
const a = 全能的傻宝,每天都会换一种姿势来分享各种骚操作,10月份开始分享密码学;
const b = 点击加入星球;
return "无敌的龙哥";
推荐阅读
unidbg hook inline hook 使用
unidbg console debugger 使用
so 分析过程在验阶段会使用unidbg debugger hook
功能,不熟悉的可以阅读以上文章
JD app sign so 加密算法分析还原|简单分析
JD app sign so 加密算法分析还原|so sub_126AC 函数算法还原
前言
上一篇文章分析了加密逻辑入口,并使用
unidbg
跑起来,这一篇就来看一看so
的加密逻辑
0x1 so 加密逻辑分析
打开 libjdbitmaoki.so
文件,在 exports
窗口里搜索 java
查看 getSignFromJni
函数的逻辑
前面的话就是字符串拼接,functionId body uuid client
等字段都是我们传进来的
再往下先是获取时间戳,在拼接 st sv
等字段,最后调用 getBytes
函数
这里先是调用了 sub_126AC
函数(注意:这个函数是主逻辑,里面的算法是 某东 自己实现的,后面只需要还原这个就行了)
然后就是 base64Encode md5Hash
函数,这里我是改了名字,是通过算法的特征值来判断的可以点进去看看
base64Encode
点进来就可以到 base64
的特征,查看下是不是标准的 table
双击查看,是标准的,稍后可以在使用 CyberChef
验证一下
md5Hash
这个函数点进来,就可以到四个常量,猜测是 md5
的常量,Google Wiki
搜索一下
刚好相同,就可以确定是 md5
算法,再来看看 sub_126AC 函数
sub_126AC
这里面的核心逻辑在 switch
暂时不知道 v13
的数据是啥。大概逻辑分析完了,下面使用 unidbg
看一下
0x2 unidbg debugger hook
先添加三个断点 0x12B6E 0x12BA4 0x12BC8
,分别是 sub_126AC base64Encode md5Hash
函数的执行前
成功断下来,通过日志,也能看到一些执行的数据,咱们按 c
跳转到 base64
函数
base64
函数有三个参数,分别是 r0 r1 r2
,r0
是内存地址 = 0x40218000
,r1
是 byteArray
数据, r2
是 r1
的长度
这里查看 r1
的全部数据
然后复制 hexdump
到 CyberChef
转成 base64Encode
编码
单步执行,完成 base64
函数的调用,查看 0x40218000
地址的数据,大小是 r1
长度的两倍
结果跟 CyberChef
进行对比,结果相同,就说明是标准的 base64 table
在使用 md5
加密
输入 c
指令跳转到 md5Hash
函数,查看地址个参数,正是 base64
结果,在输入 c
结束执行,查看结果
Tips: 这里中间断开了一次,就重新运行的最后结果跟前的不一样,不过不影响我们分析逻辑
这里的结果是 ff31e5b33385fb670b393927104701e3
使用 CyberChef
的结果也是 ff31e5b33385fb670b393927104701e3
,结果一样,没啥大问题
Tips: 所以 Sign 加密的流程就是,字符串拼接 -> sub_126AC -> base64Encode -> md5Hash
最后
so
的算法就分析完了,下一篇来看下sub_126AC
函数的算法还原分析