使用 python 开发

逆向工程 开发
2021-07-08 08:14:10

是否有任何库可以帮助在 python 中开发漏洞利用,例如表示十六进制字符串或组装/反汇编 x86 指令?

3个回答

如果你想在 Python 中开发漏洞利用,这本书可能会有所帮助:http : //my.safaribooksonline.com/book/-/9781597497299/chapter-9-exploitation-scripting/building_exploits_with_python

如果您需要生成大块 asm PeachPy 可能会有所帮助:

PeachPy https://github.com/Maratyszcza/PeachPy

您还可以将 python 编译为 C,并使用 C 编译器将事情分解为汇编

https://stackoverflow.com/questions/10660266/python-program-into-a-standard-assembly

或者你可以用 Python 编写你的大部分程序,并使用各种方法来获得内联汇编:https : //stackoverflow.com/questions/6040932/executing-assembler-code-with-python

这对你来说意味着更少的 asm。

老实说,你会更好地与拳和正确学习 ASM。这很难,但值得麻烦。尝试从 NASM 开始,或使用 Visual Studio 程序编写内联汇编。

另外:这个问题对于这个网站来说有点太宽泛了。

有一堆 python 库可以帮助你进行利用:

  • Peda - GDB 的 Python 漏洞利用开发帮助

Peda 有这个很好的选项来生成漏洞利用骨架。一切都已经为您准备好进行基本的利用,无论是本地的还是远程的。它是一个相当不错的 gdb 扩展。

  • Blasty 的moneyshot也是一组相当有用的实用程序。

    一组 Python 脚本,可帮助您完成二进制开发的最后步骤或构建缓冲区。

  • Hellman 的libformatstr是一个很好的格式字符串自动化利用库,它已经嵌入在前两个中。

此外,如果您真正需要的是打包/操作二进制数据,则必须使用python 的struct库。

还有Pyhton Argentina For RE库列表,涵盖了更多有用的库。

在过去 2 年多的时间里,我一直在使用pydbg并取得了巨大的成功。它被各种流行的模糊测试套件使用,如 Sulley、PaiMei 等。

此外,强烈建议使用顶点反汇编框架,尤其是op_access功能,因为它有助于污点分析。请记住您正在开发漏洞利用的平台的应用程序二进制接口 (ABI)。如果是 x86/x64,请记住某些指令会将不同的不必要寄存器标记为已读/已写入。

举个例子,

rep movs* 

被各种功能使用,尤其是在 WindowsXP+ 上。

Capstone 反汇编框架将声明 ecx、edi 和 esi 都可以读取和写入,这意味着您必须编写逻辑来推断某些指令(如上述的 ACTUALLY 读/写寄存器)。显然,该指令中没有写入 ESI 和 ECX。通常编译器会在前面的指令中指定要读取的字节数,例如

mov ecx, 0x##

然而,对于大约 80% 的指令,它会提供准确的信息(EFLAGS 除外)。

根据空闲时间编写逻辑以确定寄存器是否被实际访问,应该需要几天或一周的时间。

我只是假设您需要的是基本指令集,而不是 FPU、SIMD、SSE 等。如果您重新编写恶意软件、打包或优化的二进制文件,您将需要为上述和更多指令集添加逻辑