OpenSpeedy游戏变速器完全指南:Ring3 Hook原理、三步上手与快捷键配置 OpenSpeedy游戏变速器完全指南Ring3 Hook原理、三步上手与快捷键配置【免费下载链接】OpenSpeedy An open-source game speed modifier.项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy你花了十分钟手动刷完一段日常任务或者想逐帧看清一个 0.3 秒的技能动画——真正的需求是改变游戏的流速而不是去改内存、找地址。OpenSpeedy 就是一个干这件事的开源GPL v3Windows 游戏变速工具它把一个小体积的 DLL 注入游戏进程在 Ring3 层 Hook 掉一批时间相关 API让速度在 0.001× 到 1000× 之间实时可调全程不碰游戏文件、不装内核驱动。OpenSpeedy 能做什么又做不了什么先划清能力边界避免期望错位支持平台Windows 10 以上x8632 位与 x6464 位进程都能加速两者由不同的 bridge 进程分别处理界面功能实时变速滑杆对数刻度0.001×–1000×、全局快捷键、5 个自定义档位gears、按住加速/松开还原、进程列表按 PID 或按名称批量开关、托盘驻留、开机自启无侵入性Hook 全部发生在 Ring3 用户态不加载内核驱动卸载开关后时间函数立即恢复原始行为SpeedFactor()返回 1.0做不了的事目标进程若被反作弊保护OpenProcess拿不到句柄注入直接失败对联网竞技游戏能不能用则不是技术问题是合规问题见文末边界整体是三层结构理解它之后排障会非常快层组件位置职责界面层Tauri 2 Reactsrc-tauri/ 与 src/进程列表、速度滑杆、快捷键设置桥接层bridge64.exe / bridge32.exesrc-bridge/src/main.rs命名管道服务器负责 DLL 注入与开关指令转发引擎层speedpatch.dllsrc-bridge/speedpatch/speedpatch.cpp基于 MinHook 的 API Hook 与时间虚拟化变速原理它 Hook 了哪些函数、怎么改的注入阶段。bridge 拿到目标 PID 后的动作是一条标准链OpenProcess请求PROCESS_CREATE_THREAD | PROCESS_VM_*权限 →VirtualAllocExWriteProcessMemory把 speedpatch.dll 的完整路径写进目标进程 →CreateRemoteThread让目标进程执行LoadLibraryW失败再退回LoadLibraryA→ 等待线程结束并确认返回值非 0。DLL 的DllMain收到DLL_PROCESS_ATTACH后调用 MinHook 安装全部钩子。生效阶段。被 Hook 的 API 分两类处理方式完全不同钩子目标改法Sleep/SleepEx/WaitForSingleObject(Ex)/WaitForMultipleObjects(Ex)/SetWaitableTimer(Ex)/SetTimer/timeSetEvent把时间参数除以 factor 再调原函数例如Real_Sleep(dwMilliseconds / SpeedFactor())——游戏睡得少自然醒得早GetTickCount(64)/timeGetTime/GetMessageTime/QueryPerformanceCounter/GetSystemTimeAsFileTime/GetSystemTimePreciseAsFileTime返回虚拟时间base factor × (真实时间 − base)factor 变化时重置基准点保证曲线连续不跳变跨进程同步是这套设计里最巧的部分。速度值factor放在 DLL 的共享段/section:shared,RWS里bridge 进程和注入到游戏里的那份 DLL 映射同一个镜像所以一次SP_SetSpeed两边同时可见不需要额外的 IPC。每个游戏进程的开关状态则放在名为OpenSpeedy.pid的共享内存文件映射里1 个字节bridge 用SP_Enable/SP_Disable翻转。对外暴露的 C API 非常克制全部在 speedpatch.h 中SPEEDPATCH_API void SP_Enable(DWORD processId); // 打开某进程的变速 SPEEDPATCH_API void SP_Disable(DWORD processId); // 关闭时间函数即刻还原 SPEEDPATCH_API void SP_SetSpeed(double factor_); // 设置全局倍率 SPEEDPATCH_API double SP_GetSpeed(); // 读取当前倍率 SPEEDPATCH_API unsigned SP_GetHookFailures(); // 安装失败的钩子数量每个 Hook 安装失败都会累加进共享计数器并写调试输出bridge 随后读出并落到日志——这是排障的关键线索后面会用到。三步跑起来安装、注入、变速第 1 步安装。三选一推荐 wingetwinget install openspeedy openspeedy也可从 Release 页下载安装包或在 Steam 商店获取应用 ID 5010920。第 2 步注入目标进程。启动游戏OpenSpeedy 的进程列表每 1 秒刷新一次。点进程行右侧的开关后台执行bridge_inject按架构选 bridge32/bridge64bridge_enable也可以按名称切换把同名的所有 PID 一起打开。第 3 步调速。顶部滑杆是对数刻度内部换算speed 10^v拖动或点击数字直接输入回车确认合法范围 0.001–1000。改完即生效无需重启游戏。从源码构建想改代码或跟源码的人git clone https://gitcode.com/gh_mirrors/op/OpenSpeedy cd OpenSpeedy npm install npm run tauri dev工具链要求Node.js 18、Rust、CMake、Visual StudioC 桌面开发工作负载。build.rs 会自动交叉编译两种架构的 DLL 与 bridge——64 位走 cmake crate 直编32 位通过cmake -A Win32与cargo --target i686-pc-windows-msvc产出。注意如果没装 i686 target构建只告警不报错产物里没有bridge32.exe后果是 32 位游戏全部无法加速日志会提示bridge32.exe not found。bridge 的指令协议本身是纯文本想脚本化控制时可以直接连管道\\.\pipe\OpenSpeedyBridge64 INJECT 12345 OK SETSPEED 2.0 OK GETSPEED OK 2.000000三个值得记住的用法快捷键驱动变速不打断操作。设置里可以为每个动作绑定全局快捷键默认档位 G1/G2/G3 CtrlShift1/2/3对应 1×/2×/5×一键还原 CtrlAlt0还支持按住加速——按住期间跳到目标倍率默认 2.0×松开立即回到 1.0×适合一边操作角色一边快进流程。档位倍率和快捷键都在 settings.ts 的默认值里改设置界面即可持久化到settings.json。按名称自动加速重启游戏不用重复勾选。按名称维度打开某个游戏后进程名会被记入自动加速名单store/process.ts界面每 1 秒扫描一次发现同名新进程就自动bridge_inject。配合开机自启 关闭时收进托盘体验是启动游戏 已经加速。慢放与极限倍率。滑杆左端支持 0.1×、0.01× 甚至 0.001×用于观察快速动画帧或复现物理异常右端 1000× 主要给模拟器类程序跳时间。普通 3D 游戏建议先待在 1×–10× 区间验证稳定性再往上加。排障用日志判断问题出在哪一层 所有诊断信息落盘在安装目录的logs/下写入Program Files被拒时自动退到%LOCALAPPDATA%\OpenSpeedy\logs主应用日志openspeedy.YYYYMMDD.log保留 14 天、单日上限 16MBbridge 的 stderr 在bridge64.exe.log/bridge32.exe.log。界面里有显示日志入口可直接定位文件。按日志内容对号入座日志特征结论处理bridge64.exe not found at ... — skipped安装目录缺 bridge 可执行文件重装bridge64 did not become ready within 2 s — speed patching will not workbridge 启动或建管道失败查杀软拦截、文件完整性WARNING: N time-API hook(s) not installed — those APIs stay unpatched有 N 个钩子没装上对应 API 未打补丁该游戏对时间函数的使用可能走未 Hook 的路径变速效果不完整INJECT ... ERROROpenProcess / VirtualAllocEx / CreateRemoteThread 失败注入被拒绝目标以管理员运行 → 用管理员身份启动 OpenSpeedy有反作弊 → 放弃勾选 32 位游戏后无任何效果bridge32 未构建或启动失败确认安装目录有 bridge32.exe补充两点经验杀软误报几乎必然发生——开源 DLL 不带数字签名Hook 行为本身也常被启发式引擎标记把安装目录加入白名单即可速度倍率过高导致游戏崩溃物理引擎、网络超时逻辑是游戏自身的问题把倍率降回 1× 即恢复这不是 Hook 的残留因为SP_Disable之后时间函数会原样返回。使用边界与合规红线技术上能做的不等于应该做的OpenSpeedy 的 README 把话说得很直白值得原样遵守仅限单机游戏与学习研究。在线游戏的反作弊系统视注入为作弊行为使用可能导致封号作者不承担任何后果GPL v3 传染性把它嵌入你自己的产品并分发时你的产品须同样以 GPLv3 开源仅个人使用不受此约束责任自负官方免责条款明确作者不对使用造成的任何损失或法律责任负责实践建议加速前保存游戏存档把还原 1×快捷键CtrlAlt0设成肌肉记忆遇到异常先还原再看小结与后续方向OpenSpeedy 的价值在于把游戏变速这件听起来像逆向黑魔法的事收敛成一条可维护的三层流水线Tauri 界面负责体验bridge 负责注入与指令speedpatch 用 MinHook 在 Ring3 做时间虚拟化——共享段 文件映射两个机制就把跨进程状态同步解决了没有一行内核代码。排障路径也清晰日志定位到 bridge 层还是 hook 层对照上表处理即可。后续值得关注的方向更多时间/定时器 API 的 Hook 覆盖目前 16 个目标函数基本覆盖主流引擎的计时路径、对受保护进程的兼容性以及跨平台可能。如果你要做的恰好是让某款单机游戏跑得更快或更慢这套代码目前就是最透明的参考答案。【免费下载链接】OpenSpeedy An open-source game speed modifier.项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考