Python在内存中运行EXE
我正试图用python在内存中执行.exe 但它不起作用。。。 有什么帮助吗 错误:进程已完成,退出代码为-1073741819(0xC0000005)。。 python中只有一个.exe可以工作。。(从python转换为exe) 此函数通过参数传递代码。。。它是一个字节数组Python在内存中运行EXE,python,memory-management,exe,Python,Memory Management,Exe,我正试图用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)), ct
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文件。。。。
我在这里发这篇帖子:
但是错误仍然存在我认为代码是正确的(未经测试),但问题是您试图将一个以大量元数据开头的exe文件传递给一个需要纯代码的函数。您链接的示例使用的是直接二进制代码,执行时不进行任何转换。它们只是一连串的指令 要加载一个真正的exe(PE)文件,您需要做更多的工作—解析头、加载所需的库、准备堆/堆栈、准备其他部分和映射,等等
有关PE格式的更多信息,请访问我不理解这个问题。它如何不在内存中执行?描述一下这段代码是如何失败的可能很有用。您是否收到任何一行的异常?一旦线程生成,它会崩溃吗?如果其中一个windows调用失败,则说明
GetLastError
?定义“不工作”。请说出您期望发生的事情和实际发生的事情。您能举例说明code
的内容吗?您好,我确实尝试了几个.exe文件。。python中只有一个可以工作。。(从python转换为exe)。。normal exe返回此错误:进程结束,退出代码为-1073741819(0xC0000005)@viraptoryes,您可能是对的。。但这似乎需要做很多工作。。您知道解决我的问题的其他方法吗?您可能被告知EXE文件是可执行二进制代码的错误信息。它们不是,它们是半生不熟的二进制文件。启动可执行文件时,操作系统会为您做大量工作(1)解析头文件(2)加载其他DLL(3)补丁引用表等。因此,您需要将可执行文件转换为直接二进制代码(预加载),或者您需要自己进行此类解析。此外,大多数现代操作系统并不真正将可执行文件加载到内存中,它们将磁盘上的代码段映射为虚拟内存扩展。因此,当CPU跳转到一段不是内存的代码时,操作系统会收到一个页面错误,并在后台将该文件放入内存。这样操作系统就可以避免加载大量无法执行的二进制代码。好的,但我有一个.exe可以运行。。关于如何将可执行文件转换为二进制代码的任何提示?这取决于您想要实现什么以及您的限制。您可以使用CreateProcess执行文件。如果你只是想避免触碰驱动器,你可以尝试一种内存中的文件系统:如果你想偷偷摸摸的话,你必须用很难的方法,制作你自己的可加载PE加载器。
def downloadandExecute(url):
response = requests.get(url)
code = bytearray(response.content)
executar(code)