【教程】某1短视频逆向分析

转自某破解论坛
(成功的希望能分享下key和iv)
自己研究了半天不知道怎么解密。
目标:
服务器域名和ip是什么?是否有多个服务器?分别是什么?服务器域名注册于哪里?服务器ip归属地是哪里?
数据通讯的加密方式是什么?
如何动态破解限制?

使用到的工具:
burp suite (http https websocket 抓包分析工具)
jadx (java系列 反编译工具)
mumu模拟器 (android 模拟器)
frIDA (hook神器,支持ios android windows linux)
objection (frida针对android方向的辅助分析工具)
mt管理器 (在android端针对apk持久化修改神器)
正题开始

运行apk,了解大概的功能,方便分析

发现该程序是一个类似某音的短视频app
app需要联网拉取播放列表和视频地址
模拟器挂上代{过}{滤}理后上抓包工具
发现http数据包里有一个很可疑的地址
内容需要回复可见*api.*:8080/api.*

该接口返回数据包特别大,从地址和返回包大小,猜测这就是视频数据的接口,先看看提交参数和返回内容

‘*’发现几个特征

1.请求提交的数据和返回的数据都是json格式
2.都拥有 data(数据), timestamp(时间戳), sign(签名) 字段
3.data数据都是加密的

‘*’尝试分析加密和解密方式

1.将apk放入jadx分析源码
2.搜索 .put(“data”

‘*’为什么搜索 .put(“data” 而不是其他的什么?因为根据java开发经验,提交数据是json,所以一般会使用JSONObject对象,当然不止这一种写法,还有很多就不一一列举了

3.发现很多代码块都使用了 .put(“data”
4.但是最后两个的包名上有 encrypt 太过可疑
5.咱们先双击查看第一个可疑点

发现该函数最终生成的json对象结构不对.多了route, via, token 等字段
所以排除

6.接下来我们看第二个可疑点

发现该json结构非常符合,首先只有三个put,并且有一个data的put
所以结果应该是 {“X1”:, “data”: h2, “X2”:}
结构符合了.然后经过进一步跟进发现
X1 是 timestamp
X2 是 sign
所以最终结果就变为 {“timestamp”:, “data”: h2, “sign”:}
完全符合
我们知道data被加密了.我们看到data中到底put的value是h2
而h2的最近一个赋值是 String h2 = h(str);
str是该函数的参数,由调用者传入,类型是字符串
所以我们猜测str就是data的内容,至于是加密前还是加密后,我们还需要先看看h这个函数干了什么

到这里我们已经可以确定以下几点

1.h函数首先接收一个字符串
2.然后调用b并传入接收到的字符串和另外一个字符串
3.b接收到两个字符串后,调用b.b,并传入调换位置的两个字符串
4.然后b.b出现了加密
5.加密算法是AES (对称加密)

对称加密和非对称加密的区别是:
对称加密,解密和加密的密钥是一样的
非对称加密,密钥是有公钥和私钥的

6.模式是CFB (AES拥有 ECB,CBC,CTR,CFB,OFB 5种模式) 如果感兴趣的朋友可以下来深入了解它们的区别和适用场景,这里我们不做深入
7.通过确定加密方式 我们可以尝试分析加密和解密所密钥了【教程】某1短视频逆向分析【教程】某1短视频逆向分析【教程】某1短视频逆向分析【教程】某1短视频逆向分析【教程】某1短视频逆向分析【教程】某1短视频逆向分析【教程】某1短视频逆向分析【教程】某1短视频逆向分析【教程】某1短视频逆向分析

© 版权声明
THE END
喜欢就支持以下吧
点赞0
评论 抢沙发