17 Commits

Author SHA1 Message Date
acidicoala
e72bc29635 Replaced get_module_version_info with non-throwing variant 2025-09-23 18:29:55 +05:00
acidicoala
593c0cb4bc Added win::check_self_duplicates 2025-09-23 15:00:00 +05:00
acidicoala
d3fd17779c Updated readme [skip ci] 2025-09-22 23:07:37 +05:00
acidicoala
f5b8c0c89f Added support for self-injection via winhttp.dll 2025-09-22 22:47:53 +05:00
acidicoala
8decbafb53 Reworked algorithm for finding App ID 2025-09-22 21:31:47 +05:00
acidicoala
7ab9895b58 Added winmm.dll for self-injection 2025-09-22 03:57:11 +05:00
acidicoala
c75bbcf636 Fix CI 2025-09-22 01:45:26 +05:00
acidicoala
c409ff3202 Sync KoalaBox 2025-09-21 23:39:07 +05:00
acidicoala
8a6c8d0fba Sync KoalaBox 2025-09-21 23:37:21 +05:00
acidicoala
7781636335 Fix CI 2025-09-21 22:34:04 +05:00
acidicoala
e0ba771d52 Fix CI 2025-09-21 22:26:59 +05:00
acidicoala
b0a4ea0f24 Version bump 2025-09-21 22:18:27 +05:00
acidicoala
c5f8a37702 Fixed late hooking 2025-09-21 21:48:24 +05:00
acidicoala
50b7792375 Replaced local ntapi.hpp with winsiderss/phnt 2025-09-21 07:00:04 +05:00
acidicoala
bdbd02087c Restored Steamworks SDK v1.62 + linux bin fixer 2025-09-20 23:27:03 +05:00
acidicoala
f30aee0da9 Use init_null_logger 2025-09-20 07:54:13 +05:00
acidicoala
b4a9e8fd79 Switch to DLL_MAIN helper 2025-09-20 07:36:49 +05:00
163 changed files with 18077 additions and 126 deletions

View File

@@ -4,7 +4,7 @@ on: push
jobs:
ci:
name: CI
uses: acidicoala/KoalaBox/.github/workflows/build-and-package.yml@1bdfeefa9933092a747c46679b3d872470ef4998
uses: acidicoala/KoalaBox/.github/workflows/build-and-package.yml@a2838977f0b6a2933814e301e0a69ad53fdc6bce
permissions:
contents: write
with:

View File

@@ -16,6 +16,7 @@
<w>koality</w>
<w>koaloader</w>
<w>libgtk</w>
<w>phnt</w>
<w>polyhook</w>
<w>simplecpp</w>
<w>steamapps</w>

View File

@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.24)
project(SmokeAPI VERSION 3.1.3)
project(SmokeAPI VERSION 3.1.5)
include(KoalaBox/cmake/KoalaBox.cmake)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
@@ -39,7 +39,6 @@ set(SMOKE_API_SOURCES
src/steam_api/virtuals/isteamhttp.cpp
src/steam_api/virtuals/isteaminventory.cpp
src/steam_api/virtuals/isteamuser.cpp
src/steam_api/virtuals/isteamutils.cpp
src/steam_api/virtuals/steam_api_virtuals.hpp
src/steam_api/steam_client.hpp
src/steam_api/steam_client.cpp
@@ -110,19 +109,35 @@ if(WIN32)
INPUT_SOURCES_DIR ""
DLL_FILES_GLOB "${CMAKE_CURRENT_SOURCE_DIR}/res/steamworks/*/binaries/${STEAM_API_MODULE}.dll"
)
configure_linker_exports(
TARGET SmokeAPI
HEADER_NAME "linker_exports_for_version.h"
FORWARDED_DLL "C:/Windows/System32/version.dll"
INPUT_SOURCES_DIR ""
DLL_FILES_GLOB "C:/Windows/System32/version.dll"
set(HEADER_CONTENT "#pragma once\n\n")
foreach(WIN_DLL version winhttp winmm)
set(HEADER_NAME "linker_exports_for_${WIN_DLL}.h")
configure_linker_exports(
TARGET SmokeAPI
HEADER_NAME "${HEADER_NAME}"
FORWARDED_DLL "C:/Windows/System32/${WIN_DLL}.dll"
INPUT_SOURCES_DIR ""
DLL_FILES_GLOB "C:/Windows/System32/${WIN_DLL}.dll"
)
set(HEADER_CONTENT "${HEADER_CONTENT}#include <${HEADER_NAME}>\n")
endforeach()
file(GENERATE
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/generated/linker_exports_for_windows_dlls.h"
CONTENT "${HEADER_CONTENT}"
)
# Ignore linker warnings regarding COM-related private exports
set_target_properties(SmokeAPI PROPERTIES LINK_FLAGS "/ignore:4104")
else()
# configure_linker_exports(
# TARGET SmokeAPI
# HEADER_NAME "libsteam_api_exports.cpp"
# FORWARDED_DLL "${STEAM_API_MODULE}_o.so"
# DLL_FILES_GLOB "${CMAKE_CURRENT_SOURCE_DIR}/res/steamworks/*/binaries/${LINUX_DIR}/${STEAM_API_MODULE}.so"
# INPUT_SOURCES_DIR ""
# )
# configure_linker_exports(
# TARGET SmokeAPI
# HEADER_NAME "libsteam_api_exports.cpp"
# FORWARDED_DLL "${STEAM_API_MODULE}_o.so"
# DLL_FILES_GLOB "${CMAKE_CURRENT_SOURCE_DIR}/res/steamworks/*/binaries/${LINUX_DIR}/${STEAM_API_MODULE}.so"
# INPUT_SOURCES_DIR ""
# )
endif()

View File

@@ -33,7 +33,8 @@ Therefore, **you have to first research the game's topic**, to see if it support
Additionally, there are several points to bear in mind when it comes to unlocking DLCs with SmokeAPI:
* SmokeAPI most definitely will not work with games that use 3rd party DRM, such as games from Ubisoft, Rockstar, etc.* SmokeAPI is unlikely to unlock anything in Free-To-Play games since they typically store all player data on the corresponding game server and hence all the checks are server-side.
* SmokeAPI most definitely will not work with games that use 3rd party DRM, such as games from Ubisoft, Rockstar, etc.* SmokeAPI most likely will not work with games that use Denuvo SecureDLC.
* SmokeAPI is unlikely to unlock anything in Free-To-Play games since they typically store all player data on the corresponding game server and hence all the checks are server-side.
* SmokeAPI will not work with games that employ additional ownership protection or if the game is using alternative DLC verification mechanism.
* SmokeAPI is unlikely to work with games that use an anti-cheat, since they typically detect any DLL/EXE that has been tampered with. Sometimes it is possible to disable an anti-cheat, but that typically entails the loss of online capabilities. Search in the respective game topic for more information about how to disable anti-cheat.
* Some games include DLC files in their base game, regardless of whether you own the DLC or not. However, some games download additional DLC files only after a user has bought the corresponding DLC. In this case, not only will you need to install SmokeAPI, but you also have to get the additional DLC files from somewhere else and put them into the game folder. Up-to-date DLC files often can be found in corresponding game topics.
@@ -82,25 +83,25 @@ If that didn't work, refer to the _Troubleshooting_ section below.
### 🪝 Hook mode
- Download the [latest SmokeAPI release zip].
- From this downloaded zip extract `SmokeAPI32.dll` or `SmokeAPI64.dll`, depending on a game's bitness.
- Rename the unzipped DLL to `version.dll`.
- Place this `version.dll` next to the game's `.exe` file.
- From this downloaded zip extract `smoke_api32.dll` or `smoke_api64.dll`, depending on a game's bitness.
- Rename the unzipped DLL to `version.dll` or `winhttp.dll` or `winmm.dll`.
- Place this `version.dll` or `winhttp.dll` or `winmm.dll` next to the game's `.exe` file.
#### 🪝 Hook mode with Koaloader
If a game doesn't load
`version.dll`, you can use an alternative injector to load SmokeAPI into the game process.
If a game doesn't load `version.dll` or `winhttp.dll` or `winmm.dll`, you can use an alternative injector to load
SmokeAPI into the game process.
One such injector is [Koaloader], which supports different DLLs that a typical game might load.
For example, assuming that the game loads `winmm.dll`:
For example, assuming that the game loads `d3d11.dll`:
- Install Koaloader:
- Download the [latest Koaloader release zip].
- From this downloaded zip extract `winmm.dll` from `winmm-32` or `winmm-64`, depending on a game's bitness.
- Place `winmm.dll` next to the game's `.exe` file.
- From this downloaded zip extract `d3d11.dll` from `d3d11-32` or `d3d11-64`, depending on a game's bitness.
- Place `d3d11.dll` next to the game's `.exe` file.
- Install SmokeAPI
- Download the [latest SmokeAPI release zip].
- From this downloaded zip extract `SmokeAPI32.dll` or `SmokeAPI64.dll`, depending on a game's bitness.
- Place `SmokeAPI32.dll` or `SmokeAPI64.dll` next to the game's `.exe` file.
- From this downloaded zip extract `smoke_api32.dll` or `smoke_api64.dll`, depending on a game's bitness.
- Place `smoke_api32.dll` or `smoke_api64.dll` next to the game's `.exe` file.
#### 🪝 Hook mode with Special K
@@ -111,7 +112,7 @@ In such cases, it might be worth trying [Special K], which can inject SmokeAPI a
- Find a `steam_api.dll` or `steam_api64.dll` file in game directory, and rename it to `steam_api_o.dll` or `steam_api64_o.dll`.
- Download the [latest SmokeAPI release zip].
- From this downloaded zip extract `SmokeAPI32.dll` or `SmokeAPI64.dll`, depending on a game's bitness.
- From this downloaded zip extract `smoke_api32.dll` or `smoke_api64.dll`, depending on a game's bitness.
- Rename this extracted DLL to `steam_api.dll` or `steam_api64.dll`, depending on a game's bitness.
- Place this renamed unlocker DLL next to the `steam_api_o.dll` or `steam_api64_o.dll` file.
@@ -171,7 +172,7 @@ Below you can find an example config where nearly every option has been customiz
```json
{
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.5/res/SmokeAPI.schema.json",
"$version": 4,
"logging": true,
"log_steam_http": true,
@@ -309,6 +310,7 @@ This project makes use of the following open source projects:
- [pantor/inja](https://github.com/pantor/inja)
- [bshoshany/thread-pool](https://github.com/bshoshany/thread-pool)
- [batterycenter/embed](https://github.com/batterycenter/embed)
- [serge1/ELFIO](https://github.com/serge1/ELFIO)
## 📄 License

View File

@@ -54,5 +54,6 @@ They will be added to the list of missing DLC IDs to facilitate config-less oper
{% block extra_oss_libs %}
- [bshoshany/thread-pool](https://github.com/bshoshany/thread-pool)
- [batterycenter/embed](https://github.com/batterycenter/embed)
- [serge1/ELFIO](https://github.com/serge1/ELFIO)
{% endblock %}
{% endblock %}

View File

@@ -1,5 +1,5 @@
{
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.5/res/SmokeAPI.schema.json",
"$version": 4,
"logging": true,
"log_steam_http": false,

View File

@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$id": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.5/res/SmokeAPI.schema.json",
"title": "SmokeAPI configuration",
"type": "object",
"additionalProperties": false,
@@ -120,7 +120,7 @@
},
"examples": [
{
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.2/res/SmokeAPI.schema.json",
"$schema": "https://raw.githubusercontent.com/acidicoala/SmokeAPI/refs/tags/v3.1.5/res/SmokeAPI.schema.json",
"$version": 4,
"logging": true,
"log_steam_http": true,

View File

@@ -1,4 +1,4 @@
#pragma once
#define STEAM_API_MODULE "${STEAM_API_MODULE}"
#define STEAMCLIENT_DLL "${STEAMCLIENT_DLL}"
#define STEAMCLIENT_DLL "${STEAMCLIENT_DLL}"

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More