大神论坛

找回密码
快速注册
查看: 281 | 回复: 0

[思路] web逆向之提取科大讯飞的AI对话体验页面

digest

主题

帖子

0

积分

初入江湖

UID
641
积分
0
精华
威望
0 点
违规
大神币
68 枚
注册时间
2023-10-14 10:40
发表于 2024-05-19 10:40
本帖最后由 waynewange 于 2024-05-19 10:40 编辑

最近发现了一个小程序,可以用英语和AI对话,最重要的是能够口语评分,这套口语评分系统就是中高考我们的听说系统!!

于是开干。
欢天喜地的打开电脑

悲。。。
无论怎么讲,运行起来了,是有wxapkg产生的,拿来反编译一下。
在……\WeChat Files\Applet找到小程序的wxid和PC版加密的wxapkg,扔到pc_wxapkg_decrypt里面解密

然后wxappUnpacker解包

很好报错了。缺了个__wxConfig。反编译到哪一步了呢?哦原来js提起出来了,但还没有分割,然后wxss和wxml都没搞。
补一下吧

然后单独运行这个wuJs.js来分割js。又缺了。。

报错就补报错就补,补完为止。

看起来不报错了,但是为什么这个split不对呢

wuJs分隔js的方法其实就是hook掉define函数,观察app-service.js,的确是有执行define的

那是哪里出现问题了呢?很有可能是define在执行过程中被重新定义了。于是查找

确实。删掉它。

运行起来了,但不多。这里好像是require('app.js')的时候出错了。但这也是不对的,因为require这个函数应该也是被hook掉的,不会报错。于是查找

嗯,也是被重新定义了,删掉。

ok成功跑完,然后就是

[/size][/font]
[font=Arial][size=4]node wuConfig.js .\dec\app-config.json
node wuWxml.js .\dec\page-frame.html
node wuWxss.js .\dec

把这些也处理完。OK反编译完毕。可以看“源码”了。

在手机上看看这个页面有什么字。这个AI对话的功能是在这个功能体验按钮里面的。先搜搜

纳里,没有??搜个别的

好的搜到了,上面的那些是从服务器获取的。看一下这个i.https函数

呵呵真好又可以破加密了。
找到两个函数,开干。

接着就是对着写abcdefg一个个摁进去看看返回什么,我试了一下,其实这个不是很复杂,所以就懒的搞调试了。过程省略,摁完标记出来,然后提取。

https函数也搞出来。

然后问题来了,这个Authorization是什么呢,我本来想蒙混过关,试了一下,不带这个返回401,所以必须有这个鬼。。。
向上找

悬着的心终于死了,合着还是要wx.login的code
这个东西我只会用PC端抓。。
没事没事,你不是不让我用电脑端打开吗,这段代码我是能找到的

我刚好又会改内存,加载这段代码的时候改掉它就好。
首先你的微信是一个能够被抓包的版本,然后打开Fiddler。
打开小程序,打开CE附加进程,查看内存,搜索PC端,附近下个写入的断点(其实加载了的代码是不用再从这个位置读取的,但是再下一次读代码的时候会写到差不多的位置,然后就可以在这个时候断下改掉)

重启小程序,断的时候搜索刚刚那个判断PC的函数 interceptPc

改掉它

运行,
中间这个过程不能太久,不然就会

反正大抵就是你先准备好这个改完之后的字符串

' false;                                              '

然后一断就搜,搜完就改,改完就运行,基本上问题不大。
【我这个菜鸟会的东西少,我也不懂原理,我也不会别的方法,我也不知道行内的东西,我就估摸着掰扯,见笑了 ^ - ^ 】
OK绕过了PC判断了

Fiddler抓到一个包,就是登录完获取token的那个。好家伙,我说为什么PC版不行呢,因为PC版会自动给这个Content-type是json的body加双引号。估计开发者是服务器的代码也不能动,双眼一黑被迫禁pc版的。
拿我们刚刚反编译出来的代码解一下这个发送出去的内容。(我这个人,习惯是很不好的,通常提取出来js直接扔html里,拿edge打开F12来调用。)

呐呐呐这个就是wx.login的code的了
但是这距离我们的目标还很远,我也懒得一个个函数去看,所以,我选择,抓包。
至于这个双引号,我就委屈一点拿fiddler给他手动删掉就好。

访问了这个网址。
拿浏览器访问一下,发现会报重新登录

发现浏览器是因为其中一个请求返回了个401

回到小程序去抓这个请求
对比一下,发现多了这个

看一下这个东西怎么来的

然后就再也搜不到对于_XXJ_AI_ECPERIENCE_TOKEN这个本地存储的赋值了,那就盲猜一下。还记得我们一开始有一个getToken的接口吗

数据一解,刚好是一样的。
OK了最后把这个东西扔浏览器里,就可以用了

但是这个鬼玩意大概2个小时不到就过期了。所以我之前其实成功过一次,这次bb叨叨的写一大堆东西,等我截图的时候就没了(悲)

而且这个token是有次数限制的,每个人只有10次对话机会。。。

写这篇文章真的不容易啊折腾了好久,作为一个菜鸟其实什么都不懂,摸着石头过河。本宫乏了,我去睡觉了。。
我的这个token提取过程很复杂,跪求大佬指点。


注:若转载请注明大神论坛来源(本贴地址)与作者信息。

返回顶部