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
2.97k stars 194 forks source link

Clive Barker's Jericho #85

Closed UroshUchiha closed 1 year ago

UroshUchiha commented 1 year ago

Steamless detects that the executable contains SteamStub Variant 2.0, but it fails to remove it.

atom0s commented 1 year ago

Without a copy of the exe you are trying to unpack, I cannot investigate if this is an actual issue or not.

UroshUchiha commented 1 year ago

Jericho.zip Closed the issue by misclick. Here's the Jericho.exe in the attachment.

atom0s commented 1 year ago

This issue should now be fixed in the latest release. https://github.com/atom0s/Steamless/releases/latest

UroshUchiha commented 1 year ago

The exe gets unpacked now, but ultimately it still doesn't work. The game doesn't load. No error message at all whatsoever. I found an executable for this game that another member manually removed SteamStub and it works so I compared the two and the only real difference I can personally see (don't know a lot about these things as you so take it with a grain of salt) is the offset 00000140 and then the first three values. Steamless puts them to 00 10 00, but if I put them to 47 D8 27 and save the modifications the game boots up properly.

Provided in the attachment are the clean exe (unmodified), Steamless unpacked one and the one that has SteamStub removed and works. In case you want to compare.

Clive Barker Jericho.zip

atom0s commented 1 year ago

For now this issue will land up remaining a problem until I have the free time to rewrite parts of the v2.0 (x86) variant unpacker plugin. Since I only had 1 sample before this issue using that variant, the plugin I wrote for it is fairly specific to that one file. Your sample has shown that there are multiple versions of the variant and they [widely] change the stub header between versions.

The issue at hand right now is that the stub header is different between this file and the other sample I have. They changed things and shifted stuff around which makes the stub header incorrect for your file that Steamless contains atm. Going forward, the plugin will need to detect the size of the header and base its unpacking process on that vs. just seeing that its v2.0 and using a single header.

The difference you are seeing in those files is that the OEP is incorrect. This, again, is due to the stub headers being different. In your file, the OEP would be properly fixed by using the current ValidationHash value which is where its aligned to in the header. This isn't too big of an issue to fix by having Steamless detect the header sizes but at the moment I don't have time to work on Steamless more. I'll reopen this issue until I do get it fixed though.

atom0s commented 1 year ago

Closing this again as completed. Your file should now fully and properly unpack. I have also fixed the checksum calculation which should resolve issues with that too. (The 'proper' file you posted has an incorrect checksum as well. (off by 2))