Code Monkey home page Code Monkey logo

specialk's Introduction

Builds  Discord

Special K  "Lovingly referred to as the Swiss Army Knife of PC gaming, Special K does a bit of everything. It is best known for fixing and enhancing graphics, its many detailed performance analysis and correction mods, and a constantly growing palette of tools that solve a wide variety of issues affecting PC games."

License  Primary Language


Contents of Repository

This repository contains source code for Special K's code injection payload (SpecialK(32|64).dll).

Supporting utilities such as SKIF (Special K Injection Frontend) and the now deprecated SKIM (Special K Install Manger) are maintained as separate projects. Additionally, some older mods built using Special K exist as standalone plug-in DLLs; plug-ins and SKIM are no longer actively maintained, but are accessible via Kaldaien's GitHub profile.


Build Dependencies

All of Special K's build dependencies are included when you clone the repo beginning with 23.5.7. Older versions have an additional dependency on the June 2010 DirectX SDK.

Special K requires Visual C++ 2022 or newer to compile due to language features not present in older compilers.


Platform Dependencies

Special K is not supported on anything older than Windows 8.1, though (as of 23.5.7) still builds and runs (massively feature-reduced) on Windows 7 (Platform Update).

It does run in WINE and is compatible with DXVK, but must be configured with UsingWINE=true in its per-game INI file to work on Linux.


Miscellaneous

There is a good chance the project will not compile correctly if you use the Debug build configuration, Special K is designed to produce debuggable Release builds.


High-Level Overview of Special K Code Injection

Special K's DLLs are capable of injecting their code in one of two ways:

Local Injection   Proxy / Wrapper DLL

  1. Rename SpecialK(32|64).dll to (dxgi|d3d11|d3d9|d3d8|ddraw|dinput8|OpenGL32).dll and catch a ride via Static Imports or calls to LoadLibrary (...).

Global Injection   Win32 Global Hookchain

  1. Globally Inject using CBT / Shell hooks

    This is the preferred technique, and the DLL is capable of bootstrapping the hook without any outside assistance via RunDLL_InjectionManager (...) (rundll32.exe will host the DLL as a normal Win32 UI process).


There are many more possible ways to inject the DLLs, the two outlined above are useable without any additional tools.

Special K will happily inject into a game that is already running if you want to build your own tool using something like CreateRemoteThread (...), but keep in mind that late injection will prevent some of Special K's features (particularly those related to D3D overrides and shader/texture mods) from working.

CBT Hooks were chosen due to hookchain order. Since most graphics APIs on Windows need a window before they can do non-trivial initialization, a CBT hook reliably gets us into the application before D3D9/11/12 swapchain creation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.