gpt4 book ai didi

python - 用 python 反汇编 - 没有简单的解决方案?

转载 作者:太空狗 更新时间:2023-10-29 21:44:45 24 4
gpt4 key购买 nike

我正在尝试创建一个 python 脚本来反汇编二进制文件(准确地说是 Windows exe)并分析其代码。我需要能够获取某个缓冲区,并提取某种结构,其中包含有关其中指令的信息。

我以前用 C 语言使用过 libdisasm,我发现它的界面非常直观和舒适。问题是,它的 Python 接口(interface)只能通过 SWIG 使用,我无法在 Windows 下正确编译它。

在可用性方面,diStorm 提供了一个很好的开箱即用的接口(interface),但它只提供了每条指令的助记符,而不是带有定义指令类型的枚举的二进制结构。这对我的目的来说非常不舒服,并且需要花费大量时间来包装界面以使其满足我的需求。

我还查看了 BeaEngine,它实际上提供了我需要的输出,一个包含关于每条指令的二进制信息的结构,但它的界面真的很奇怪并且违反直觉,并且在提供时它几乎立即崩溃错误的论据。CTypes 有点像你的 Python 崩溃的终极死亡。

因此,我很高兴听到其他解决方案,这些解决方案比使用 djgcc 或 mingw 制作 SWIGed libdisasm 或为 diStorm 编写 OOP 包装器所花费的时间要少一些。如果有人对如何编译 SWIGed libdisasm 或更好的编译二进制文件(pyd 或 dll+py)有一些指导,我很乐意听到/拥有它。 :)

提前致谢。

最佳答案

好吧,经过多方努力,我设法编译了 SWIGed libdisasm!不幸的是,它似乎在不正确(有时是正确的)使用时使 python 崩溃。我是怎么做到的:

  1. 我使用 Visual Studio 6 编译了 libdisasm.lib,你唯一需要的是你使用的任何 libdisasm 版本的源代码,以及 stdint.h 和 inttypes.h(Visual C++ 兼容版本,google 一下)。
  2. 我使用以下命令行 SWIGed 给定的 libdisasm_oop.i 文件

    swig -python -shadow -o x86disasm_wrap.c -outdir 。 libdisasm_oop.i

  3. 使用 Cygwin 在 libdisasm 根目录中运行 ./configure。你从这里得到的唯一真实的东西是 config.h

  4. 然后我新建了一个DLL工程,在其中添加了x86disasm_wrap.c,将c:\PythonXX\libs和c:\PythonXX\Include文件夹添加到相应的变量中,设置为Release配置(重要,要么这或在包含 python.h 之前执行#undef _DEBUG)。此外,您可能需要修复 config.h 的路径。

  5. 编译DLL工程,并将输出命名为_x86disasm.dll。将其放在与 SWIG 生成的 x86disasm.py 相同的文件夹中,您就完成了。

对于其他不太崩溃的 python disasm 库有什么建议吗?

关于python - 用 python 反汇编 - 没有简单的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2216816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com