Null_Null 发表于 2021-1-21 13:21

实战某东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层代码可读性还是很高的

ninghan 发表于 2021-2-25 17:26

能贴下sign.py源码吗?

鹿桥 发表于 2021-1-23 18:09

楼主,为什么我从你网盘里下载的 apk,其中 libjdbitmapkit.so 和你帖子里的不一样啊

Light紫星 发表于 2021-1-21 13:35

是大佬,收藏了,正好用的到

BBoy蓝牙 发表于 2021-1-21 13:38

谢谢分享啊

TickDown 发表于 2021-1-21 14:06

厉害 学习ing{:17_1087:}

zhangfei28 发表于 2021-1-21 14:55

感谢分享!

13169456869 发表于 2021-1-21 15:01

感谢分享

嘛哩嘛哩轰 发表于 2021-1-21 18:41

厉害 厉害

heiyezhanji 发表于 2021-1-21 21:07

感谢大佬无私分享

歐陽 发表于 2021-1-21 21:26

虽然看不到,但是很细想学习,看样子很专业

独特丶小白 发表于 2021-1-21 22:37

虽然看不到,但有用
页: [1] 2 3 4 5 6 7
查看完整版本: 实战某东so层算法sign分析