Coder Social home page Coder Social logo

trass3r / specialk Goto Github PK

View Code? Open in Web Editor NEW

This project forked from specialko/specialk

0.0 1.0 0.0 262.88 MB

Lovingly referred to as the Swiss Army Knife of PC gaming, Special K does a bit of everything.

License: GNU General Public License v2.0

Shell 0.01% C++ 95.18% Perl 0.01% C 3.46% Assembly 1.14% HTML 0.01% CMake 0.01% Batchfile 0.01% M4 0.01% HLSL 0.19%

specialk's Introduction

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."


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

Most of Special K's build dependencies are included when you clone the repo, with one exception. You must have the June 2010 DirectX SDK installed to build Special K.

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


Platform Dependencies

Special K will not run on anything older than Windows 8.1, do not even bother trying. Happily, it does run in WINE and is compatible with DXVK.

Windows 7 has to sit this one out and think about all the terrible things it has done; seriously, #NoMoreWindows7


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.

specialk's People

Contributors

aemony avatar bburky avatar braasileiro avatar cathyjf avatar kaldaien avatar trass3r avatar wallsogb avatar

Watchers

 avatar

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.