【免费下载链接】ps5-webkit-autoloader
An automated payload loader for exploited PS5 consoles
PS5 WebKit Autoloader 是一个完全离线的漏洞链调度器,核心文件app.js会在页面加载时用一条正则读取navigator.userAgent中的固件号,并据此在三条漏洞链(umtx2 / poops / relapse)之间自动择优装载。本文带你读懂这套「User-Agent → 固件 → 漏洞链」的自动调度机制,搞清它在双兼容固件下如何二次选择,以及为什么整个流程能在隐藏 iframe 里静默跑完。
一图看懂漏洞链调度全景
整个项目把三条漏洞链打包进同一个前端,由app.js在运行时决定「跑哪一条」。你可以把它理解成一个漏洞链调度中心:
- umtx2—— 覆盖固件 1.00–5.50,全离线
- poops—— 覆盖固件 7.00–12.00,全离线
- relapse—— 覆盖固件 7.00–13.60(排除 9.05 / 11.40),需本地网络接口
三者殊途同归:最终都拉起elfldr,把payload.elf送进主机,完成一次「开机即加载」的漏洞链运行。项目架构全景见 ARCHITECTURE.md。
核心原理:从 User-Agent 到固件版本识别
调度的一切,始于对浏览器的「身份识别」。app.js用detectFirmware()从 User-Agent 里抠出固件号:
- 匹配
PlayStation 5/x.xx,提取出字符串与数值两份结果 - 不是 PS5 浏览器时,直接判定为「不支持」并终止调度
这一步的源码见 detectFirmware()。它返回的固件号(如7.61)就是后续所有判断的输入。
💡 正是靠这条 User-Agent,
app.js才能在不打扰用户的前提下,「看一眼」就知道当前主机是什么固件。
固件版本 → 漏洞链映射表
拿到固件号后,三个判断函数各自负责一段范围,逻辑集中在 固件支持判定:
| 固件范围 | 漏洞链 | 是否离线 | 特殊排除 |
|---|---|---|---|
| 1.00 – 5.50 | umtx2 | 全离线 | — |
| 7.00 – 12.00 | poops | 全离线 | — |
| 7.00 – 13.60 | relapse | 需本地网络接口 | 排除 9.05 / 11.40 |
注意7.00–12.00 是重叠区间:poops和relapse都支持,这就引出了下一节的「二次选择」逻辑。
app.js 如何调度三条漏洞链
调度主函数pickExploit()(见 pickExploit())执行一套清晰的优先级决策:
- 先看强制开关—— 若命中
?force=或构建期EXPLOIT_MODE,直接绕过映射表 - 再看固件是否可识别—— 识别失败即报「Not a PlayStation 5 browser」
- umtx2 优先短路—— 只要
<= 5.50直接返回umtx2 - 双兼容区间二次选择——
7.00–12.00时读取用户偏好 - 单链兜底—— 只有
relapse或只有poops时直接返回 - 全部落空—— 报「Unsupported firmware」
双兼容固件的二次选择
在7.00–12.00这段两条链都支持的固件上,app.js会依次查询两处偏好来源:
localStorage的wkal_exploit键 —— 用户之前手动选过的结果selected_exploit虚拟文件 —— 安装流程写入的服务端偏好(默认relapse)
若两处都没记录,则默认落到relapse。这套偏好最初由安装页在缓存前让用户点选,写入逻辑见 chooseExploit(),服务端对应入口在 selected_exploit。
🎯 换句话说:双兼容固件下,「装的时候选哪条」会被记住,运行时自动复现同一选择,无需再次操作。
强制模式与 ?force= 调试开关
除了自动调度,项目还预留了两档手动强制能力,便于在任意固件上演练指定漏洞链:
- 构建期
FORCE_EXPLOIT(auto | umtx2 | poops | relapse),由构建脚本写入app.js的[[EXPLOIT_MODE]]占位符 - 运行期页面查询参数
?force=umtx2|poops|relapse,优先级最高
命中强制模式时,app.js会在日志里打印一条[force] using ...警告,然后绕过映射表。但漏洞链自身的固件护栏仍然生效——强制只是换链,不能突破安全边界。
漏洞链在隐藏 iframe 中静默执行
调度出漏洞链后,app.js并不会弹出一个可见页面,而是把目标链的 URL 塞进一个display: none的同源 iframe:
umtx2→umtx2/index.html?autoload=payload.elf&v=1poops→slopkit/slopkit/poops.html?...&autoload=payload.elf&v=finalrelapse→relapse/index.html?autoload=payload.elf
三条链的完整 URL 常量见 漏洞链 URL 定义。它们都带?autoload=payload.elf,表示「跑完漏洞链后自动加载统一负载」。iframe 虽不可见,文档仍在后台完整执行,并通过postMessage把日志与完成状态回传给父页面。
日志镜像与进度条联动
为了让用户「看得见」后台在干什么,app.js每 500ms 轮询一次 iframe 内的日志,把它镜像进主界面的日志终端和进度条:
- umtx2 / relapse走统一的
#console日志镜像,按阶段关键字推进百分比 - poops走
slopkit专用镜像,按STAGE0–STAGE5阶段推进 - 结果通过
postMessage的{type:"wkal", kind:"autoload"}消息判定成功或失败
成功时进度条拉满到 100%,日志显示「Payload loaded」;失败则保留日志流用于排障。这一套镜像逻辑让调度过程对用户是透明且可观测的。
关键源码索引
想继续深挖,可以从下面几处入手:
| 功能 | 位置 |
|---|---|
| 固件识别 | detectFirmware() |
| 漏洞链调度主函数 | pickExploit() |
| 固件范围判定 | 支持判定 |
| 漏洞链 iframe URL | URL 常量 |
| 双兼容偏好写入 | chooseExploit() |
| 服务端偏好接口 | selected_exploit |
| 总体架构说明 | ARCHITECTURE.md |
小结
PS5 WebKit Autoloader 的精髓,在于用app.js这一份调度逻辑,把三条针对不同固件的漏洞链统一收敛到同一个离线入口:
- 读 User-Agent→ 得到固件号
- 查映射表→ umtx2 / poops / relapse 三选一
- 双兼容二次选择→ 尊重安装时的偏好,默认 relapse
- 隐藏 iframe 静默执行→ 日志镜像 + 进度条全程可观测
整套机制无需第三方 DNS、无需外网,装好后从主界面一键启动即可。理解了这个「User-Agent 驱动调度」的设计,你就能看懂它如何在不同固件上自动挑对漏洞链,并把一次完整的漏洞链运行稳稳跑完。
【免费下载链接】ps5-webkit-autoloader
An automated payload loader for exploited PS5 consoles
相关推荐
如何用ROP与Worker线程在WebKit中劫持栈执行任意系统调用:Relapse-Exploit PS5漏洞链完整指南
如何用ROP与Worker线程在WebKit中劫持栈执行任意系统调用:Relapse Exploit PS5漏洞链完整指南 Relapse Exploit 是一
PS5 WebKit Autoloader为何能全离线运行?AppCache缓存与版本化目录原理深度解析
PS5 WebKit Autoloader为何能全离线运行?AppCache缓存与版本化目录原理深度解析 PS5 WebKit Autoloader 是一款专为
PS5 WebKit Autoloader完全指南:免第三方DNS的全离线PS5越狱自动加载器,一文看懂它为何不同
PS5 WebKit Autoloader完全指南:免第三方DNS的全离线PS5越狱自动加载器,一文看懂它为何不同 PS5 WebKit Autoloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考