当前位置:首页 > 百科生活 > 正文

[Web逆向]某迪汽车品牌小程序逆向

这两天看到了一位大佬发了两篇小程序的逆向帖子 库迪小程序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 组合结果: 计算结果: 返回正常: 这个还是很简单的一种,刚好他的代码都被我猜中了,完全没有太难得到部分 完美完结撒花~