import struct from pathlib import Path HERE = Path(__file__).resolve().parent OUTPUT = HERE / "tiny-x86_64.exe" IMAGE_BASE = 0x140000000 FILE_ALIGN = 0x200 SECTION_ALIGN = 0x1000 DLL_NAME = b"kernel32.dll\0" IMPORTS = [b"GetStdHandle", b"WriteConsoleA", b"ExitProcess"] MESSAGE = b"tally tiny image\r\n" EXPORT_NAME = b"tally_report\0" IMAGE_NAME = b"tiny-x86_64.exe\0" MACHINE_AMD64 = 0x8664 FILE_EXECUTABLE_IMAGE = 0x0002 FILE_LARGE_ADDRESS_AWARE = 0x0020 PE32_PLUS = 0x20B SUBSYSTEM_CUI = 3 DLL_HIGH_ENTROPY_VA = 0x0020 DLL_DYNAMIC_BASE = 0x0040 DLL_NX_COMPAT = 0x0100 DLL_TERMINAL_SERVER_AWARE = 0x8000 SCN_CODE = 0x00000020 SCN_INITIALIZED_DATA = 0x00000040 SCN_MEM_DISCARDABLE = 0x02000000 SCN_MEM_EXECUTE = 0x20000000 SCN_MEM_READ = 0x40000000 SCN_MEM_WRITE = 0x80000000 REL_BASED_DIR64 = 10 DIR_EXPORT, DIR_IMPORT, DIR_BASERELOC, DIR_IAT = 0, 1, 5, 12 def rel32(target_rva, next_rva): return struct.pack("