Exetools

Exetools (https://forum.exetools.com/index.php)
-   Source Code (https://forum.exetools.com/forumdisplay.php?f=46)
-   -   [C++] Steamless - SteamStub DRM Remover (https://forum.exetools.com/showthread.php?t=16557)

atom0s 02-14-2015 06:50

[C++] Steamless - SteamStub DRM Remover
 
What is Steamless
Steamless is a DRM remover of the SteamStub variants.

The goal of Steamless is to make a single solution for unpacking all Steam DRM packed files. Steamless aims to support as many games as possible.
However, due to personal limited funds, I cannot test every game myself.
  • Project Home: http://atom0s.com/forums/viewforum.php?f=25
  • Source Code: https://github.com/atom0s/Steamless
  • Bug Reports: https://github.com/atom0s/Steamless/issues
  • Pull Requests: https://github.com/atom0s/Steamless/pulls
  • Latest Release: https://github.com/atom0s/Steamless/releases/latest

Supported Versions
Steamless currently supports the following SteamStub DRM variants:
  • SteamStub Variant 1
    • There is currently no support for this version of the protection.
  • SteamStub Variant 2
    • 32bit version of this variant is supported.
  • SteamStub Variant 3.0.0
    • 32bit version of this variant is supported.
    • 64bit version of this variant is supported.
  • SteamStub Variant 3.0.1
    • 32bit version of this variant is supported.
    • 64bit version of this variant is supported.

Please note; these version numbers are superficial. They are an assumed version based on major changes to the DRM over its lifespan.

What is SteamDRM / SteamStub
Quote:

DRM

Steamworks Digital Rights Management wraps your game's compiled executable and checks to make sure that it is running under an authenticated instance of Steam. This DRM solution is the same as the one used to protect games like Half-Life 2 and Counter-Strike: Source. Steamworks DRM has been heavily road-tested and is customer-friendly.

In addition to DRM solutions, Steamworks also offers protection for game through day one release by shipping encrypted media to stores worldwide. There's no worry that your game will leak early from the manufacturing path, because your game stays encrypted until the moment you decide to release it. This protection can be added to your game simply by handing us finished bits or a gold master.

ref: https://partner.steamgames.com/documentation/api
Legal
Steamless is released under the following license:
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material
as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether
express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness
for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of
errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this
disclaimer may not apply to You.

Steamless is not intended for malicious use or for the use of obtaining or playing games illegally.
Steamless should only be used on games that you legally purchased and own.

Steamless is not associated with Steam or any of its partners / affiliates.
No code used within Steamless is taken from Valve or any of its partners / affiliates.

Steamless is released for educational purposes in the hopes to learn and understand DRM technologies.

Use Steamless at your own risk. I, atom0s, am not responsible for what happens while using Steamless. You take full reponsibility for any outcome that happens to you while using this application. Do not distribute unpacked files.

Thanks
Thanks to Cyanic (aka Golem_x86) for his notes and help with parts of the stub headers and such. You can find his information here: http://pcgamingwiki.com/wiki/User:Cyanic/Steam_DRM

Compiling Notes
The newest version of Steamless is written in C# to make it more community friendly. Not many people code in C/C++ so I opt'd to go with C# since more of the hacking/cracking scene seems to like using .NET languages.

Steamless can be compiled using Visual Studio 2015. Community Edition should work fine for those that do not own a paid version or do not wish to pirate it. No special features are required from any of the paid versions of VS. By default, Steamless is compiled against the .NET Framework v4.5.2. This means that the compiled binary WILL NOT work on Windows XP.

emo 02-14-2015 23:51

drm removed play csgo online with steam?

atom0s 02-15-2015 02:32

Quote:

Originally Posted by emo (Post 97681)
drm removed play csgo online with steam?

No, you will have to have a legit copy of the game to play it online as it makes use of Steams validation system / session system.

evlncrn8 02-15-2015 16:44

it only works on exe's with a .bind section?

atom0s 02-16-2015 04:31

Quote:

Originally Posted by evlncrn8 (Post 97691)
it only works on exe's with a .bind section?

I have not personally see any Steam DRM protected files that do not have this section. So yes it is one of the things it looks for specifically. If you know of any files protected with the DRM that do not have this section, feel free to upload the exe and I can check it out.

Right now I have put this project on the side due to some real life issues but in my spare time I do tinker with it still.

leetone 02-16-2015 08:08

Of course you need a legit copy to play online. This we will never crack, you can connect to non-VAC servers but that's it.....Can't change how computers work.

I am honestly shocked that I'm explaining this to an XDA member....this isn't cs.rin.ru!!!!

AMAZING code OP.

n00b 02-16-2015 16:36

https://github.com/w4kfu/hacnpx/tree/master/SteamStub

Amazing how similar this code in Python is to yours, atom0s...?

evlncrn8 02-16-2015 20:39

i have quite a few steam exe's without a bind section - want some?

atom0s 02-17-2015 01:19

Quote:

Originally Posted by evlncrn8 (Post 97722)
i have quite a few steam exe's without a bind section - want some?

Yes please if you want to share them.

Quote:

Originally Posted by n00b (Post 97716)
https://github.com/w4kfu/hacnpx/tree/master/SteamStub

Amazing how similar this code in Python is to yours, atom0s...?

My information and notes are based on this:
Code:

http://pcgamingwiki.com/wiki/User:Cyanic/Steam_DRM
If you wish to contact Cyanic to confirm it, feel free. I have been in discussions with him for the last 2 or so weeks about it.

cracker[PYG] 02-17-2015 08:50

This is a great tool, is in need of my research study. Thank you

n00b 02-17-2015 20:29

Naw, don't worry mate - I just found it to be very similar to one and another, despite being two very different programming languages.

Anywho, good work mate ;)

atom0s 08-21-2015 14:03

Some updates on this project. I have opt'd to move the code over to C# since more developers are familiar with that over C/C++.
(I'd rather stick with C/C++ but in the same sense I do want this to have some community contribution to it as well.)

SteamStub v3
As the Github page states, I have this version working 100% for 32bit files. At this time, 64bit is still not supported yet since I have not really focused on them. I don't have many games that are 64bit either to work with. There are some things that may/may not work properly though that I never mentioned before. The DRM has various flags that can be used and one of them prevents the .text section from being encrypted. At this time Steamless does not check for that. (I have not seen a game use this yet so I am waiting til I find an exe to test against etc.)

SteamStub v2
The last update on this was that I was around 75% with getting this to work. I'm now up to 100%, but again, with the same stipulations as v3. Some things may not work properly based on the flags used against the file. I have tested my unpacker for v2 against several files and all of them have worked fine.

SteamStub v1 / v1.5
This is still at 0% done as I do not have any games that use it. However I am still talking with Cyanic whom does have an assortment of collected exe's and hopefully I can get some from him and continue working on v1 as well.


Again a big thanks to Cyanic for his assistance with some parts of the DRM that I got stuck on. While his work is private for the DRM he has shared some things with me to help push me in the right direction without just giving me the answer etc. :) Hopefully Steamless will be able to handle all 3 versions of the DRM (and possibly future versions as they come) soon.

For those interested, feel free to fork the repo and help out too. Or if you need to pm me here or on my personal forum and we can discuss this more if need be. I'm open to suggestions and feedback as well for anyone that has it.

PS: To those that would rather use a C/C++ version of Steamless, once I get things cleaned up and settled in the C# version I will continue to update and maintain the C/C++ version as well.

mr.exodia 08-28-2015 20:14

Hm, C# is a nice language but I wouldn't prefer it over C++ for this kind of applications.

atom0s 08-29-2015 00:33

Quote:

Originally Posted by mr.exodia (Post 101318)
Hm, C# is a nice language but I wouldn't prefer it over C++ for this kind of applications.

I don't either but based on how many open source tools in the RE community there are that are C# now a days, I figured I'd remake it in a language more of the community seems to be using. I plan to keep the C++ version going as well since I prefer it as well.

atom0s 08-29-2015 00:56

This post is no longer relavent as the main project has moved to a different repo. Please check the main post.


All times are GMT +8. The time now is 16:31.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX