mirror of
https://github.com/cea-sec/miasm.git
synced 2026-10-12 02:11:51 +00:00
34 lines
885 B
Python
34 lines
885 B
Python
#! /usr/bin/env python
|
|
|
|
from miasm.loader.pe_init import PE
|
|
|
|
# Build an empty PE object
|
|
pe_object = PE()
|
|
|
|
# Add a section with a just a "RET"
|
|
payload = b"\xc3"
|
|
s_text = pe_object.SHList.add_section(
|
|
name="text", addr=0x1000, rawsize=0x1000, data=payload
|
|
)
|
|
|
|
# Set the entry point on this instruction
|
|
pe_object.Opthdr.AddressOfEntryPoint = s_text.addr
|
|
|
|
# Add some imports
|
|
new_dll = [
|
|
({"name": "kernel32.dll",
|
|
"firstthunk": s_text.addr + 0x100},
|
|
["CreateFileA", "SetFilePointer", "WriteFile", "CloseHandle"]
|
|
),
|
|
({"name": "USER32.dll",
|
|
"firstthunk": None},
|
|
["SetDlgItemInt", "GetMenu", "HideCaret"]
|
|
)
|
|
]
|
|
pe_object.DirImport.add_dlldesc(new_dll)
|
|
s_myimp = pe_object.SHList.add_section(name="myimp", rawsize=0x1000)
|
|
pe_object.DirImport.set_rva(s_myimp.addr)
|
|
|
|
# Rebuild the PE and dump it to a file
|
|
open('fresh_pe.exe', 'wb').write(bytes(pe_object))
|