app shield so 加密算法分析破解还原|xydata 算法分析破解

app shield 算法分析 10 / 13

仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。

Tips: 2022-02-25 更新,xydata 是 rc4 算法(之前发文的时候还不知道,以为是自写的算法,这里说明一下)

前言

继 aes md5 之后就只剩下 xydata 算法分析了,这一篇就来光顾下最后一个算法

xydata 分析

前面是获取 md5 加密结果 build sappid device_id 等参数,然后调用 sub_404E8 函数,参数都加了注释

点进来,这里我基本都加了注释,总结这个函数的核心逻辑就是拼接字符串

再往下还有两个函数,其中第一个是核心函数,执行完在拼接 XY 就是最终的结果了,先来看看 sub_406FC 这个函数

点进来,主要分析这两个

这是 xydata 函数,看不出来是啥

点进 sub_40C74 函数里,里面又调用了两个

进入 sub_4AF1C 函数,有个三个参数,内存地址,数字,字符串,里面都是运算逻辑,感觉是初始化一些数据

在看 sub_4A94C 函数,这里面就是真正的数据处理逻辑了。回到开始,查看 sub_40CFC 函数

这里核心两个函数,一个简单的数据处理,一个 base64 编码函数

unidbg

这个函数执行前,下个断点

先记录下 r0 的地址 0xbffff6a8,这是用来存放结果的

查看参数三的数据,正是 build id

参数七在 msp 里,查看数据正是 md5 的加密结果,其余的参数就不看了,n 执行

在查看 r0 0xbffff6a8 地址的数据,密密麻麻的,我们需要的数据就在其中一个地址里,就不去一一找了

进入 sub_406FC 函数,在开头处下断点

参数一不知道是啥,参数二就是前面 sub_404E8 函数的执行结果

前面的就不分析了,直接在 sub_40C74 函数执行前下个断点

参数一,是 build device_id sappid 等参数的拼接结果,参数二是 0x53

参数三是 buffer 用来存放数据,参数四目前不知道是啥,这里先记录下参数三的地址 0x402920c0

进入 sub_40C74 函数,在 sub_4A94C 这里下断点

参数一是上面一个函数的执行结果,参数二三四是传进来的,n 执行

查看参数三地址的数据,这里就是运算结果

复制到 CyberChef 看看 base64 结果,不太一样,继续往后分析

这里下个断点

查看参数一的数据,这个就是最终结果

n 执行,查看 r0 数据,base64 的结果已经出来了

在使用 CyberChef 看看,随便复制一段,结果一样

最后

某红书的 shield 算法,总算是分析完了,说句实话,真心累

暂无评论
本文作者:
本文链接: https://www.qinless.com/?p=660
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qinless 的博客!
100

发表评论

返回顶部