所以分析这个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封装的网络请求知道如何下手