Tomb Raider: Legend SteamStub research
2019-05-11
tl;dr: Set entrypoint to 0x00AE7488
, remove the .bind
section and rebuild the
executable.
The executable is protected by an older version of SteamStub:
- It has a
.bind
section, - When run, fails with a
Failed to find Steam
message box. - Doesn’t have the known
0xCODECODE
signature for later variants. - The stub doesn’t actually do anything other than some simple checks, it can be removed entirely.
Removing SteamStub
There’s an unconditional jmp
to 0x00EE7488
towards the end of the .bind
section.
Convert 0x00EE7488
to an offset, and you’ll get 0x00AE7488
, which is the OEP.
.bind:015755DD loc_15755DD:
.bind:015755DD popa
.bind:015755DE mov eax, offset sub_EE7488
.bind:015755E3 jmp eax
.bind:015755E3 start endp
.bind:015755E3
.bind:015755E3 ;
Using CFF Explorer, set the entry point in the header to this and remove the .bind
section.
SteamStub configuration
This is an “encrypted” 428-byte blob located at 0x0015755E8
. It looks like:
|
|
The decryption algorithm located right at the start of the .bind
section. Decompiled, it is as follows:
|
|
Once decrypted, it looks like: