Skip to content

Latest commit

 

History

History
34 lines (24 loc) · 3.08 KB

README.md

File metadata and controls

34 lines (24 loc) · 3.08 KB

SlashGaming Game Loader

A Windows program with the primary purpose of being able to open one or multiple instances of one game and inject any number of DLL files into these game instances. This is especially useful for game mods that require code edits to achieve its goals.

While intended to be used for games, it can be used for any Windows program that can be injected into. In addition, the program is fully capable of running on Unix-based systems with WINE.

How to Use

This is a simple command-line program. Upon launching the program, a help screen will describe what parameters are available.

The parameters are:

  • -g or --game: The path to the game executable
  • -a or --gameargs: The command line arguments to pass into the game
  • -k or --knowledge: The path to the Knowledge extension library
  • -l or --library: The path to the library to inject; can be used multiple times to inject multiple libraries
  • -n or --num-instances: The number of game instances to create (useful for multiboxing)

An example would be so: SGGL.exe -g "Game.exe" -a "-w" -k "SGGLDK.dll" -n 4 -l "BH.dll" -l "D2HD.dll" -l "SGD2FreeDisplay.dll"

How the Program Operates

The program first prints out copyright information. Next, it parses the command line parameters and determines if the help screen should be printed. Afterwards, the game processes are created as suspended processes. The libraries are then injected into the game instances. Finally the game processes are resumed and the game starts like normal.

These steps simplify the code required to inject into a process. Creation of game processes by this program gives it each of the game process' process handles and main thread handles with PROCESS_ALL_ACCESS rights. This means not having to use an additional step to acquire those rights, and it also means not having to deal with elevated permissions.

For Unix-based systems users (e.g. macOS, Linux), game process creation is absolutely necessary because Unix-based systems, for security purposes, implement a form of process isolation that disallows direct interference with another program. This can be bypassed with super-user permissions, but WINE refuses to run with super-user permissions. One other way is to establish a parent-child relation between the two processes, which is done through process creation. Hence, this implementation is compatible with Unix-based systems, provided that they have a working implementation of WINE with x86 capabilities available.

Multiplayer Use

This program will likely work in most multiplayer games, but using the injection functionality will likely get you banned by whatever game's anticheat is being used. Use this program at your own risk.

License

SlashGaming Game Loader is licensed under the Affero General Public License, version 3 or higher, with exceptions. If you would like to apply for a licensing exception, please contact Mir Drualga via the SlashDiablo Discord.

Thanks

  • /r/SlashGaming: Getting me interested in working on Diablo II.
  • PhrozenKeep: Providing tons of resources for Diablo II modders.