Abc*_*599 7 python swig disassembly
我正在尝试创建一个python脚本,它将反汇编二进制文件(精确的Windows exe)并分析其代码.我需要能够获取某个缓冲区,并提取某种包含有关其中指令信息的结构.
我之前在C中使用过libdisasm,我发现它的界面非常直观和舒适.问题是,它的Python接口只能通过SWIG获得,我无法在Windows下正确编译.
在可用性方面,diStorm提供了一个很好的开箱即用接口,但它只提供每条指令的助记符,而不是一个二进制结构,其枚举定义了指令类型,而不是.这对我的目的来说非常不舒服,并且需要很多我所看到的用于包装界面的时间以使其符合我的需要.
我也看过BeaEngine,它确实提供了我需要的输出,一个带有关于每条指令的二进制信息的结构,但它的界面非常奇怪且反直觉,并且当提供错误的参数时它会立即崩溃.CTypes类似于终极死亡到你的python崩溃.
因此,我很高兴听到其他解决方案,这比使用djgcc或mingw来制作SWIGed libdisasm或为diStorm编写OOP包装器要少一些时间.如果有人对如何编译SWIGed libdisasm或者更好的编译二进制文件(pyd或dll + py)有一些指导,我很乐意听到/拥有它.:)
谢谢你.
好吧,经过多次干预,我成功编译了 SWIGed libdisasm!不幸的是,它似乎因不正确(有时是正确)的使用而使 python 崩溃。我是怎么做到的:
我使用以下命令行切换了给定的 libdisasm_oop.i 文件
swig -python -shadow -o x86disasm_wrap.c -outdir 。libdisasm_oop.i
使用 Cygwin 在 libdisasm 根目录中运行 ./configure。你从中得到的唯一真实的东西是 config.h
然后我创建了一个新的DLL项目,向其中添加了x86disasm_wrap.c,将c:\PythonXX\libs和c:\PythonXX\Include文件夹添加到相应的变量中,设置为Release配置(重要的是,要么这样做,要么执行#undef _DEBUG在包含 python.h 之前)。另外,您可能需要修复 config.h 的路径。
编译DLL项目,并将输出命名为_x86disasm.dll。将其放在与 SWIG 生成的 x86disasm.py 相同的文件夹中,然后就完成了。
对于其他不太崩溃的 python disasm 库有什么建议吗?