Steamless - Steam DRM Remover / Unpacker

Do you know a tool, link or website for working on a specific game files or to help game research? Let's collect them here!
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

What is Steamless
Steamless is a DRM remover for the SteamStub DRM that has been added to most newer games released on Steam.

Main Repository
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.
Ekey
Posts: 1383
Joined: Sat Aug 09, 2014 2:34 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by Ekey »

Interesting stuff. Thanks for sharing ;)
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

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
Posts: 104
Joined: Sat Sep 12, 2015 7:09 am

Re: Steamless - Steam DRM Remover / Unpacker

Post by Xiron »

Any chance on a compiled build for the latest version?
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

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
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Steamless v3
Image

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.

Download / Information
http://atom0s.com/forums/viewtopic.php?f=25&t=146
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Changelog

v3.0.0.1
  • PeFile32 - Added support for reading the ImageTlsDirectory section.
  • SteamStub Variant 3.1 (x86) - Adjusted the unpacker to attempt to use the Tls callback as the real OEP if general unpacking fails.

v3.0.0.2
  • Adjusted Steamless to use older Aero presentation library for Windows 7 support.

v3.0.0.3
  • Fixed issue with variant 2.0 (x86) unpacker failing to unpack files with non-encrypted code sections.
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Changelog

v3.0.0.4 - 64bit Support!
  • Steamless.Unpacker.Variant30.x86
    • Fixed issue with header size not unpacking properly for certain files.
    • Fixed issue with TLS callbacks not being unpacked properly when present.
  • Steamless.Unpacker.Variant30.x64
    • Added support for 64bit version of SteamStub Variant 3.0.
  • Steamless.Unpacker.Variant31.x64
    • Added support for 64bit version of SteamStub Variant 3.1

Steamless source code and such is now hosted back on Github here:
https://github.com/atom0s/Steamless

The latest release can be found here:
https://github.com/atom0s/Steamless/releases/latest
Ekey
Posts: 1383
Joined: Sat Aug 09, 2014 2:34 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by Ekey »

Great job! ;)
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Changelog

v3.0.0.5
  • Steamless.Unpacker.Variant20.x86
    • Added fallback pattern for variant 2.0 (x86).
  • Main Program
    • Adjusted the default window size on startup so that the full plugin names are seen with default screen settings.
  • Steamless.Unpacker.Variant31.x86
    • Added support for new SteamStub v3.1.2 variant.

Changelog

v3.0.0.6
  • Steamless.Unpacker.Variant31.x64
    • Added support for new SteamStub v3.1.2 variant.
  • Overall
    • Updated all plugins to make use of reflection to get their versions from their assembly info.
    • Added ignore for Windows image cache file. (Thumbs.db)
    • Updated all copyrights to include 2018.
    • Updated the list of supported versions.
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

v3.0.0.7
  • Steamless.Unpacker.Variant20.x86
    • Added SteamStub 2.x variant D0 (header size) support.
    • Fixed some issues with the 2.x disassembler using incorrect types.
    • Updated the SharpDisasm.dll file to latest version.

https://github.com/atom0s/Steamless/releases/latest
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

v3.0.0.8
  • General code cleanup.
  • Added new experimental features option.
  • 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.

https://github.com/atom0s/Steamless/releases/latest
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

v3.0.0.9
  • Fixed a small bug with TLS callback parsing in the 64bit PE parser.
  • Added TLS callback support for the 3.0 64bit unpacker.

https://github.com/atom0s/Steamless/releases/latest
GHFear
Posts: 290
Joined: Fri Mar 30, 2018 2:48 am

Re: Steamless - Steam DRM Remover / Unpacker

Post by GHFear »

Thanks for this tool :) Very useful.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by aluigi »

I agree
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Thanks for the kind words :) Glad you guys find it useful. Same goes for all your work/tools aluigi, tons of useful stuff.
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Steamless v3.0.0.10
  • Updated copyright date ranges across the project.
  • Fixed issue with memory errors due to incorrect structure mapping handling.

Steamless v3.0.0.11
  • Renamed SteamStub Variant 2.0 to 2.1. (This is not technically the first version of 2.0.)
  • Added support for real SteamStub Variant 2.0 (Fixes/closes #37)
  • General code cleanup.
  • Adjusted Paypal URLs.


Steamless v3.0.0.12
  • Fixed 2.1 (x86) unpacker using the wrong encryption size when the .text section is encrypted. (Fixes #57)

Get the latest version here: https://github.com/atom0s/Steamless/releases/latest
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Steamless v3.0.0.13 Released

Highlights

  • 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.
  • Begin variant v1.0 x86 plugin support.
  • Update project information copyrights.
  • Unpacker: v10.x86 - Finish implementing SteamStub variant v1.0 (x86) unpacker.
  • 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.
  • Most old pending issues are now resolved.

Get the latest version here: https://github.com/atom0s/Steamless/releases/latest
atom0s
Posts: 250
Joined: Sat Dec 27, 2014 8:49 pm

Re: Steamless - Steam DRM Remover / Unpacker

Post by atom0s »

Steamless v3.1.0.0 Released

Highlights

  • Steamless now includes a command line version. (Steamless.CLI.exe)

Full Changelog

  • Added Steamless.CLI to run Steamless from the command line.
  • Unpacker: v10x86 - Fix incorrect output path when compiled for Release mode.

Command Line Options

The command line version of Steamless allows for the following arguments to be used:

Code: Select all

--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.


Get the latest version here: https://github.com/atom0s/Steamless/releases/latest