JS逆向|猿人学逆向反混淆练习平台第六题逆向分析

张开发
2026/6/11 17:58:32 15 分钟阅读
JS逆向|猿人学逆向反混淆练习平台第六题逆向分析
关注它不迷路。本文章中所有内容仅供学习交流不可用于任何商业用途和非法用途否则后果自负如有侵权请联系作者立即删除一.题目地址https://match.yuanrenxue.cn/match/6二.抓包分析打开控制台后抓包分析:请求载荷中有个m的加密参数切换到 启动器点击 req 后面的 js:进来后可以很清晰地看到 m 的加密位置:定位到 r 函数将整个 delect.js 文件保存下来。格式化代码后再进行分析。三.逆向分析发现有一些混淆代码如:还有两处 jsfuck 的代码:和:我的做法是等价替换比如第一个混淆的js去掉最后的 调用 (_)拿到去运行:得到一小段js:window.o 1因此这里就将这小段js替换上面的混淆代码然后映射发现也能正常请求到数据:另外两处的混淆也这样进行替换处理。接下来就是对js添加一些环境代码:window globalThis;然后将最后的 r 函数里面的代码删除保留return语句:if (window.o 6) { alert(不要戳这么多下人家好痛嘛~); location.reload(); }就能正常加密了:编写Python代码进行请求:import timeimport requestsimport execjs session requests.Session()session.headers { User-Agent: yuanrenxue, }session.cookies.set(sessionid,XXXXXX)url https://match.yuanrenxue.cn/api/question/6 with open(delect.js,r,encoding utf-8) as fp: jscode fp.read()ctx execjs.compile(jscode) total 0for i in range(1,6): timestamp str(int(time.time())*1000) m ctx.call(z,timestamp,1) params {page:i,m:m,q:f1-{timestamp}|} res session.get(url,params params) print (res.text) total sum(res.json()[data]) print (total)运行后报错了:问题不大在代码前面加下面的代码即可:import subprocessfrom functools import partial subprocess.Popen partial(subprocess.Popen, encodingutf-8)再次运行就能拿到数据了:四.后记这个题目还算比较简单就是 q 参数比较烦人我和网上弄的一模一样但是只能拿到第一页的数据后来看到别人的代码才拿到所有的数据。今天的分享就到这里感谢阅读。欢迎加入知识星球学习更多AST和爬虫技巧。

更多文章