Skip to content

Instantly share code, notes, and snippets.

@acidicoala
Last active June 14, 2024 16:33
Show Gist options
  • Save acidicoala/2c131cb90e251f97c0c1dbeaf2c174dc to your computer and use it in GitHub Desktop.
Save acidicoala/2c131cb90e251f97c0c1dbeaf2c174dc to your computer and use it in GitHub Desktop.
Generic Unlocker Installation Instructions

ℹ Introduction

This document aims to provide comprehensive installation instructions for various unlockers that I have released. These unlockers share the same installation procedure and caveats, hence the detailed instructions are listed here to avoid repetition. These instructions apply to the following unlockers:

The following steps assume a 64-bit game. If you are interested in a 32-bit game, then repeat the same steps with 32-bit versions of the binaries instead. 64-bit binaries have 64 in their name, while 32-bit binaries have 32 in their name. If a binary name is missing both 32 and 64, then it's probably a 32-bit binary.

To determine the bitness of a game you can open Task Manager, navigate to Details tab, right-click on the column headers, Select columns, tick checkbox next to Platform and click OK. This will allow you to see the bitness in Details tab while a game is running.

Examples in this document will use ScreamAPI as an unlocker, but the instructions will be the same for other unlockers. You just have to use/replace the DLLs that are applicable for the particular platform. The README of each unlocker contains the details regarding the original DLLs.

🛠 Installation Instructions

The unlockers supports 2 modes of installation: Proxy mode, and Hook mode.

Proxy mode

In Proxy mode Unlocker DLL assumes the role of a proxy DLL that gets loaded by the game which thinks it has loaded the original DLL. Unlocker DLL in this mode will redirect most of the function calls to the original DLL. Kind of like how web proxy redirects requests to the original server. This is a classical, time-proven installation method that is stable, but has a number of shortcomings. The primary of them is that the unlocker binaries may be overwritten after a game updated, requiring re-installation of DLL. Another one is that it fails DLL integrity checks in games that have them. Below are the instructions for the Proxy mode:

  1. Find the original dll file EOSSDK-Win64-Shipping.dll in your game's installation folder.
  2. Rename it by adding 2 characters: _o (notice that it is a letter o at the end, not a numeral 0). In the end it should be named as EOSSDK-Win64-Shipping_o.dll.
  3. Download the latest release archive from GitHub Releases. In case you have a hard time finding it, click on the Assets spoiler, then click on the link that looks like ScreamAPI-vX.Y.Z.zip.
  4. Open up the downloaded archive and unpack the EOSSDK-Win64-Shipping.dll file alongside the original EOSSDK-Win64-Shipping_o.dll in the game's binary folder.
64-bit example

64-bit example

32-bit example

32-bit example

NOTE: Keep in mind that you may have to repeat this process again if the original DLL gets updated by the Game Store.


Hook mode

In Hook mode Unlocker DLL is injected into the game process and dynamically patches the functions of interest in the original DLL, leaving the rest untouched. The unlocker DLL can be loaded automatically by exploiting DLL search order, which is what project Koaloader is used for. Koaloader DLL can be disguised as a system DLL, so that it can be automatically loaded by the game. In turn, Koaloader will load the Unlocker DLL. This has the advantage of not modifying any binary files on the disc, hence the unlocker will remain intact after updates. It should be also bypass some of the DLL integrity checks in some of the games. The only disadvantage is that Koaloader requires per-game setup. Below are the instructions for the Hook mode (in combination with Koaloader and its auto_load feature):

  1. Download the latest release archive from GitHub Releases.
  2. Open up the downloaded archive, unpack the EOSSDK-Win64(32)-Shipping.dll and rename it to ScreamAPI.dll (or any other well-known file name, listed in Koaloader's README).
  3. Place the ScreamAPI DLL in game directory or any of its parent directories.
  4. Download the latest Koaloader release zip from GitHub Releases.
  5. Pick a DLL that is supported by the target game. In this example, we will select version-64/version.dll. Place this DLL in the game directory where a game first attempts to find a DLL, such as the game's binary directory.

🔧 Troubleshooting

🔐 DLCs are not unlocked

There are many reasons why the DLCs remain locked. In some games DLC unlocking is inherently impossible because of online-only state, profile, etc. In other cases it may be possible, but only after dealing with custom game checks. To learn about the specifics, consult the corresponding game topic in the forum.

If you are sure that DLC unlocking in a targeted game is inherently possible, then you have to verify that installation was successful. To do that, add the unlocker's config file next to the unlocker DLL and enable logging in it. You should see a *.log file being generated upon the game launch, which could provide insight into what went wrong. Use this log file when requesting support in the forum. If after launching the game no *.log file was generated, then it means that installation was not performed correctly.

If you installed the unlocker via proxy mode, then make sure that you have renamed the unlocker DLL exactly like the original DLL and placed it exactly in its place. Also verify that the original DLL was renamed by adding _o at the end of the filename. Notice that the second symbol is a literal o (short for original), not a numeral zero 0.

If you installed the unlocker via hook mode, then make sure that you have picked a compatible Koaloader DLL. Not all games will try to load version.dll, hence you need will need to try another. You can use Process Monitor to find out which Koaloader DLL is supported by a game, and where to place it. Click on the cyan funnel icon on the top to open filter editor, and add 3 filters (Process name, Result, and Path), as shown in the screenshot below. Launch the game with the Process Monitor active, and you should see DLLs that a game was trying to load from its directory.

Process Monitor screenshot

Process Monitor

If you have made sure that you picked the right DLL for Koaloader, then try adding Koaloader's config file and enable logging in it. The log file from Koaloader can show if it was able to successfully load the unlocker DLL.

💥 The game is crashing

If the game is crashing or not opening as expected after installing an unlocker, then try to download and install the latest Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017, 2019, and 2022

Download page

Download page

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment