SafeSteamTools is a modern, beautifully designed GUI frontend for OpenSteamTool, a Windows DLL project built with CMake.
- Modern Interface: A sleek, dark-mode glassmorphism interface built with React, Vite, and Electron.
- Smart Auto-Fetcher: Instantly search the official Steam API by game name (no AppID hunting required!) to download required
.luaconfigurations and manifests. - Dedicated Online-Fixes Tab: Automatically apply third-party online fixes (like Goldberg emulator). Select a target game from a dropdown and drop the
.zipor.rararchive into the zone; the GUI parses your Steam library and handles the extraction silently. - Dynamic Library Management: View your active SafeSteamTools
.luapatches, see depot/manifest counts, and easily remove them in one click. - Auto-Patching: 1-click Auto-Patch button compiles the C++ backend DLLs using CMake and smoothly injects them into your Steam installation.
- Unlock an unlimited number of unowned games.
- Unlock all DLCs for unowned games.
- Support auto load depot decryption keys from Lua config.
- Support auto manifest download via
steamrun/wudrmupstream APIs(default iswudrm), or a custom Lua endpoint (see Manifest via Lua). - Support downloading protected games or DLCs that require an access token.
- Support binding manifest to prevent specific games from being updated.
- Adding, modifying, deleting, or overwriting
.luafiles in any watched directory automatically triggers a reload. No restart, no offline/online toggle needed.
- Bypass Steam Family Sharing restrictions, allowing shared games to be played without limitations.
- For AppTicket and ETicket: in
HKEY_CURRENT_USER\Software\Valve\Steam\Apps\{AppId}, bothAppTicketandETicketareREG_BINARYvalues. - Use
setAppTicket(appid, "hex")andsetETicket(appid, "hex")in Lua config to write these values to the registry automatically. - SteamID priority: read
SteamIDasREG_SZ(numeric-only) first; if missing, parse fromAppTicket.
- Enable stats and achievements for unowned games.
- Uses
setStat(appid, "steamid")to configure which SteamID's achievement data to pull. - If no
setStatis configured for an app, falls back to the hardcoded default SteamID76561198028121353.
- Add
-onlinefixto the Steam launch parameters to enable 480-based online play in games that use lobby matchmaking. The current limitation is that only one such game can run at a time.To revert, simply remove -onlinefix from the launch parameters — online play returns to normal on the next launch.
- For games protected by Denuvo and SteamStub, find a safe timing to switch
GetSteamID(seesrc/Hook/Hooks_IPC.cpp#Handler_IClientUser_GetSteamIDTODO) so save files are not affected.(Suggestions welcome — when is the earliest point after game initialization that we can safely switch the SteamID without affecting save file binding?) - Steam Cloud synchronization support.(This is a huge project)
- Add Auto Denuvo Authorization Sharing for Legitimate Accounts.
- Download
SafeSteamTools.exefrom the Releases tab. - Run the application.
- Your Steam path will automatically be detected. Use the Auto-Patch button at the bottom to build and install the DLLs.
- Use the Fetch tab to search for games, download configurations, and apply patches instantly.
- Run
build.batfrom the project root to build the project. - Copy generated
dwmapi.dll,xinput1_4.dllandOpenSteamTool.dllto the Steam root directory. - Create Lua directory (for example
C:\steam\config\lua) and place Lua scripts there. The DLL will automatically load and execute them. - Lua example:
addappid(1361510) -- unlock game with appid 1361510
addappid(1361511, 0,"5954562e7f5260400040a818bc29b60b335bb690066ff767e20d145a3b6b4af0") -- unlock game with appid 1361511 depotKey is "5954562e7f5260400040a818bc29b60b335bb690066ff767e20d145a3b6b4af0"
addtoken(1361510,"2764735786934684318") -- add access token ("2764735786934684318