首页
社区
课程
招聘
[原创]最右sign-v2签名算法追踪及逆向还原
发表于: 2020-9-30 11:06 101312

[原创]最右sign-v2签名算法追踪及逆向还原

2020-9-30 11:06
101312

本篇文章应该于N个月前就写了,由于拖延症一直拖到现在。

其实一直打算写一系列逆向实战 比如某音 某手 某乎 某宝,也不知道会不会有时间且不拖延的写下去。

好了 言归正传 上次分析的最右APP版本为4.2.1 已经是18年10月的时候了 当时签名算法只有一个"sign"  而本次分析的是目前最新版本5.5.9 

最新版本的变化有两处

1.新增了"sign-v2"算法

2.request data 以及 response data 内容进行了加密

OK 我们直接来抓包 具体如何抓包上篇文章有讲 就不在此具体描述了

可以看到 请求中"sign=v2-xxxxxxxxxx"老样子 拖入ida中分析 进行字符串搜索"sign="

第四个看起来比较像 双击字符串进入

按下快捷键X

只有一处 我们还是双击进入

继续按下快捷键X

从函数名来看的话"-[ZYURLRequest obtainMostSuitableRequest]"比较像 此处没什么捷径 只能通过看哪个函数名像 如果选错了就会浪费些时间

双中双击进入 直接F5查看伪代码

可以看到通过传参调用"+[libProtocol sign_data:]"函数来进行签名的 参数又是通过传参调用"+[libProtocol encode_aes:]"得到的

直接HOOK

日志打印如下

先复制出encode_aes的参数 保存hex查看

可以看到参数是明文的 既然是aes加密那就需要key 至于key是什么 如何产生的我们后面再来分析

我们先进入内部查看签名算法是如何实现的 F5代码如下:

关注点在一个函数"MD5String" 先来看下参数是什么

相信看到这里各位已经明白了参数是什么 参数就是aes加密后的数据 只是做了层转换 从NSData转为byte 根据函数名得知该算法是md5

那么直接编写代码进行测试


结果发现计算结果不对


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (30)
雪    币: 321
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2

2020-9-30 14:49
0
雪    币: 2709
活跃值: (1632)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
1
2020-10-1 09:11
0
雪    币: 2709
活跃值: (1632)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
sgmain   avmp
2020-10-1 09:11
0
雪    币: 186
活跃值: (112)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
现在不都流行用hook大法吗?不管它具体怎么算,直接调用就行了!
2020-10-1 19:47
0
雪    币: 5492
活跃值: (3317)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
qqxiaobai 现在不都流行用hook大法吗?不管它具体怎么算,直接调用就行了![em_19]

大厂麻烦咯 牵扯到全局变量(服务器返回 账号token key之类) 设备状态 越狱状态 比如某音 某红书 当然hook改改也能用 不过算法还原后也方便

最后于 2020-10-1 20:29 被尐进编辑 ,原因:
2020-10-1 20:27
0
雪    币: 186
活跃值: (112)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
尐进 qqxiaobai 现在不都流行用hook大法吗?不管它具体怎么算,直接调用就行了![em_19] 大厂麻烦咯 牵扯到全局变量(服务器返回&a ...
原来如此,今天搞某拍登陆算法,发现升序排序后结果,与so文件计算结果不同,我还在纠结要不要把算法还原呢,结果发现so层内部还原,毫无思路,还在迷茫中。。。
2020-10-1 21:36
0
雪    币: 2677
活跃值: (5390)
能力值: ( LV10,RANK:177 )
在线值:
发帖
回帖
粉丝
8
感谢大佬分享
2020-10-1 21:50
0
雪    币: 258
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
太强了。。
想请教一下大佬这个main.cpp文件是怎么写出来的。。
我看了一下,像是重新写了一遍汇编的调用,这种程序实现是有固定的格式吗(比如寄存器那些定义都是事先写好的,只需要还原函数就可以),这一块有什么资料可以参考嘛?
2020-10-19 10:38
0
雪    币: 5492
活跃值: (3317)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
mb_oxfaajng 太强了。。 想请教一下大佬这个main.cpp文件是怎么写出来的。。 我看了一下,像是重新写了一遍汇编的调用,这种程序实现是有固定的格式吗(比如寄存器那些定义都是事先写好的,只需要还原函数就可以) ...

自己写的1比1识别汇编转C工具 构造好堆栈即可 

遍历识别算法调用的函数 反汇编引擎转汇编 写代码对每一条汇编指令进行翻译  如mov x0, x1 等价于 x0 = x1

最后于 2020-10-19 13:27 被尐进编辑 ,原因:
2020-10-19 13:19
0
雪    币: 76
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
大佬方便给个联系方式么
2020-10-28 14:39
0
雪    币: 5492
活跃值: (3317)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
佳乐ing 大佬方便给个联系方式么


最后于 2020-10-28 15:40 被尐进编辑 ,原因:
2020-10-28 14:40
0
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13

大神,请教某龙sign咋破?

link:d2w4OC5hcHA


最后于 2020-11-1 04:42 被西北方向编辑 ,原因: link
2020-11-1 04:26
0
雪    币: 5492
活跃值: (3317)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
西北方向 大神,请教某龙sign咋破?link:d2w4OC5hcHA
某龙?
2020-11-2 09:08
0
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
尐进 某龙?
 有附下载link哦,是flutter写的,sign部分完全没思路…
2020-11-3 16:51
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
为啥你的IDA搜索sign= 能搜索到 我的却不行呢 app版本一致
2020-12-21 01:43
0
雪    币: 642
活跃值: (1802)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
17
西北方向 [em_78] 有附下载link哦,是flutter写的,sign部分完全没思路…
如果是flutter就放弃吧。
2020-12-29 13:18
0
雪    币: 364
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
求联系方式
2021-2-5 07:01
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19

已关注

最后于 2021-3-10 13:04 被fdoo编辑 ,原因:
2021-2-19 12:10
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20
大佬求联系方式
2021-3-16 17:47
0
雪    币: 1726
活跃值: (3524)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
21
高手高手,高高手
2021-3-19 21:36
0
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
ogli324 如果是flutter就放弃吧。[em_2]
只得放弃了
2021-4-16 17:47
0
雪    币: 171
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
大佬,怎么知道这个函数调用了哪些函数呢?
2021-4-24 18:16
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
大佬  我要某音的  留个联系方式给我
2021-9-22 15:50
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
大佬 能给个联系方式吗 加你一个好友 愿意付费!
2021-11-25 18:49
0
游客
登录 | 注册 方可回帖
返回
//