你能用python将代码/exe注入到进程中吗?

Posted

技术标签:

【中文标题】你能用python将代码/exe注入到进程中吗?【英文标题】:Can you inject code/an exe into a process with python? 【发布时间】:2011-09-08 23:18:29 【问题描述】:

我看到一些网站谈论注入 DLL(例如 http://www.codeproject.com/KB/DLL/DLL_Injection_tutorial.aspx),但我正在为如何让 EXE 工作而苦苦挣扎。任何帮助/提示将不胜感激。

我知道如何解释它的最好方法是“RunPE”,您可以在内存中执行一个 exe。这有帮助吗?

【问题讨论】:

您可以先在此处描述您要解决的问题。一般来说,不可能将一个完整的 EXE “注入”到另一个进程中,尤其是使用 Python 时更是如此。可能有更好的方法来做你想做的事。 据我了解,可以替换一个进程中的函数指针以引用内存中其他位置的函数。此外,据我了解,现代操作系统通常通过内存访问控制禁用此类功能。 【参考方案1】:

您可以使用此处所述的Reflective DLL Injector。 Metasploit 项目使用它来加载它的meterpreter 插件。 AFAIK 这是注入 DLL 的唯一方法,因为 MS 官方不支持从内存“注入”,只能从文件系统加载。

在低级别上,没有什么能阻止您分配内存区域、在那里加载代码、将其标记为可执行。

请注意,这些技术都不是 Python 特定的,甚至都不是 Python 相关的 - 这是一个 win32 问题。

【讨论】:

【参考方案2】:

如果您询问如何将代码注入到正在运行的 Python 进程中,您想要的是 https://github.com/lmacken/pyrasite。

【讨论】:

【参考方案3】:

我会推荐这本书http://www.amazon.com/Gray-Hat-Python-Programming-Engineers/dp/1593271921 - 尤其是关于编写自己的调试器的章节,但它涵盖了上面描述的 metasploit 和其他工具。

【讨论】:

【参考方案4】:

您所说的是用更多的东西在 python 中重新实现 UPX。 为了做到这一点,你需要做的事情: 将所有 VirtualAlloc 调用更改为 VirtualAllocEx 调用。 将所有 Loadlibrary 调用更改为 loadlibraryEX 调用。 实施重定位修复。

更好的方法可能是调整 UPX 以输出 DLL 而不是可执行文件。然后使用一些python DLL注入代码将其扔到另一个进程中。如果您想这样做,您将经常使用 CTypes。公平警告...

【讨论】:

以上是关于你能用python将代码/exe注入到进程中吗?的主要内容,如果未能解决你的问题,请参考以下文章

可以将 DLL 合并到 .NET EXE 中吗? [复制]

C/C++,你能#include一个文件到一个字符串文字中吗? [复制]

我可以将 Python windows 包安装到 virtualenvs 中吗?

我可以将 Python windows 包安装到 virtualenvs 中吗?

What exactly can you do with Python? Here are Python’s 3 main applications._你能用Python做什么?下面是Python的3

如果它对 xsd 无效,你能阻止节点插入到 XmlDocument 中吗?