Skip to content

rev2ret/OpenSteamTool-GUI

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SafeSteamTools (OpenSteamTool-GUI)

cpp CMake OnlyWindows

SafeSteamTools is a modern, beautifully designed GUI frontend for OpenSteamTool, a Windows DLL project built with CMake.

✨ GUI Features

  • 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 .lua configurations 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 .zip or .rar archive into the zone; the GUI parses your Steam library and handles the extraction silently.
  • Dynamic Library Management: View your active SafeSteamTools .lua patches, 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.
  • Unpatching: 1-click Unpatch button cleanly removes the sideloaded hook DLLs from the Steam directory, restoring Steam to its original state.

Core Backend Unlocks

  • 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 / wudrm upstream APIs(default is wudrm), 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.

Hot Reload

  • Adding, modifying, deleting, or overwriting .lua files in any watched directory automatically triggers a reload. No restart, no offline/online toggle needed.

Family Sharing and Remote Play

  • Bypass Steam Family Sharing restrictions, allowing shared games to be played without limitations.

Compatible with games protected by Denuvo and SteamStub

  • For AppTicket and ETicket: in HKEY_CURRENT_USER\Software\Valve\Steam\Apps\{AppId}, both AppTicket and ETicket are REG_BINARY values.
  • Use setAppTicket(appid, "hex") and setETicket(appid, "hex") in Lua config to write these values to the registry automatically.
  • SteamID priority: read SteamID as REG_SZ (numeric-only) first; if missing, parse from AppTicket.

Stats and Achievements

  • Enable stats and achievements for unowned games.
  • Uses setStat(appid, "steamid") to configure which SteamID's achievement data to pull.
  • If no setStat is configured for an app, falls back to the hardcoded default SteamID 76561198028121353.

Online Fix

  • Add -onlinefix to 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.

🔧 Recent Steam Build Fixes (Build 1781041600)

We have successfully aligned all memory signatures and paths for Steam build 1781041600 to resolve:

  • Startup Crash: Resolved three signature collisions inside steamclient64.dll (CUtlMemoryGrow, MarkLicenseAsChanged, and BBuildAndAsyncSendFrame) which previously caused memory corruption and crash/hang on startup.
  • Dynamic Path Resolution: Replaced static working directory path resolution with dynamic DLL location discovery via GetModuleFileNameA (fixing crashes when Steam is launched from other contexts/launchers).
  • Invisible Game Bug: Fixed size tracking of injected App IDs in Steam vector memory hooks so newly added games immediately appear in the Steam library instead of remaining invisible.

🐛 Reporting Issues & Support

If you get any errors (e.g. steam build don't work, crashes, or library issues):

  1. GitHub Issues: Open a new issue directly on this fork's Issues Page. We have templates ready to help diagnose errors quickly.
  2. Direct Contact: You can also contact the maintainer directly via Discord: rev2ret.
  3. Log Files: When reporting a crash, please locate and attach your Steam patch log file located at: C:\Program Files (x86)\Steam\opensteamtool\main.log.

Future

  • For games protected by Denuvo and SteamStub, find a safe timing to switch GetSteamID (see src/Hook/Hooks_IPC.cpp#Handler_IClientUser_GetSteamID TODO) 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.

GUI Usage (Recommended)

  1. Download SafeSteamTools.exe from the Releases tab.
  2. Run the application.
  3. Your Steam path will automatically be detected. Use the Auto-Patch button at the bottom to build and install the DLLs.
  4. Use the Fetch tab to search for games, download configurations, and apply patches instantly.

Manual Usage (Advanced)

  1. Run build.bat from the project root to build the project.
  2. Copy generated dwmapi.dll, xinput1_4.dll and OpenSteamTool.dll to the Steam root directory.
  3. Create Lua directory (for example C:\steam\config\lua) and place Lua scripts there. The DLL will automatically load and execute them.
  4. 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

About

Open Source Steam Unlocker

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 53.8%
  • C 22.6%
  • TypeScript 8.1%
  • JavaScript 6.1%
  • CSS 4.8%
  • CMake 3.8%
  • Other 0.8%