Special K. Специальный K, который с любовью называют швейцарским армейским ножом компьютерных игр, делает все понемногу. Он наиболее известен своими исправлениями и улучшениями графики, множеством подробных модов для анализа производительности и корректировок, а также постоянно растущей палитрой инструментов, которые решить широкий спектр проблем, влияющих на компьютерные игры».
Содержимое репозитория
Этот репозиторий содержит исходный код для полезной нагрузки внедрения кода Special K (
SpecialK(32|64).dll
).Вспомогательные утилиты , такие как SKIF ( Special KInjectionFrontend ) и устаревшая SKIM ( SpecialKInstallManger ) , поддерживаются как отдельные проекты . Кроме того, некоторые старые моды, созданные с использованием Special K, существуют как отдельные подключаемые библиотеки DLL; Плагины и SKIM больше не поддерживаются активно, но доступны через профиль Kaldaien на GitHub.
Создание зависимостейВсе зависимости сборки Special K включаются при клонировании репозитория, начиная с версии 23.5.7. Более старые версии имеют дополнительную зависимость от DirectX SDK, выпущенного в июне 2010 г.
Для компиляции Special K требуется Visual C++ 2022 или более поздней версии из-за особенностей языка, отсутствующих в старых компиляторах.
Зависимости платформыSpecial K не поддерживается ни в каких системах старше Windows 8.1, однако (начиная с версии 23.5.7) по-прежнему собирается и работает (со значительным сокращением функций) в Windows 7 (обновление платформы).
Он работает в WINE и совместим с DXVK, но для работы в Linux его необходимо настроить с помощью
UsingWINE=true
в INI-файле каждой игры.
РазнообразныйСуществует большая вероятность того, что проект не будет правильно скомпилирован, если вы используете конфигурацию сборки Debug. Special K предназначен для создания отлаживаемых сборок Release.
Библиотеки Special K способны внедрять свой код одним из двух способов:
Локальный прокси-сервер внедрения / DLL-оболочка
SpecialK(32|64).dll
в (dxgi|d3d11|d3d9|d3d8|ddraw|dinput8|OpenGL32).dll
и отправляйтесь в путь через статический импорт или вызовы LoadLibrary (...)
.Глобальная инъекция Win32 Global Hookchain
Это предпочтительный метод, и DLL способна загрузить перехватчик без какой-либо внешней помощи через
RunDLL_InjectionManager (...)
( rundll32.exe будет размещать DLL как обычный процесс пользовательского интерфейса Win32).
Существует еще много возможных способов внедрения DLL, два из которых описаны выше можно использовать без каких-либо дополнительных инструментов.
Special K с радостью внедрит в уже запущенную игру, если вы хотите создать свой собственный инструмент, используя что-то вроде CreateRemoteThread (...)
, но имейте в виду, что позднее внедрение не позволит использовать некоторые функции Special K (особенно те, которые связаны с D3D). переопределения и моды шейдеров/текстур) перестали работать.
Крючки CBT были выбраны из-за порядка цепочек. Поскольку большинству графических API в Windows требуется окно, прежде чем они смогут выполнить нетривиальную инициализацию, перехватчик CBT надежно доставит нас в приложение до создания цепочки обмена D3D9/11/12.