我已经看到一些网站谈论注入 DLL(例如http://www.codeproject.com/KB/DLL/DLL_Injection_tutorial.aspx),但我正在为如何让 EXE 工作而苦苦挣扎。任何帮助/提示将不胜感激。
我知道如何解释它的最好方法是“RunPE”,您可以在内存中执行一个 exe。这些帮助有用?
如果您询问如何将代码注入到正在运行的 Python 进程中,那么您想要的是https://github.com/lmacken/pyrasite。
您可以使用此处描述的反射 DLL 注入器。Metasploit 项目使用它来加载它的meterpreter 插件。AFAIK这是注入DLL的唯一方法,因为MS官方不支持从内存“注入”,只支持从文件系统加载。
在低层次上,没有什么能阻止您分配内存区域、在此处加载代码、将其标记为可执行的。
请注意,这些技术都不是 Python 特定的,甚至都不是 Python 相关的——这是一个 win32 问题。
你在说的是用更多的东西在python中重新实现UPX。为此,您需要做的事情:将所有 VirtualAlloc 调用更改为 VirtualAllocEx 调用。将所有 Loadlibrary 调用更改为 loadlibraryEX 调用。实施搬迁修复。
更好的方法可能是调整 UPX 以输出 DLL 而不是可执行文件。然后使用一些python DLL注入代码将其扔到另一个进程中。如果您想这样做,您将经常使用 CTypes。公平警告...
我会推荐这本书http://www.amazon.com/Gray-Hat-Python-Programming-Engineers/dp/1593271921 - 尤其是关于编写自己的调试器的章节,但它涵盖了上述 metasploit 和其他工具。