可以用Python向进程注入代码或exe吗?

4 投票
5 回答
11597 浏览
提问于 2025-04-16 19:00

我看到一些网站在讨论如何注入DLL文件(比如http://www.codeproject.com/KB/DLL/DLL_Injection_tutorial.aspx),但是我在让一个EXE文件工作上遇到了困难。任何帮助或建议都非常感谢。

我能想到的最好解释就是“RunPE”,也就是在内存中执行一个exe文件。这样说有帮助吗?

5 个回答

1

你说的其实是在用Python重新实现UPX,并且加一些新功能。要做到这一点,你需要做以下几件事:

把所有的VirtualAlloc调用改成VirtualAllocEx调用。 把所有的Loadlibrary调用改成LoadlibraryEX调用。 实现重定位修复。

不过,更好的方法可能是调整UPX,让它输出一个DLL文件,而不是可执行文件。然后再用一些Python的DLL注入代码把这个DLL放到另一个进程里。如果你想这样做,你会经常用到CTypes。提前提醒一下……

1

你可以使用这个反射DLL注入器,在这里有详细的介绍。Metasploit项目就是用它来加载它的meterpreter插件的。根据我所知道的,这可能是注入DLL的唯一方法,因为微软官方并不支持从内存中“注入”,只支持从文件系统加载。

从底层来看,没有什么能阻止你分配一块内存区域,把代码加载到那里,并把它标记为可执行。

需要注意的是,这些技术并不是特定于Python的,甚至和Python没有关系——这其实是一个win32的问题。

3

如果你想知道怎么把代码注入到一个正在运行的Python程序里,你可以看看这个链接:https://github.com/lmacken/pyrasite

撰写回答