|
![](https://bbs.125.la/data/attachment/common/cf/153842apppxgy1k84sr88x.png)
本帖最后由 moxi520 于 2024-7-9 11:03 编辑
某资金盘Uniapp逆向协议加密静态分析
查壳(查APP有没有加壳,俗称加固)
注:我这里显示可能未加固(其实是没加壳的),具体可以用TM管理器或者用其它的查壳工具 查看是Uniapp,还是flutter,还是Java
用压缩包打开APK文件 进到assets目录下,发现有个 apps 文件夹,进去看看怎么个事
发现有个UNI开头的文件夹,点进去在接着点进去www的文件夹里(这种类型的就是Uniapp)
把这个 app-service.js 导出来到桌面(这个JS文件就是Uniapp的主代码)
开始抓包,看具体有那些加密了
注:我这里用的是Sunny的抓包工具(模拟器Sunny抓包配置Sunny官网就有教程)根据自己喜好用自己趁手的抓包工具,不一定跟我用的一样
把APK丢进模拟器里面看看能不能运行,OK能运行起来,不能运行就看看是否是有root检测或者模拟器检测
第一处加密 抓包发现协议头上有个sign 看下值 有点像加盐(俗称MD5),把APP结束后台重新打开在观察下 sign 的值发现跟之前抓到的一样没变化,那就是在加盐的时候没有加入一些会变动的的值进行加盐
第二处加密 抓包注册的时候发现提交的Json里面有个code是加密的,看下这些字符长度这么短,首先排查非对称加密,那剩下的就是对称加密了
第三处加密 抓包登录的时候发现提交的Json里面有个code是加密的,看下这些字符长度这么短,首先排查非对称加密,那剩下的就是对称加密了
开始静态分析
OK,加密的地方都找出来了,开始静态分析
问:这里可能就有人有疑问了,不是Uniapp吗?直接上HBuilder X里面的Uniapp调试不就行了,干嘛还静态分析那么麻烦呢
答:我有用HBuilder X调试结果卡在连接成功界面一直在转圈圈,后面也上了WebView调试,发现在浏览器里抓不到包,我直接放弃了,所以才静态分析JS文件.
行了废话少说,我在这里用 WT-JS 来打开之前导出到桌面的 app-service.js 美化JavaScript代码,美化之后保存,美化只为了方便阅读代码
之后用 Visual Studio Code 打开文件 Ctrl+F 快捷键搜索 [JavaScript] 纯文本查看 复制代码 sign: 区分大小写 全词匹配都选上
找到这个位置发现好像跟协议头的格式差不多,那就开始找 k 这个方法定义在哪里
我们双击 k 变成选中状态之后,鼠标右键 转到定义
这里就是 k 定义的地方 最后都是调用了这个方法 [JavaScript] 纯文本查看 复制代码 (0, l.default)(r + d.sign) 双击 l 右键 转到定义
发现是webpack调用模块的一个样子,我们直接搜索 [JavaScript] 纯文本查看 复制代码 5363: 区分大小写 全词匹配都选上
发现就是MD5加密
我们回到 k 定义的地方,浏览一下具体流程 把传进来的 t 进行 Json到文本 之后进行MD5(r + d.sign)
d.sign 是个啥东西我们还不知道,继续双击 d 右键 转到定义
又是webpack调用模块的一个样子,我们直接搜索 [JavaScript] 纯文本查看 复制代码 5a5d: 区分大小写 全词匹配都选上,结果没有,换个格式 加上双引号 [JavaScript] 纯文本查看 复制代码 "5a5d":
嘿嘿,找出来了.我们进行加盐验证一下
没毛病,接下来就是 登录 跟 注册的code了,开始动手
搜索 [JavaScript] 纯文本查看 复制代码 code: 区分大小写 全词匹配都选上
差不多就这个位置,嘿嘿发现有个 [JavaScript] 纯文本查看 复制代码 r.aesEncrypt(r.verifyCode, "abc1234567890123") 这个方法,继续搜索 [JavaScript] 纯文本查看 复制代码 aesEncrypt:
看到是AES\ECB\Pkcs7的,需要传两个参数 t 跟 e ,t就是待加密的内容,e就是Key根据上面的调用方法,那Key不就是 [JavaScript] 纯文本查看 复制代码 abc1234567890123 开始验证,有了Key我们直接解密看看.
诶,奇怪解密怎么没结果呢?我们明明找对位置了啊。这里我就直接说了这个加密值就是空文本加密出来的我们空加密文本直接加密看看
OK,竟然Key找出来了,那我们直接解密注册的code看看.
诶,发现竟然解密不出来,我们继续回到JS文件,搜索一下注册包里面的一个值 就拿 parentSpreadCode 这个搜索吧 [JavaScript] 纯文本查看 复制代码 parentSpreadCode:
发现key竟然跟登录的不一样.最后更改Key解密注册的code
至此图文教程结束.
如果本帖对您有帮助还望动动您发财的小手点个赞,评分支持一下!
|
评分
-
查看全部评分
|