实战某东so层算法sign分析
本帖最后由 Null_Null 于 2021-1-21 13:37 编辑前两天分析的帖子被删除了,包含了个人联系方式
这次重发,本文只用做技术分享,若有违规的地方请及时联系删除
某东sign算法,非rpc远程调用,从0开始分析算法!
高清PDF版本链接:https://pan.baidu.com/s/1i0TW4GMSL9dOE9DsiNBAlQ
提取码:bcan
正文
=================
经过简单分析,确定native方法存在与libjdbitmapkit.so中
ida打开进行静态分析
跟进sub_127E4
首先对字符串进行了一些简单的拼接
拼接完成通过sub_126AC对字符串字节码进行处理
经过两个函数sub_18B8、sub_227C处理,得到sign值
Sub_18B8,base64
Sub_227c,md5
流程大致如下
字符串拼接---->sub_126AC---->base64---->md5---->sign
观察sub_126AC传参
V9为jni指针,v65为加密明文字节码,v33为加密长度,v26以及v27为随机数
V26以及v27经过sub_12640处理,得到sv,其中下图的sub_1261c是append函数
Sub_126AC
sv顾名思义signVersion,签名版本,通过生成的随机数来控制生成不同的签名算法,故动态调试的时候,固定一种算法分析即可
下面动态调试,选择sv=121这种算法进行逆向分析,v26对应1,v27对应2
ida没办法识别函数,因为此函数被加密过,因此在这个地方下断点,跟着进去就行了
对应sub_126AC
p识别为函数,f5
更改a5,a6的值
更改完毕,固定走case 0这种算法
主要加密函数是unk_D0257AF4,v9应该是一个加密的对象
V4应该是该版本加密算法对应的随机因子,也就是密钥
V7对应明文,v6为1,v7是明文长度
D0257AF4
unk_D02565AC
剩下的就是翻译算法过来,自动生成url
成功响应,说明计算没问题
此算法的难度就在翻译sub_D02565AC算法,只要能翻译过来,基本上也没别的问题了,so层代码可读性还是很高的
能贴下sign.py源码吗? 楼主,为什么我从你网盘里下载的 apk,其中 libjdbitmapkit.so 和你帖子里的不一样啊 是大佬,收藏了,正好用的到 谢谢分享啊 厉害 学习ing{:17_1087:} 感谢分享! 感谢分享
! 厉害 厉害 感谢大佬无私分享 虽然看不到,但是很细想学习,看样子很专业 虽然看不到,但有用