Proton/make/pefixup.py
Joshua Ashton 2bcba2b3cd pefixup: Add timestamps to PE fixup step
Needed for some anti cheats to be happy.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
Link: https://github.com/ValveSoftware/Proton/pull/4880
2021-12-09 17:54:03 +02:00

28 lines
726 B
Python
Executable File

#!/usr/bin/env python3
import sys
import os
import stat
import pefile
for path in sys.argv[1:]:
pe = pefile.PE(path)
for section in pe.sections:
if section.Name.decode("utf-8")[0:5] == ".text":
section.Characteristics &= ~pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_CNT_INITIALIZED_DATA']
section.Characteristics &= ~pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_ALIGN_MASK']
pe.FILE_HEADER.TimeDateStamp = 1622588288
pe.OPTIONAL_HEADER.CheckSum = pe.generate_checksum()
perm = stat.S_IMODE(os.stat(path).st_mode)
if (perm & stat.S_IWUSR) == 0:
os.chmod(path, perm | stat.S_IWUSR)
pe.write(path)
if (perm & stat.S_IWUSR) == 0:
os.chmod(path, perm)