Special K “被亲切地称为 PC 游戏中的瑞士军刀,Special K 无所不能。它以修复和增强图形、许多详细的性能分析和校正模块以及不断增长的工具面板而闻名。解决影响电脑游戏的各种问题。”
存储库的内容
该存储库包含 Special K 的代码注入负载 (
SpecialK(32|64).dll
) 的源代码。支持实用程序,例如 SKIF(特殊K注入前端)和现已弃用的 SKIM(特殊K安装管理器)作为单独的项目进行维护。此外,一些使用 Special K 构建的旧模组作为独立插件 DLL 存在;插件和 SKIM 不再主动维护,但可以通过 Kaldaien 的 GitHub 配置文件访问。
构建依赖关系当您克隆从 23.5.7 开始的存储库时,将包含 Special K 的所有构建依赖项。旧版本对 2010 年 6 月的 DirectX SDK 有额外的依赖性。
由于旧版编译器中不存在语言功能,Special K 需要 Visual C++ 2022 或更高版本才能编译。
平台依赖性尽管(自 23.5.7 起)Windows 8.1 之前的任何版本均不支持 Special K,但仍可在 Windows 7(平台更新)上构建和运行(功能大幅减少)。
它确实在 WINE 中运行并且与 DXVK 兼容,但必须在其每个游戏 INI 文件中配置
UsingWINE=true
才能在 Linux 上运行。
各种各样的如果您使用“调试”构建配置,则项目很可能无法正确编译,Special K 旨在生成可调试的“发布”构建。
Special K 的 DLL 能够通过以下两种方式之一注入代码:
本地注入代理/包装 DLL
SpecialK(32|64).dll
重命名为(dxgi|d3d11|d3d9|d3d8|ddraw|dinput8|OpenGL32).dll
并通过静态导入或调用LoadLibrary (...)
搭车。全局注入Win32全局Hookchain
这是首选技术,并且 DLL 能够在没有任何外部帮助的情况下通过
RunDLL_InjectionManager (...)
引导挂钩( rundll32.exe将作为普通 Win32 UI 进程托管 DLL)。
还有更多可能的方法来注入 DLL,上面概述的两种方法无需任何其他工具即可使用。
如果您想使用CreateRemoteThread (...)
之类的工具构建自己的工具,Special K 会很乐意注入到已经运行的游戏中,但请记住,后期注入会阻止 Special K 的某些功能(特别是与 D3D 相关的功能)覆盖和着色器/纹理 mods)工作。
由于钩链顺序而选择 CBT 挂钩。由于 Windows 上的大多数图形 API 需要一个窗口才能进行重要的初始化,因此 CBT 挂钩可以在 D3D9/11/12 交换链创建之前可靠地让我们进入应用程序。