好友
阅读权限25
听众
最后登录1970-1-1
|
本帖最后由 Null_Null 于 2021-1-21 13:37 编辑
前两天分析的帖子被删除了,包含了个人联系方式
这次重发,本文只用做技术分享,若有违规的地方请及时联系删除
某东sign算法,非rpc远程调用,从0开始分析算法!
高清PDF版本链接:https://pan.baidu.com/s/1i0TW4GMSL9dOE9DsiNBAlQ
提取码:bcan
正文
=================
经过简单分析,确定native方法存在与libjdbitmapkit.so中
IDA打开进行静态分析
跟进sub_127E4
1
首先对字符串进行了一些简单的拼接
拼接完成通过sub_126AC对字符串字节码进行处理
2
经过两个函数sub_18B8、sub_227C处理,得到sign值
3
Sub_18B8,base64
4
5
Sub_227c,md5
6
流程大致如下
字符串拼接---->sub_126AC---->base64---->md5---->sign
观察sub_126AC传参
7
V9为jni指针,v65为加密明文字节码,v33为加密长度,v26以及v27为随机数
8
V26以及v27经过sub_12640处理,得到sv,其中下图的sub_1261c是append函数
9
Sub_126AC
10
11
sv顾名思义signVersion,签名版本,通过生成的随机数来控制生成不同的签名算法,故动态调试的时候,固定一种算法分析即可
下面动态调试,选择sv=121这种算法进行逆向分析,v26对应1,v27对应2
ida没办法识别函数,因为此函数被加密过,因此在这个地方下断点,跟着进去就行了
对应sub_126AC
13
p识别为函数,f5
14
更改a5,a6的值
15
16
更改完毕,固定走case 0这种算法
17
主要加密函数是unk_D0257AF4,v9应该是一个加密的对象
18
V4应该是该版本加密算法对应的随机因子,也就是密钥
19
V7对应明文,v6为1,v7是明文长度
20
21
D0257AF4
22
23
24
unk_D02565AC
25
剩下的就是翻译算法过来,自动生成url
26
成功响应,说明计算没问题
27
此算法的难度就在翻译sub_D02565AC算法,只要能翻译过来,基本上也没别的问题了,so层代码可读性还是很高的
|
-
12
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|