当前位置: 首页 > news >正文

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":f'1-{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, encoding="utf-8")

再次运行,就能拿到数据了:

四.后记

这个题目还算比较简单,就是 q 参数比较烦人,我和网上弄的一模一样,但是只能拿到第一页的数据,后来看到别人的代码,才拿到所有的数据。

今天的分享就到这里,感谢阅读。

欢迎加入知识星球,学习更多AST和爬虫技巧。

http://www.jsqmd.com/news/586671/

相关文章:

  • Navicat密码快速恢复工具:三步解密法高效解决数据库连接密码遗忘难题
  • 如何用自动化工具提升远程办公族的日常效率?
  • 2026年全国酒柜定制公司推荐,上海酒依实业有限公司性价比怎么样 - 工业推荐榜
  • 无网络环境方案:OpenClaw离线运行千问3.5-9B
  • 书匠策AI:论文写作界的“智能导航仪”,期刊之路的领航者
  • 2026六安汽车贴膜门店实测榜单|高分标杆出炉,选店避坑指南 - GrowthUME
  • 2026年剖析上海酒依实业介绍,江浙沪酒柜定制推荐哪家 - myqiye
  • Cats Blender插件:VRChat模型优化的终极解决方案
  • GitHub Star 暴涨!前 React 核心成员出手,把浏览器 30 年算不好的文字布局问题解决了
  • Nuitka打包实战:如何高效管理多配置文件依赖的Python项目
  • AhabAssistantLimbusCompany:让《Limbus Company》自动化更智能的PC助手
  • n8n零基础入门指南:用快马AI生成你的第一个天气通知自动化工作流
  • Label Studio ML Backend架构设计与高可用机器学习服务实现深度解析
  • 快速构建zlibrary风格书籍搜索原型:用快马平台验证你的产品创意
  • 讲讲国内热门的减温减压装置工厂,选购要点有哪些 - mypinpai
  • 颠覆传统计算的开源利器:Calcpad工程计算自动化全场景应用指南
  • 高效管理B站资源:跨平台工具BiliTools的技术实现与实践指南
  • gRPC 前世今生一篇讲透:从 Google 内部工具到云原生时代通信标准
  • 如何实现精准视频场景分割?PySceneDetect算法深度解析
  • 从大疆API停更看趋势:企业级无人机开发,为什么说‘云原生’和‘合规性’才是未来?
  • AI赋能部署:让快马平台智能生成适配你业务场景的openclaw配置方案
  • FLUX.1-dev FP8实战指南:让普通电脑玩转AI绘画的技术革命
  • 分析山东靠谱的耐高温劳保鞋生产厂家排名 - 工业品牌热点
  • CleanMyWechat多线程并发清理机制:3倍效率提升的微信缓存管理解决方案
  • 终极指南:如何用Excel实现3D打印GCode设计的完全掌控
  • 手把手教你用mysqlbinlog恢复误删的物联网时序数据(附批量转换脚本)
  • OpenClaw智能财务助手:千问3.5-35B-A3B-FP8解析银行账单截图生成收支报告
  • seo导航站的盈利模式有哪些
  • 【AI工具】Cursor 3 深度解析:从 IDE 到 AI Agent 统一工作区,软件开发「第三纪元」正式开启
  • 别再只画折线图了!用Python把轴承振动数据变成GAF图像,让CNN模型预测寿命更准