使用 Python C 类型的 DLL 注入进行 API 挂钩

逆向工程 Python dll注入
2021-06-17 04:42:08

我想使用 Python C-Types 编写一些东西,它挂钩 API 调用并可用于解压可执行文件。目前,我的(带有 C 类型的 Python)代码启动一个处于挂起状态的可执行文件,然后使用createremotethreadAPI执行 DLL 注入DLL 已加载,代码成功执行。

我希望注入的代码修补可执行文件,以便它挂钩某些 API 调用。最终我想找到代码洞,但我目前只是在分配虚拟内存 ( virtualalloc)。我想只使用 Python 来做到这一点。这可能吗?

我想因为它可以在 C 中完成,所以可以使用 Python 的 C-Types 来完成。在我的研究中,我看到人们使用它DiStorm的某些部分,但我还是想使用 Python。我知道这之前已经完成了,但我想编写一些代码作为学习练习。寻找一些方向和任何指导是受欢迎的。

1个回答

请看以下内容:

  • PyDBG - 它是一个围绕 Win Debug API 等的 Python 包装器。该框架通过为 BP、内存执行/读/写、堆栈检查等注册事件处理程序,使人们能够从字面上检查正在运行的流程的每个方面。您可以在正在调试的流程中更改任何您想要的内容。
  • WinAppDbg - python 模块允许开发人员在 Windows 环境下使用 Python 快速编写检测脚本。

通过使用上述工具,您可以编写一个通用的解包程序,如果您发现一些更严重的问题,除了手动操作并将知识整合到脚本中之外,别无他法。我有使用上述工具解决您正在尝试解决的相同问题的经验,我可以说这些框架做得很好。

首先,您可以 BP 所有内存分配、保护更改和释放 API 并检查这些缓冲区 - (VirtualAlloc(Ex)、VirtualFree、VirtualProtect)。此外,添加WriteProcessMemory并检查要写入其他进程的缓冲区(以防恶意软件)。对于更高级的打包程序,您也可以检查 *UnmapViewOfSection API。