2021-05-28 10:29:12 +02:00
|
|
|
#!/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":
|
2022-02-15 17:20:52 +01:00
|
|
|
assert not (section.Characteristics & pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_CNT_INITIALIZED_DATA'])
|
2022-02-15 17:00:32 +01:00
|
|
|
assert not (section.Characteristics & pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_ALIGN_MASK'])
|
2021-05-28 10:29:12 +02:00
|
|
|
|
|
|
|
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)
|