[Web逆向]某迪汽车品牌小程序逆向
- 百科生活
- 2024-11-24
- 1
- 更新:2024-11-24 10:22:33
这两天看到了一位大佬发了两篇小程序的逆向帖子
库迪小程序sign值加密算法分析
某壁纸小程序sign逆向分析
手痒想试一试,刚好想做某迪汽车品牌的自动签到,就盯向了他!!!
Reqable (抓包工具)
unveilr (解包工具)
vscode
Wechat 3.9.11.15
1、配置抓包软件
抓包软件的配置见官方文档
2、启动软件抓包
3、启动小程序并抓包
我这边微信版本为3.9.11.15,应该是最新版的
请求可能会比较多,我们可以在控制台筛选只显示微信的请求
1、目标一:返回值
启动小程序后就会看到很多的请求,随便点击一个即可
我们可以看到他的返回值是加密的
这种返回值后面有两个等号,一般是base64或者AES,我这边测试了base64不可以,那么就只能进行逆向分析了
2、目标二:请求头
查看请求头发现有几个请求头是非标准http协议的请求头,那么大概率也是需要逆向的,因为这几个请求头每一个请求都有!!!
x-clienttraceid:暂时不知道是什么,但是是一个什么id,可能是固定值
Nonce:暂时不知道是什么
Curtime:很明显的时间戳
Checksum:暂时不知道是什么,不过很像md5之类的摘要算法生成的
目标确定后,开始动手!!!!!!!
1、找到wxapkg文件
在pc微信上将目标小程序打开之后,尽量把所有能点的页面都先点一遍,防止部分小程序存在分包的情况导致未能完全加载(直接复制大佬的话,我肯定没有偷懒[认真脸])
大佬发的文章中wxapkg文件是在微信的保存文件下,我这边不知道是版本问题还是设置问题,我这边是在电脑的文档目录下
我担心不好确定小程序的id,就直接全部删除了,重新加载后出现的肯定是我想要的
随便点了几下后的结果,其实每个接口都需要的内容,不点应该没啥问题(纯属推测,没试过)
2、使用unveilr解包
执行命令:
D:BackupDocumentsWeChat FilesAppletwxf62054ec313d6f5358是我这边小程序的目录,自己替换为自己本地目录,路径一定要用双引号引起来!
执行完成:
命令执行后的结果
文件输出:
直接使用vscode打开项目(因为这个项目不需要跑起来,所以就不需要微信开发工具)
1、找到关键代码
因为我们前文已经说明了,返回值可能是base64或者AES,base64的可能被我们暂时pass掉了,所以先搜索AES碰碰运气
看这个文件名,我感觉我运气还是很不错的!!!
点进来后代码是压缩过的,直接找个网页格式化一下(我试了vscode的格式化,效果不太行。。。)
格式化后的代码:
代码结构如此清晰,位置如此正确,我感觉没必要写下去了!!!(不是)
2、分析解密代码
根据函数名,我们直接看解密的函数
代码太清晰了,真不知道说啥了。。。
加密模式是CBC,填充方法是pkcs7,接下来找到偏移量和密钥就可以了
3、找到密钥和偏移量
密钥是变量a,偏移量是n,可以直接在下面看到对应的代码。。。
根据代码,我们去constant-obfuscated.js文件里面继续找
同样先把代码格式化一下,方便我们观看
1、找密钥
搜索aes_key,可以搜索到两个结果,
第一个看着不太像。。。先试暂时确定为第二个
2、找偏移量
我们发现aes_iv是一个函数的运行结果!可以大展拳脚了!!
然后发现没啥可扣的。。。
感兴趣的可以去试一试,我这边直接说结果,偏移量为:uDEHPGzSIHIWBlNT
4、测试一下
返回值:
解密后:
证明我们找的没有问题,开始下一个!
返回header.js文件,继续找请求头的加密,人家都叫header了,不直接找他太不给面子了啊!!
1、x-clienttraceid
直接搜索找到结果
2、Nonce
直接搜索找到结果
3、Curtime
直接搜索找到结果,证明是时间戳
4、Checksum
直接搜索找到结果,这个是appSecret+Nonce+时间戳计算出来的sha256
appSecret和偏移量一样存在一个列表内,可以直接算出来,感兴趣可以自己看一下,结果是:%4_CA*U$GM6N#0EP
5、测试一下
直接用抓包时的请求进行重发:
预料内的结果,返回值不一样,解密一下结果是
Curtime修改为当前的时间戳重新请求,返回结果
x-clienttraceid和Nonce是随机值,我这里就不修改了,直接计算Checksum
组合结果:
计算结果:
返回正常:
这个还是很简单的一种,刚好他的代码都被我猜中了,完全没有太难得到部分
完美完结撒花~