atom0s / 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.
Other
3.12k stars 195 forks source link

Got a game which can't be unpacked - any chances to help here? #43

Closed PaulNevada closed 3 years ago

PaulNevada commented 3 years ago

Need help with that, please.

atom0s commented 3 years ago

Would need you to upload the .exe(s) for me to take a look.

PaulNevada commented 3 years ago

Is it ok to post it here uploaded somewhere? I mean isn’t it going some rules etc?

atom0s commented 3 years ago

You can pm me on Discord with it if you feel more comfortable with that instead. atom0s#0001

PaulNevada commented 3 years ago

Sent my friend request to you...

atom0s commented 3 years ago

File received on Discord; not protected with SteamStub.

iMonZ commented 3 years ago

So as I correctly understand This tool is stopping if it detects something like Steamworks? Or why is it stopping? So what the correct behaviour should be It should remove the SteamStub DRM and if the developers implemented Steamworks the game should crash right?

Currently I don't understand: why is this tool not willing to remove SteamStub?

My Sample game has SteamStub and Steamworks so this tool should remove SteamStub and let the Steamworks code untouched but it doesn't do that

Is this intentionally or has Steamworks some kind of encryption too

atom0s commented 3 years ago

So as I correctly understand This tool is stopping if it detects something like Steamworks? Or why is it stopping?

Steamless will remove the SteamStub layer of DRM from the game file, if it is present. This is a tool Steam includes in their partner developer SDK called drm. It is a very basic packer with some extra sugar added to do some basic things such as:

It is an extremely basic means of trying to prevent piracy, but it is not really something developers should be using for that purpose for obvious reasons. (It's a crappy protection medium, basically just a modified UPX packer with some extra work added.)

Steamlesss will not remove or touch anything that deals with Steamworks (steam_api). This project will never support doing this. This is where I draw the line as this is where things turn into actual piracy.

Steamless does not look for or detect if Steamworks is used either. It only looks for and handles SteamStub DRM.

So what the correct behaviour should be It should remove the SteamStub DRM and if the developers implemented Steamworks the game should crash right?

No. If the file did use SteamStub and Steamless removes it, then the game should still work fine 99% of the time. Some games may add extra layers of protection to detect if SteamStub was removed or if the file was tampered with. But, in general, the game should work fine after being unpacked, even if it still uses Steamworks.

Currently I don't understand: why is this tool not willing to remove SteamStub?

It does remove SteamStub. It does not remove Steamworks. Why? I do not support piracy or assist with it. That is not the point or scope of this project.

My Sample game has SteamStub and Steamworks so this tool should remove SteamStub and let the Steamworks code untouched but it doesn't do that

As I mentioned just above, this can happen if the game has extra protections. It can also happen if the unpacker written in Steamless for the given version is not properly handling all bits of data. Without seeing the file, I cannot say which it may be.

iMonZ commented 3 years ago

So as I correctly understand This tool is stopping if it detects something like Steamworks? Or why is it stopping?

Steamless will remove the SteamStub layer of DRM from the game file, if it is present. This is a tool Steam includes in their partner developer SDK called drm. It is a very basic packer with some extra sugar added to do some basic things such as:

  • Encrypt / protect the main code section. (Generally, .text)
  • Attempt to hide the main game thread via an Nt call. (To prevent debugging.)
  • Attempt to detect debugging with various means.
  • Ensure Steam is running and the launched game is the intended running game based on environment variables.
  • And some other small things..

It is an extremely basic means of trying to prevent piracy, but it is not really something developers should be using for that purpose for obvious reasons. (It's a crappy protection medium, basically just a modified UPX packer with some extra work added.)

Steamlesss will not remove or touch anything that deals with Steamworks (steam_api). This project will never support doing this. This is where I draw the line as this is where things turn into actual piracy.

Steamless does not look for or detect if Steamworks is used either. It only looks for and handles SteamStub DRM.

So what the correct behaviour should be It should remove the SteamStub DRM and if the developers implemented Steamworks the game should crash right?

No. If the file did use SteamStub and Steamless removes it, then the game should still work fine 99% of the time. Some games may add extra layers of protection to detect if SteamStub was removed or if the file was tampered with. But, in general, the game should work fine after being unpacked, even if it still uses Steamworks.

Currently I don't understand: why is this tool not willing to remove SteamStub?

It does remove SteamStub. It does not remove Steamworks. Why? I do not support piracy or assist with it. That is not the point or scope of this project.

My Sample game has SteamStub and Steamworks so this tool should remove SteamStub and let the Steamworks code untouched but it doesn't do that

As I mentioned just above, this can happen if the game has extra protections. It can also happen if the unpacker written in Steamless for the given version is not properly handling all bits of data. Without seeing the file, I cannot say which it may be.

Hey thank you for your quick answer!

At the end it was my mistake because the build script has made another DRM system on top of SteamStub so i'm sorry for time wasting.

I can make a commit in the next days if I have enough time to implement a check for this DRM system so the user get a more detailed error in this application.