Discover how SmokeAPI can help you emulate ownership of downloadable content (DLC) for Steam games that you already own legitimately. This powerful tool allows you to unlock DLCs without altering your Steam account or game files, enabling you to enjoy additional content seamlessly. Whether you’re a developer exploring how to craft engaging digital experiences or a gamer seeking to access content more conveniently, understanding how SmokeAPI operates can be highly beneficial. This guide provides a comprehensive overview of its features, supported titles, installation procedures, and troubleshooting tips.
✨ Features
- 🔓 Simulate DLC ownership in Steam games you have purchased legitimately
- 🛅 Emulate inventory item ownership for in-game items
- 📄 Customize configurations easily with optional settings
- 🐧 Support for both 32-bit and 64-bit Windows and Linux systems
🔗 Links
- 📥 Download the latest release
- 🪧 SmokeAPI forum topic
- 🗂️ DLC Database
📖 Introduction
❓ What is SmokeAPI?
SmokeAPI is a tool designed to emulate DLC ownership within Steam-enabled games that you already own. It works by fooling games built on the Steamworks SDK into believing that you possess specific DLCs, without making intrusive modifications to the Steam infrastructure. This ensures that core features like multiplayer, achievements, and cloud saves remain fully functional, preserving the integrity of your gaming experience.
❔ Which games are supported?
Supported titles are those that utilize the Steamworks SDK for verifying ownership of DLCs. If a game’s directory lacks files such as `steam_api.dll` or `steam_api64.dll`, it is unlikely to be supported. However, even if these files are present, additional custom verification mechanisms might prevent SmokeAPI from working correctly.
Before attempting to unlock DLCs, it’s essential to research whether the game relies solely on Steam’s SDK for ownership verification. Keep in mind the following limitations:
- SmokeAPI will not work with titles protected by third-party DRM systems like Ubisoft or Rockstar.
- Games employing Denuvo SecureDLC are unlikely to be compatible.
- Free-To-Play games often store user data server-side, making local emulation ineffective.
- Titles with advanced ownership protections or alternative verification methods may be incompatible.
- Anti-cheat systems commonly detect DLL tampering, potentially blocking SmokeAPI’s operation.
- Some games embed DLC files directly into the base game, while others download them post-purchase. In the latter case, additional files from official sources may be necessary.
- If a game doesn’t use any DRM, then SmokeAPI’s functionality is redundant, requiring only the DLC files to be placed in the game folder.
Additional considerations
Unlocking DLCs with SmokeAPI involves certain limitations and risks. It may breach the terms of service for some games or platforms, risking account suspension. Use caution and understand the potential consequences before proceeding. For more advanced guidance, explore resources like building robust app ecosystems, which delve into creating seamless user experiences, or crafting engaging interfaces for small devices. When developing or modifying games, knowledge of 3D mobile app development can also be valuable.
Usage
Warning: Proceed at your own risk. Using this tool may violate terms of service and could lead to account penalties. To install SmokeAPI, follow the instructions carefully, ensuring the tool is placed correctly in the game directory. Once installed, it loads automatically during game startup, supporting two modes: Hook mode and Proxy mode.
↔️ Mode comparison
🪝 Hook mode
- Advantages: – Remains effective after game updates
- Can be loaded by multiple injectors
- May bypass some DLL integrity checks
- Disadvantages: – Might require auxiliary DLLs like Koaloader
🔀 Proxy mode
- Advantages: – Guarantees loading
- Disadvantages: – May need reinstallation after game updates
Start with hook mode; if it fails, switch to proxy mode. Consult the Troubleshooting section if issues persist.
🛠 Installation instructions (🪟 Windows)
To determine whether your game is 32-bit or 64-bit, open Task Manager, navigate to Details, right-click headers, select Select columns, and enable Platform. The bitness will be displayed there.
🪝 Hook mode
Hook mode can operate in two sub-modes: Self-Hook and Hook with injector.
🪝 Self-Hook mode
In this mode, SmokeAPI is injected automatically without third-party tools. It works best with games that do not resist DLL injection:
- Download the latest SmokeAPI release zip.
- Extract `smoke_api32.dll` or `smoke_api64.dll`, depending on your game’s bitness.
- Rename the DLL to `version.dll`, `winhttp.dll`, or `winmm.dll`.
- Place it next to the game’s executable.
🪝 Hook mode with Koaloader
If the game doesn’t load the DLLs automatically, use Koaloader, a versatile injector:
- Download the latest Koaloader release zip.
- Extract the appropriate `d3d11.dll` (32-bit or 64-bit).
- Place it in the game directory.
- Extract and place the corresponding SmokeAPI DLL (`smoke_api32.dll` or `smoke_api64.dll`).
- Launch the game with Koaloader active, ensuring both DLLs are loaded.
🪝 Hook mode with Special K
For titles with advanced protections, inject SmokeAPI as a plugin via Special K.
🔀 Proxy mode
- Locate the original `steam_api.dll` or `steam_api64.dll` in the game folder.
- Rename it to `steam_api_o.dll` or `steam_api64_o.dll`.
- Extract SmokeAPI DLLs.
- Rename the appropriate DLL to `steam_api.dll` or `steam_api64.dll`.
- Place it in the same directory as the original renamed DLL.
🛠️ Installation instructions (🐧 Linux)
Linux support remains experimental. For best results, consider running the Windows version through Proton.
✔️ Requirements
Ensure the following libraries are installed:
- brotli [32-bit]
- gcc-libs [32-bit]
- glibc [32-bit]
- libidn2 [32-bit]
- libnghttp2 [32-bit]
- libssh2 [32-bit]
- openssl [32-bit]
- zlib [32-bit]
- zstd [32-bit]
Optional: `gtk3` [32-bit]
🔀 Proxy mode (🐧 Linux)
- Rename `libsteam_api.so` to `libsteam_api_o.so`.
- Extract `libsmoke_api32.so` or `libsmoke_api64.so`.
- Rename and place next to `libsteam_api.so`.
🪝 Hook mode (🐧 Linux)
Use `LD_PRELOAD` to load SmokeAPI dynamically:
- Extract the DLLs into the game directory.
- Set launch options in Steam:
“`bash
LD_PRELOAD=”./libsmoke_api32.so $HOME/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so” ./ %command%
LD_PRELOAD=”./libsmoke_api64.so $HOME/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so” ./ %command%
“`
Replace “ and “ with the actual executable names. Adjust paths as needed.
⚙ Configuration
SmokeAPI supports a configuration file (`SmokeAPI.config.json`) for advanced customization, placed alongside the DLL. It allows you to disable or enable specific DLCs, modify logging, and more, providing flexible control over the emulation process. For example, you can specify particular DLCs to unlock or lock, or set default statuses.
See the full configuration schema for detailed options. An example configuration might look like this:
“`json
{
“$schema”: “https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v4.0.0/res/SmokeAPI.schema.json”,
“$version”: 4,
“logging”: true,
“log_steam_http”: true,
“default_app_status”: “unlocked”,
“override_app_status”: {
“1234”: “original”,
“4321”: “unlocked”
},
“override_dlc_status”: {
“1234”: “original”,
“4321”: “unlocked”,
“5678”: “locked”
},
“auto_inject_inventory”: true,
“extra_inventory_items”: [9876, 8765, 7654],
“extra_dlcs”: {
“1234”: {
“dlcs”: {
“56789”: “Example DLC 1”
}
},
“4321”: {
“dlcs”: {
“98765”: “Example DLC 2”,
“98766”: “Example DLC 3”
}
}
}
}
“`
🎓 Extra info
Handling Games with Numerous DLCs
Some games verify ownership by fetching a list of all DLCs via Steam’s API, which can be limited to 64 entries. SmokeAPI compensates by querying Steam directly for a complete list, including DLCs without a dedicated store page. You can also manually specify missing DLC IDs in the `extra_dlcs` setting, allowing unlocks of pre-order or storeless DLCs.
Supported Steamworks SDK Versions
The latest supported version at present is 1.63, ensuring compatibility with most modern titles.
🔧 Troubleshooting
Why aren’t DLCs unlocking?
Many factors can prevent DLC emulation from working:
- The game may use online-only checks or custom verification methods.
- Improper installation of SmokeAPI (e.g., DLL not placed correctly, logs not generated).
- Anti-cheat or other protections blocking DLL injection.
- Incompatibility with certain DRM systems.
Verify the installation by enabling logging and checking the generated logs. If issues persist, consult the official forum or documentation. For assistance, ensure the DLL files are correctly renamed and located, and use tools like Process Monitor to troubleshoot DLL loading.
Game crashes or not launching
This may result from missing Visual C++ redistributables. Download the latest supported runtime packages from the official Microsoft website.
🏗️ Building from source
✔️ Requirements
- CMake v3.24 or newer
- Visual Studio Build Tools 2022 with Desktop Development for C++
👨💻 Commands
Build the project with:
“`powershell
.build.ps1
“`
Where “ is `32` or `64`, and “ is `Debug` or `Release`. Example:
“`powershell
.build.ps1 64 Release
“`
Adding support for new Steamworks SDK versions
- Use `steamworks_downloader` to obtain SDK files.
- Run `steamworks_parser`.
- Generate Linux exports with `linux_exports_generator [32|64]`.
📚 Acknowledgments
This project utilizes numerous open-source libraries, including:
- miniz
- cpr
- nlohmann/json
- PolyHook_2_0
- spdlog
- And many more for core functionalities and utilities.
📄 License
This software is distributed under the Unlicense, with details available in the `UNLICENSE.txt` file.
