ps5debug-NG(PS5调试工具)是一款面向PlayStation 5主机玩家及技术爱好者的实用工具,其核心价值在于简化PS5主机进入调试模式(Debug Mode)的流程。该工具主要依托于特定系统固件版本的WebKit漏洞,通过构建特定的网络链接或本地文件,引导主机执行代码,从而开启系统层面的调试权限。这一过程为后续运行非官方签名的自制软件(Homebrew)、备份游戏、修改游戏数据或进行深度的系统研究铺平了道路。软件本身以简洁的图形界面和命令行工具形式呈现,降低了普通用户尝试的技术门槛,但操作前仍需用户仔细核对主机系统版本,并严格遵循社区提供的安全指南。
从实际应用来看,ps5debug-NG填补了PS5早期破解与自制软件生态中的关键一环。与复杂的硬件拆解或焊接方案不同,它充分利用了软件层面的漏洞,使得操作更加便捷安全。对于热衷于探索主机极限性能的玩家来说,这款工具是进入PS5底层世界的一把钥匙。同时,其开发者也持续跟进系统更新,努力适配更多固件版本,展现了良好的社区维护活力。尽管使用此类工具存在一定的风险,例如可能违反用户协议或导致系统不稳定,但对于技术研究而言,它无疑提供了极大的便利。
- 实现了在特定固件版本上快速进入调试模式。
- 操作界面直观,状态提示清晰明了。
- 适配PC端,通过网线连接主机即可。
- 社区更新频繁,持续支持新版本固件。
- 为PS5自制软件生态发展提供了基础。
A debugger payload for jailbroken PlayStation 5 consoles. Ships a userland command server that runs inside SceShellCore, letting remote clients inspect and manipulate running processes, the kernel itself, and the system UI over a simple TCP protocol.
适用于已越狱 PlayStation 5 主机的调试器有效载荷。它包含一个运行在 SceShellCore 内部的用户空间命令服务器,允许远程客户端通过简单的 TCP 协议检查和操作正在运行的进程、内核本身以及系统 UI。
ps5debug-NG is inspired by Ctn's ps5debug 1.0b5 and is wire-compatible with it - existing clients should work without modification. It is licensed under GPL-3.
ps5debug-NG 的设计灵感来源于 Ctn 的 ps5debug 1.0b5 ,并与其网络兼容——现有客户端无需修改即可使用。它采用 GPL-3 许可协议。
The kernel kpatch routine in installer/source/main.c recognises the following firmware families. Booting on an unsupported FW prints port_outer: kpatch SKIP - unsupported FW magic 0x... to the kernel log and aborts cleanly.
installer/source/main.c 中的内核 kpatch 例程 可识别以下固件系列。在不支持的固件上启动会打印错误信息。 port_outer: kpatch SKIP - unsupported FW magic 0x... 写入内核日志并正常中止。
| Family 家庭 | Point releases recognised 点释放被认可 | Status 地位 |
|---|---|---|
| 3.xx | 3.00, 3.10, 3.20, 3.21 | Fully Verified 完全验证 |
| 4.xx | 4.00, 4.02, 4.03, 4.50, 4.51 | Fully Verified 完全验证 |
| 5.xx | 5.00, 5.02, 5.10, 5.50 | Fully Verified 完全验证 |
| 6.xx | 6.00, 6.02, 6.50 | Fully Verified 完全验证 |
| 7.xx | 7.00, 7.01, 7.01.01, 7.20, 7.40, 7.60, 7.61 | Fully Verified 完全验证 |
| 8.xx | 8.00, 8.20, 8.40, 8.60 | Fully Verified 完全验证 |
| 9.xx | 9.00, 9.05, 9.20, 9.40, 9.60 | Fully Verified 完全验证 |
| 10.xx | 10.00, 10.01, 10.20, 10.40, 10.60 | Fully Verified 完全验证 |
| 11.xx | 11.00, 11.20, 11.40, 11.60 | Fully Verified 完全验证 |
| 12.xx | 12.00, 12.02, 12.20, 12.40, 12.60, 12.70 | Fully Verified 完全验证 |
| 13.xx | 13.00, 13.20 | Fully Verified 完全验证 |
The point releases above are the exact FW magic values recognised by the switch in installer/source/main.c; that file is the source of truth. Clients can read the running FW with CMD_FW_VERSION, which returns the firmware as a decimal uint16_t (e.g. 900 for 9.00, 1240 for 12.40).
上述固件版本号是安装程序/源文件/main.c 中开关识别的确切固件版本号;该文件是最终依据。客户端可以使用 CMD_FW_VERSION 命令读取当前运行的固件版本,该命令会返回固件版本号,格式为十进制 uint16_t (例如, 900 代表 9.00 版本, 1240 代表 12.40 版本)。
0xBDDD0006) - returns pid + titleid + contentid + process name + the game's version, parsed server-side from the title's param.sfo. Useful for clients that need to know what's currently running without listing every process.0xBDDD0006 ) - 返回进程 ID + 标题 ID + 内容 ID + 进程名称 + 游戏版本,这些信息由服务器端从标题的 param.sfo 文件中解析而来。这对于需要了解当前运行程序但又不想列出所有进程的客户端非常有用。CMD_PROC_READ_STACK) - the server walks the RBP chain itself (up to 64 frames) and bundles each frame's saved-RBP, return address, frame-local bytes, and a 200-byte code window around the return address into one response. Clients avoid paying many TCP round-trips per stack frame.CMD_PROC_READ_STACK )——服务器遍历 RBP 链(最多 64 个帧),并将每个帧的保存 RBP、返回地址、帧本地字节以及返回地址周围 200 字节的代码窗口打包到一个响应中。这样客户端可以避免为每个栈帧支付多次 TCP 往返费用。0xBDAACC24.0xBDAACC24 切换。rax (CMD_PROC_CALL) - serviced kernel-side via sys_proc_cmd.rax ( CMD_PROC_CALL )- 通过 sys_proc_cmd 在内核端提供服务。CMD_PROC_INTALL, opcode 0xBDAA0005; note the source spelling). In the current build this handler is a stub that returns a 0 handle and performs no injection.CMD_PROC_INTALL ,操作码 0xBDAA0005 ;注意 (原文拼写错误)。在当前版本中,此处理程序是一个存根,它返回一个 0 处理,不执行注射。CMD_PROC_ELF) or return the entry for later invocation (CMD_PROC_ELF_RPC).CMD_PROC_ELF ),要么返回入口以供稍后调用 ( CMD_PROC_ELF_RPC )。CMD_DEBUG_ATTACH (sets up an async interrupt channel back to the client).CMD_DEBUG_ATTACH 连接到单个目标(建立与客户端的异步中断通道)。0xCC injection.0xCC 注入。Large memory regions never leave the PS5. Three server-side decoder commands keep bandwidth low:
大容量内存区域始终保留在 PS5 内部。三个服务器端解码命令可有效降低带宽占用:
CMD_PROC_DISASM_REGION - packed 32-byte-per-instruction stream with control-flow, memory-operand, and RIP-relative metadata.CMD_PROC_DISASM_REGION - 包含控制流、内存操作数和 RIP 相关元数据的 32 字节/指令打包流。CMD_PROC_EXTRACT_CODE_XREFS - all resolved RIP-relative operand targets in a region, streamed (not deduplicated server-side).CMD_PROC_EXTRACT_CODE_XREFS - 区域内所有已解析的 RIP 相对操作数目标,流式传输(未在服务器端进行去重)。CMD_PROC_FIND_XREFS_TO - only instructions whose RIP-relative target equals a specific address.CMD_PROC_FIND_XREFS_TO - 仅当 RIP 相对目标等于特定地址时才执行此指令。A cross-compiled LLVM-MC Keystone (x86-only, no exceptions / no RTTI, static ~4 MB) is embedded in the payload, exposed via the raw-literal opcode 0xBDAA0024. Lets clients assemble asm text into machine code on the console itself.
一个交叉编译的 LLVM-MC Keystone(仅限 x86,无异常/无 RTTI,静态资源管理器) ~4 MB) 嵌入在有效载荷中,通过原始字面量操作码暴露出来。 0xBDAA0024 。允许客户端在控制台上将汇编文本组装成机器代码。
CMD_PROC_AUTH handshake.CMD_PROC_AUTH 握手。u64 base_addr; u32 ks_opt_syntax; + asm text (NUL not required). ks_opt_syntax defaults to Intel; pass 1/2/4/8/0x10 for Intel/ATT/NASM/MASM/GAS.u64 base_addr; u32 ks_opt_syntax; + asm 文本(不需要 NUL)。 ks_opt_syntax 默认为 Intel;传递 1/2/4/8/0x10 可分别用于 Intel/ATT/NASM/MASM/GAS。CMD_SUCCESS + u32 byte_len; u32 insn_count; + machine bytes, or CMD_ERROR + u32 ks_errno; u32 msg_len; + Keystone's human-readable error.CMD_SUCCESS + u32 byte_len; u32 insn_count; + 机器字节,或 CMD_ERROR + u32 ks_errno; u32 msg_len; + Keystone 的人类可读错误。CMD_* macro) so the published CMD_* set that some clients enumerate stays unchanged.CMD_* 宏),因此已发布的 CMD_* 设置中某些客户端枚举保持不变。CMD_PROC_SCAN) - single-pass, 12 value types × 13 compare modes (exact, fuzzy, bigger/smaller, between, increased, decreased, changed, etc.).CMD_PROC_SCAN )- 单次扫描,12 种值类型 × 13 种比较模式(精确、模糊、更大/更小、介于、增加、减少、改变等)。SCAN_START → SCAN_COUNT → SCAN_GET) - narrows a result set over many passes. The client holds the candidate list and streams it back each pass; the server re-reads memory and re-compares.SCAN_START → SCAN_COUNT → SCAN_GET )——通过多次迭代缩小结果集。客户端保存候选列表,并在每次迭代中将其流式传输回服务器;服务器重新读取内存并重新比较。CMD_PROC_SCAN_AOB) - byte patterns with a per-byte wildcard mask.CMD_PROC_SCAN_AOB )- 使用每个字节通配符掩码的字节模式。CMD_PROC_SCAN_AOB_MULTI) - many patterns in one pass.CMD_PROC_SCAN_AOB_MULTI ) - 一次扫描多个模式。SCAN_START / SCAN_COUNT / SCAN_GET) requires a prior CMD_PROC_AUTH handshake; the value scan and the AOB scans do not.SCAN_START / SCAN_COUNT / SCAN_GET ) 需要事先进行 CMD_PROC_AUTH 握手;值扫描和 AOB 扫描则不需要。A faster, opt-in scan path (CMD_PROC_TURBOSCAN_*, 0xBDAACC10-0xBDAACC16) that runs alongside the legacy and iterative scanners, which are byte-for-byte unchanged. A client detects it via CMD_PROC_TURBOSCAN_CAPS and falls back to the iterative trio when it (or a specific engine) is absent. Result format mirrors the iterative scan, so clients reuse one parser.
一个速度更快、可选的扫描路径( CMD_PROC_TURBOSCAN_* , 0xBDAACC10 - 0xBDAACC16 )与传统扫描器和迭代扫描器并行运行,后者与传统扫描器和迭代扫描器逐字节保持不变。客户端通过 CMD_PROC_TURBOSCAN_CAPS 检测该路径,并在其(或特定引擎)不存在时回退到迭代扫描器。结果格式与迭代扫描相同,因此客户端可以重用同一个解析器。
TSE_SIMD_COMPARE).TSE_SIMD_COMPARE ) 中每个元素比较的 25-32 倍。TSE_SERVER_RESIDENT) - the survivor set can live in a per-connection server buffer instead of being re-uploaded each pass; rescans refresh each survivor's baseline so "since last scan" deltas work without the client holding state. CMD_PROC_TURBOSCAN_GET fetches values on demand.TSE_SERVER_RESIDENT )——幸存者集可以驻留在每个连接的服务器缓冲区中,而无需每次扫描都重新上传;重新扫描会刷新每个幸存者的基线,因此“自上次扫描以来” CMD_PROC_TURBOSCAN_GET 增量无需客户端持有状态即可正常工作。CMD_PROC_TURBOSCAN_GET 按需获取值。TSE_SNAPSHOT) - a membership bitmap + value snapshot (RAM, or an NVMe /data file for large regions) drives increased/decreased/changed narrowing with no known starting value, materialising to a compact record list once survivors get sparse. By default the seed drops all-zero slots (most memory is zeroed and rarely useful); TS_SNAPSHOT_INCLUDE_ZEROS keeps them.TSE_SNAPSHOT ) - 成员位图 + 值快照(RAM,或用于大型区域的 NVMe /data 文件)驱动增加/减少/更改的窄化过程,无需已知初始值,并在幸存者变得稀疏时最终形成紧凑的记录列表。默认情况下,种子会丢弃全零槽位 (大部分内存为零,很少可用); TS_SNAPSHOT_INCLUDE_ZEROS 让他们留下来。TSE_SNAPSHOT_SEGMENTS) - a single session can cover a list of disjoint regions (TS_SNAPSHOT_SEGMENTS + a trailing segment list) instead of one contiguous range, for both an unknown-value snapshot (TS_SNAPSHOT) and a known-value server-resident scan (TS_SERVER_RESIDENT). The slot/record space spans only the mapped segments, so unmapped gaps between selected modules/sections are never read and storage scales with the selected bytes - letting a scattered selection use the turbo server-side path instead of falling back to per-section streaming. (When a segmented resident scan overflows the server buffer it declines with an empty result stream and the client streams per-section itself.)TSE_SNAPSHOT_SEGMENTS )——单个会话可以覆盖一系列不相交的区域 ( TS_SNAPSHOT_SEGMENTS + 尾随段列表),而不是一个连续的范围,这适用于未知值快照 ( TS_SNAPSHOT ) 和已知值服务器驻留扫描 ( TS_SERVER_RESIDENT )。槽/记录空间仅跨越已映射的段,因此所选模块/节之间的未映射间隙永远不会被读取,存储空间会随所选字节数而扩展——这使得分散的选择可以使用快速的服务器端路径,而不是回退到逐节流式传输。(当分段驻留扫描溢出服务器缓冲区时,它会返回一个空结果流,客户端自身则逐节流式传输。)TSE_SNAPSHOT_CONFIG, CMD_PROC_TURBOSCAN_CONFIG) - the client can set the RAM threshold (how large the value store may be before it spills to disk; default 512 MiB) and the spill directory (default /data; the encrypted internal partition can be slow, so an extended NVMe /mnt/ext1 or USB /mnt/usb0 is often much faster). Spill writes use 16 MiB chunks.TSE_SNAPSHOT_CONFIG 、 CMD_PROC_TURBOSCAN_CONFIG )——客户端可以设置 RAM 阈值 (值存储可以达到的最大大小,超过此阈值则溢出到磁盘;默认值为 512 MiB)和溢出目录 (默认值为 /data ;加密的内部分区速度可能较慢,因此扩展的 NVMe /mnt/ext1 或 USB /mnt/usb0 通常速度更快)。溢出写入使用 16 MiB 的数据块。TSE_ALIASING, opt-in, default off) - maps the target's physical pages into the server's address space via guarded page-table writes so the scan reads in place at DRAM bandwidth instead of copying. Layout-agnostic (4K / 2MB / 1GB pages); enabled per request with TS_USE_ALIASING, and always falls back to the normal read path on any guard/verify miss (mdbg is the floor).TSE_ALIASING ,可选,默认关闭)- 映射 通过受保护的页表将目标服务器的物理页写入服务器的地址空间 这样一来,扫描就可以在 DRAM 带宽下进行原地读取,而不是进行复制。 布局无关(4K/2MB/1GB 页面);按需启用 TS_USE_ALIASING ,并且在任何 guard/verify 未命中时总是回退到正常的读取路径(mdbg 是最低要求)。TSE_PARALLEL_COMPARE, opt-in, default off) - with TS_PARALLEL_COMPARE on an aliased exact-match streaming scan, the server splits the scan across worker threads. This is for single-connection clients: a multi-connection client parallelizes better by opening more connections (the server threads per connection) and should leave this clear. Don't set both - they over-subscribe. Same wire result either way.TSE_PARALLEL_COMPARE ,可选,默认关闭)- 与 在别名精确匹配流式扫描中 TS_PARALLEL_COMPARE 时,服务器会将扫描任务拆分到多个工作线程上。这适用于单连接客户端:多连接客户端通过打开更多连接(每个连接对应一个服务器线程)可以更好地并行化,因此应避免启用此设置。不要同时启用这两个选项——它们会导致过载。无论哪种方式,最终的传输结果都一样。TSE_RESCAN_ALIASING, opt-in, default off) - with TS_RESCAN_ALIASING on a COUNT rescan, full-size (gap-bridged, contiguous) survivor windows read via the aliasing engine instead of mdbg (~2-3x on dense/moderate-density rescans; the win grows as survivors stay dense). Tiny scattered windows and any alias miss stay on mdbg. The survivor set is per-connection, so it is single-connection by nature; a multi-connection client must not enable it across many connections at once. Same wire result either way.TSE_RESCAN_ALIASING ,可选,默认关闭)- 使用 在 COUNT 重扫描中 TS_RESCAN_ALIASING 后,将通过别名引擎读取完整大小(间隙桥接、连续)的幸存者窗口,而不是使用 mdbg(在密集/中等密度重扫描中性能提升约 2-3 倍;幸存者窗口越密集,性能提升越大)。分散的小窗口和任何别名缺失仍使用 mdbg。幸存者集是按连接的,因此本质上是单连接的;多连接客户端不得同时在多个连接上启用此功能。两种方式的线路传输结果相同。0xBDAACC16) - returns every readable region with its cache attribute (uncached PCD leaf-PTE bit) and a measured read throughput, so the client can offer the user a per-region "exclude uncached/slow" choice (e.g. the GPU/Garlic blob, which reads ~40 MB/s and is rarely worth scanning). The server never drops anything - exclusion is the client's opt-in, user-overridable decision, default scan everything. The opcode is a raw literal (no CMD_* macro) so the enumerated CMD_* set stays unchanged.0xBDAACC16 ) - 返回每个可读区域及其缓存属性(未缓存的 PCD 叶子 PTE 位)和测量的读取吞吐量,以便客户端可以为用户提供每个区域的“排除未缓存/慢速”选项(例如 GPU/Garlic blob,其读取速度为 40 MB/s,很少值得扫描)。服务器不会丢弃任何数据 - 排除是客户端的可选操作,用户可以覆盖此操作,默认情况下会扫描所有数据。操作码是原始字面量(没有 CMD_* 宏),因此枚举的 CMD_* 设置保持不变。TURBOSCAN_START / _COUNT / _GET / _END require the CMD_PROC_AUTH handshake (like the iterative trio); TURBOSCAN_CAPS does not.TURBOSCAN_START / _COUNT / _GET / _END 需要 CMD_PROC_AUTH 握手(类似于迭代三部曲); TURBOSCAN_CAPS 不握手。klog reader style). Survives suspend/resume the same as the main server.klog reader 样式)。与主服务器一样,在挂起/恢复后仍然存在。1010 echoes a handshake magic (0xFFFFAAAA) so clients can find the PS5 on the LAN without hard-coding an IP.1010 上的 UDP 广播响应程序会回显握手魔法( 0xFFFFAAAA ),以便客户端可以在 LAN 上找到 PS5,而无需硬编码 IP 地址。TCP_NODELAY, SO_KEEPALIVE, large transfer chunks.TCP_NODELAY 、 SO_KEEPALIVE 非阻塞套接字,传输大块数据。-O3 -DNDEBUG for maximum decode throughput.-O3 -DNDEBUG 模式编译,以获得最大解码吞吐量。-ffunction-sections -fdata-sections -Wl,--gc-sections).-ffunction-sections -fdata-sections -Wl,--gc-sections )。| 软件名称 | 功能简介 | 评分 |
|---|---|---|
| ps4debug | PS4调试工具,功能类似 | ★★★★☆ |
| ps5 exploit | PS5漏洞利用整合包 | ★★★★☆ |
| ps5 homebrew | PS5自制软件合集 | ★★★☆☆ |
| ps5 debug menu | PS5调试菜单工具 | ★★★☆☆ |
| ps5 payload | PS5载荷发送工具 | ★★★★☆ |
v1.3
v1.2.x 版本旨在使固件 8.x-13.x 兼容。v1.3.0 版本是重大功能更新:大幅提升内存扫描速度(Turbo Scan),新增寄存器访问功能(FS/GS 基址 + 完整的 AVX/YMM 指令集),加快批量写入速度,并修复了可靠性问题。经硬件验证;设计上与固件无关。
Turbo Scan - 大幅提升内存扫描速度(比旧版“控制台扫描”快约 1.2 倍至 30 倍(!!!),具体取决于扫描类型)。
全新的服务器端扫描引擎,配备 AVX2 SIMD 比较器和低开销的别名读取路径,读取目标内存的速度远超传统的逐区域读取路径。
支持跨内存区域的多线程处理。
在最关键的方面实现了显著提升——值跟踪重扫描(先找到目标值,然后缩小范围)速度提升数倍,因为之前的内存读取才是真正的瓶颈。
未知初始值快照扫描 - 搜索您目前无法输入的值,然后按增加/减少/更改进行筛选。
区域分类查询,以便客户端可以跳过速度慢/未缓存的内存区域,而无需遍历这些区域。
完全新增且可选 - 每个现有的扫描命令均保持不变,因此旧客户端可以像以前一样正常工作。
新的寄存器访问 - FS/GS 基址 + AVX/YMM
FS/GS 段基址读/写 - x86-64 实际用于线程局部存储的 64 位 TLS/每个线程的基址指针。传统的寄存器只读功能仅包含 16 位段选择器;现在基址(TLS 实际指向的位置)可读写。
完整的 AVX/YMM 浮点寄存器 - FP 寄存器的读/写功能现在涵盖了完整的 832 字节 FPU/AVX 状态,因此 YMM0-15 的高半部分终于填充完毕并可写。之前只恢复了 512 字节的传统 XMM 区域。
这些是新的服务器端功能——客户端 UI 可以显示它们。
更快的批量内存写入
批量写入命令在单个请求中执行多个写入操作——在应用大型作弊表或补丁集时,往返开销大大降低。
可靠性修复
修复了并发使用内存时分配内存导致的崩溃问题。现在,内存分配由服务器端每个进程的独立区域提供(每个段使用一个劫持内存映射,然后进行零劫持子分配),从而消除了可能导致游戏/主机崩溃的竞争条件。
强化了原始系统调用——将裸露的系统调用点路由到类型化的包装器中,这样 32 位参数值就不会再包含乱码的高位,从而避免了罕见且难以重现的故障。
文档
PROTOCOL.md 文件已完全与源代码保持一致——包括所有命令(包括新的 Turbo Scan 系列、批量写入、FS/GS 基类和 YMM 行为)、所有数据包结构、状态码以及完整的操作码表。
README 文件中的寄存器功能和命令覆盖范围部分已更新。
已知问题
FS/GS 基类和 YMM 的客户端 UI 取决于各个客户端;此版本添加了它们所依赖的服务器端支持。
致谢
@Pharaoh2k - Turbo Scan + 别名读取引擎、FS/GS 基类和 AVX/YMM 寄存器访问、批量写入、proc_alloc 问题修复、原始系统调用强化以及文档更新。

鸿蒙4.0申请入口
鸿蒙4.0申请入口?鸿蒙4.0怎么申请?目前华为的鸿蒙4.0正在火热的内测中,有很多的小伙伴们都想在自己的手机上体验华为最新的鸿蒙系统,那么如何才能申请到测试资格呢,这里为用户们带来详细的攻略介绍。
发布日期:2023-08-23 14:36:55我要评论 查看全部评论 (0)>>