我正在尝试创建一个python脚本,它将反汇编二进制文件(精确的Windows exe)并分析其代码.我需要能够获取某个缓冲区,并提取某种包含有关其中指令信息的结构.
我之前在C中使用过libdisasm,我发现它的界面非常直观和舒适.问题是,它的Python接口只能通过SWIG获得,我无法在Windows下正确编译.
在可用性方面,diStorm提供了一个很好的开箱即用接口,但它只提供每条指令的助记符,而不是一个二进制结构,其枚举定义了指令类型,而不是.这对我的目的来说非常不舒服,并且需要很多我所看到的用于包装界面的时间以使其符合我的需要.
我也看过BeaEngine,它确实提供了我需要的输出,一个带有关于每条指令的二进制信息的结构,但它的界面非常奇怪且反直觉,并且当提供错误的参数时它会立即崩溃.CTypes类似于终极死亡到你的python崩溃.
因此,我很高兴听到其他解决方案,这比使用djgcc或mingw来制作SWIGed libdisasm或为diStorm编写OOP包装器要少一些时间.如果有人对如何编译SWIGed libdisasm或者更好的编译二进制文件(pyd或dll + py)有一些指导,我很乐意听到/拥有它.:)
谢谢你.