Legal I, atom0s, am not responsible for what you do with this source code. I do not condone piracy and wish that if you choose to remove the DRM of a Steam game, do so with a game that you already own. Use this code at your own risk!
Notes I am not releasing a binary form of this project for legal reasons. Instead, the code is posted as an educational piece of work.
The code is compiled using Visual Studio 2015.
Special Note: This will only remove the SteamStub DRM. If the game makes use of the steam_api.dll file, then you will need to manually remove the usage of that file yourself. (Or create a proxy DLL that just nulls all the exports so that the game assumes its working etc.)
Last edited by atom0s on Sat Feb 13, 2016 7:43 am, edited 3 times in total.
I have moved this project to Gitlab as Github has been bought over by corporate greed. <Removed>
(This has undergone a lot of updates since I posted here last. The Steamless repo is now the main repo and is maintained in C# rather then C/C++. It supports v2, v3 and v3.1 of SteamStub DRM now.)
Last edited by atom0s on Wed Mar 30, 2022 7:14 pm, edited 1 time in total.
Xiron wrote:Any chance on a compiled build for the latest version?
For legal reasons, no. I do not distribute compiled binaries for this. You can download Visual Studio for free and compile it yourself though. Visual Studio community is free: https://www.visualstudio.com/products/v ... t-editions
Info I decided to rewrite Steamless with a UI since I had a lot of emails / private messages from people asking me how to use the old version etc. Along with that, the older version was not extendable or friendly to others developing unpackers. This new version is now fully done via plugins (Example plugin source code is included in the release) allowing others to easily create their own unpackers.
Added new SteamStub 2.x variant offset dumper. (Experimental Feature)
The new SteamStub 2.x variant offset dumper should be able to dump most of the v2 files that would fail before. This newer feature is experimental for now and uses disassembling to pull the offsets instead. This has only been tested on a few files so far, but all seems to work ok. In order to use this feature, you must check the new 'Use Experimental Features' box before attempting to unpack a file.
Add new plugin to support unpacking SteamStub variant v1.0 (x86) files. (Beta until more files are found to test with.)
Add new option to allow disabling of section realignment.
Add support for handling files packed with TlsCallback overrides.
Add new option to zero the DOS stub data when unpacking.
DontRealignSections and ZeroDosStubData features are now default enabled.
Add new option RecalculateFileChecksum to allow unpacked files to have their PE checksum recalculated.
Full Changelog
API: PE64 - Add check for TlsDirectory.AddressOfCallBacks == 0 to prevent attempting to reference invalid data.
Unpacker: v31.x64 - Adjust size of data searched when determining the variant version. Fixes #56
Misc: Update project copyrights.
Misc: Remove some unused/dead code from the UI.
API: Add ToString overrides to the section entries to allow easier debugging.
Unpacker: v31.x64 - Remove code section size check. (Some virtualized files will have an empty code section.)
Unpacker: v31.x64 - Allow empty code section files to still unpack by skipping decryption step.
API: Add new option to allow disabling of section realignment.
Core: Add support for new disable section realignment option.
Unpacker: v20.x86 - Add support for new disable section realignment option.
Unpacker: v21.x86 - Add support for new disable section realignment option.
Unpacker: v30.x86 - Add support for new disable section realignment option.
Unpacker: v30.x64 - Add support for new disable section realignment option.
Unpacker: v31.x86 - Add support for new disable section realignment option.
Unpacker: v31.x64 - Add support for new disable section realignment option.
API: PE32 - Fix SizeOfImage alignment.
API: PE64 - Fix SizeOfImage alignment.
Unpacker: v20.x86 - Fix SizeOfImage alignment.
Unpacker: v21.x86 - Fix SizeOfImage alignment.
Unpacker: v30.x64 - Fix incorrect TlsOepRva being stored and used.
Unpacker: v30.x64 - Fix incorrect TlsOepRva calculations when reading payload and SteamDRMP.dll.
Unpacker: v31.x64 - Fix incorrect TlsOepRva being stored and used.
Unpacker: v31.x64 - Fix incorrect TlsOepRva calculations when reading payload and SteamDRMP.dll.
Unpacker: v30.x64 - Renamed header field Unknown0003 to HasTlsCallback.
Unpacker: v30.x64 - Add support for handling files packed with TlsCallback overrides.
This feature is currently only supported in this variant for the time being. (Until other samples are provided that have a TlsCallback override for the other variants.)
Notes on how this file type works can be found here: #20 (comment)
API: PE32 Adjusted FindPattern to return a long instead of uint. Default return is now -1.
API: PE36 Adjusted FindPattern to return a long instead of uint. Default return is now -1.
Unpackers: Updated all usages of FindPattern to reflect new API change.
API: Add new option to zero the DOS stub data when unpacking.
Core: Add UI option to enable/disable the new zero DOS stub data option.
Unpackers: Add support for new zero DOS stub data option.
API: DontRealignSections and ZeroDosStubData are now default enabled as this is the general 'correct' way to handle most files. (Some files do require the section alignment to happen and some files may use the DOS stub for self-validation and such. Adjust accordingly when using Steamless.)
Core: Fix typo with new ZeroDosStubData option checkbox using wrong field bool.
API: Add new option RecalculateFileChecksum to allow unpacked files to have their PE checksum recalculated.
API: PE32 - Add new functionality to Pe32Helpers to recalculate a PE file checksum.
Unpackers: (x86) Ensure all unpacked files default to a checksum of 0.
Unpackers: (x86) Add support for new RecalculateFileChecksum setting.
API: PE64 - Add new functionality to Pe64Helpers to recalculate a PE file checksum.
Unpackers: (x64) Ensure all unpacked files default to a checksum of 0.
Unpackers: (x64) Add support for new RecalculateFileChecksum setting.
Other Changes
Repository has been heavily cleaned up.
Labels for issues/pull requests have been redone.
All past issues/pulls have had their labels updated to reflect the new labeling setup.
--quiet - Disables output of debug log messages. --keepbind - Keeps the .bind section in the unpacked file. --keepstub - Keeps the DOS stub in the unpacked file. --dumppayload - Dumps the stub payload to disk. --dumpdrmp - Dumps the SteamDRMP.dll to disk. --realign - Realigns the unpacked file sections. --recalcchecksum - Recalculates the unpacked file checksum. --exp - Use experimental features.