Sunteți pe pagina 1din 3

#input section

section_num = input("enter num of section in PE format (like 0100 for 1 section):\n")

virtual_size = input("enter virtual size in bytes in PE format (8 digits, like 48200000 for 2048):\n")

#defs

def z_pad(num):

tmp=""

for i in range(num):

tmp += "00000000"

return tmp

###start

# DOS header

pe = "4D5A0000"

pe += z_pad(14)

pe +="40000000"

# PE header

pe +="50450000"

pe +="4C01"

pe +=section_num

pe += z_pad(3)

pe +="D0000301" #optional hdr size + perms

# optional header

pe +="0B010000"#PE32magic - "PE"

pe += z_pad(3)

pe +="00100000" #entry point

pe += z_pad(2)
pe +="00004000"#image base

pe +="00100000"#section alignment

pe +="00020000"#fie alignment

pe += z_pad(2)

pe +="04000000"#subsystem version

pe += z_pad(1)

pe +="00200000"#runtime memory

pe +="00020000"#headers size

pe += z_pad(1)

pe +="03000000" #CLI program

pe += z_pad(5)

pe +="0E000000" #data dir count

#Data directories

pe += z_pad(28)

#Section table

pe +="2E746578" #section name

pe +="74000000" #section name

pe +=virtual_size

pe +="00100000" #virtual address

pe +=virtual_size #raw_size

pe +="00020000" #file offset

pe += z_pad(3)

pe +="20000060" #permission (X,R)

#padding

pe += z_pad(44)
fh = open("pe_header.txt","w+")

fh.write(pe)

fh.close()