mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
import sys
|
|
import os.path
|
|
sys.path.append(os.path.abspath(__file__ + "\..\.."))
|
|
|
|
import windows
|
|
import windows.native_exec.simple_x86 as x86
|
|
import windows.native_exec.simple_x64 as x64
|
|
# Here is our current process
|
|
cp = windows.current_process
|
|
|
|
print("current process is {cp}".format(cp=windows.current_process))
|
|
print("current process is a <{cp.bitness}> bits process".format(cp=cp))
|
|
print("current process is a SysWow64 process ? <{cp.is_wow_64}>".format(cp=cp))
|
|
print("current process pid <{cp.pid}> and ppid <{cp.ppid}>".format(cp=cp))
|
|
print("Here are the current process threads: <{cp.threads}>".format(cp=cp))
|
|
|
|
print("Let's execute some native code ! (0x41 + 1)")
|
|
|
|
if windows.current_process.bitness == 32:
|
|
# Let's generate some native code
|
|
code = x86.MultipleInstr()
|
|
code += x86.Mov("Eax", 0x41)
|
|
code += x86.Inc("EAX")
|
|
code += x86.Ret()
|
|
else:
|
|
code = x64.MultipleInstr()
|
|
code += x64.Mov("RAX", 0x41)
|
|
code += x64.Inc("RAX")
|
|
code += x64.Ret()
|
|
|
|
native_code = code.get_code()
|
|
|
|
v = windows.current_process.execute(native_code)
|
|
print("Native code returned <{0}>".format(hex(v)))
|
|
|
|
print("Allocating memory in current process")
|
|
addr = cp.virtual_alloc(0x1000) # Default alloc is RWX (so secure !)
|
|
print("Allocated memory is at <{0}>".format(hex(addr)))
|
|
|
|
print("Writing 'SOME STUFF' in allocation memory")
|
|
cp.write_memory(addr, "SOME STUFF")
|
|
print("Reading memory : <{0}>".format(repr(cp.read_memory(addr, 20))))
|
|
|
|
|