某某己直播app数据AES解密

查看 70|回复 9
作者:奇奇小霸王龙   
该APP的大部分数据是明文的,只有部分数据是AES加密的;由于用户是信息是在服务端验证的,收费的直播拿不到播放源。。。;
所以分析这个APP主要是个过程;因为分析过多次这样的加密,都没记录过,这次记录一下;小白写的偏小白向教程
其实过程很简单,但是想写的详细一点,就写了那么一长溜
工具:
Charles;
模拟器
jadx-gui
Charles抓包的配置就不说了,apk拖进jadx,打开chales,模拟器上打开app开搞
1.随便点开一个直播间,charles抓到下面一个请求,返回了加密数据 注意下返回头 等下用到


001.jpg (26.34 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

2.用jadx文本搜索字符串“private/getPrivateLimit”,结果如下,并且知道了这个方法名loadPrivateLimit,继续文本搜索“loadPrivateLimit”


002.jpg (32.56 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传



003.jpg (7.39 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

3.结果有很多,但大都是相互引用或者函数里面的嵌套的同名变量/方法,发现有一个 “base.BaseActivity” 因为我们是点击直播间后触发请求的 事件的监听应该就是在Activity中


004.jpg (104.16 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

4.打开“base.BaseActivity”文件 ctrl+点击函数名跳转到“base.BasePresenter”


005.jpg (38.78 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

5.打开“base.BasePresenter” ;会java的应该看出来了,这个是RxJava库的使用格式,我也是现学现卖,我们主要观查最后的subscribe方法,点击方法里面的类“BasePresenter$requestGameCenterPoints$1” 去里面找onNext方法,为什么找onNext方法呢,rxjava就是这样的流程(不知道我的理解对不对)


006.jpg (44.4 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

6打开“BasePresenter$requestGameCenterPoints$1” 并没有onNext方法,看到她有个父类“base.observer.BaseObserver” 我们点进去之后发现了onNext方法;该方法主要根据返回头x-content-puzzle的值 确定进行怎么样的解密;确定解密方法在“base.observer.RootObserver”里


007.jpg (20.22 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传



008.jpg (79.29 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传



009.jpg (41.57 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

7.打开“base.observer.RootObserver” 分析见图,最终解密是在“util.AES”类的aesdecrypt方法中


010.jpg (114.76 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

8.打开“util.AES”,我们确定了aes的填充方式为AES/CBC/PKCS7Padding 密钥为jwt md5后的前16个字符;向量为后16个字符;我们回到“base.observer.RootObserver”来确定jwttoken的值


011.jpg (53.69 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

9.打开“base.observer.RootObserver” 类,获取jwtToken是用的“domain.LocalDataManager”类的getJwtToken,他又调用了“data.sharedpreference.PrefsHelper”类里的“getJwtToken”方法;来到这里我们确定了存储的文件名和存储的字段值;这个getSharedPreferences是android的一个类库,将数据存储到/data/data/应用包名/shared_prefs;


012.jpg (24.26 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传



013.jpg (102.34 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

10.我们在shared_prefs下找到BeautyLivePrefs文件,打来文件再找到jwtToken存储的值即可,我们对其进行md5加密再分割成两段后进行解密


014.jpg (191.95 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

11.使用工具AES解密


015.jpg (85.37 KB, 下载次数: 0)
下载附件
2021-5-14 14:46 上传

帖子4.26发布了,但是5.13被屏蔽了,原因是图片中暴漏了app的包名,15张图我又重新一一对包名打了马赛克 ( 无意中搜帖子才知道我只是被殃及的池鱼;现在讨厌死那个人了,害我重新打马赛克)
其实这片帖子主要是介绍aes解密的,我接触过好几款视频都是用这种rxjava类库进行网络请求的,所以记录一下,方便今后自己或其他人遇到rxjava封装的网络请求知道如何下手

下载次数, 下载附件

奇奇小霸王龙
OP
  


Aleshaaaa 发表于 2021-4-26 16:29
希望楼主把解谜前的样本发出来让我们钻研钻研

a1nk其实我是个标点符号xyz
奇奇小霸王龙
OP
  

现在android网络请求,主流就是 RxJava+Retrofit+okhttp3 三个库的组合使用;本小白不会android开发,就百度看了看这套流程,一知半解的
chenballack   

哈哈 厉害
395552895   

谢谢分享
奇奇小霸王龙
OP
  

主要是分享下遇到这种aes加密数据进行解密的一个思路流程
Aleshaaaa   

希望楼主把解谜前的样本发出来让我们钻研钻研
奇奇小霸王龙
OP
  


395552895 发表于 2021-4-26 16:18
谢谢分享

你回复的好快
奇奇小霸王龙
OP
  


chenballack 发表于 2021-4-26 16:23
哈哈 厉害

没有了  小白一个
Christia   

漂亮啊啊
您需要登录后才可以回帖 登录 | 立即注册

返回顶部