我正在寻找一个执行二进制代码反汇编的库。
我发现 libdisasm 执行的任务与我想要的完全相同。但是,我发现一些链接表明 libdisasm 不适用于 64 位可执行文件。这是对的吗 ?
但是 objdump 对 64 位可执行文件的输出是可靠的(据我所知)。那么,objdump 是否也使用类似的库进行反汇编?最初,我认为 objdump 使用 libdisasm。
我正在寻找一个执行二进制代码反汇编的库。
我发现 libdisasm 执行的任务与我想要的完全相同。但是,我发现一些链接表明 libdisasm 不适用于 64 位可执行文件。这是对的吗 ?
但是 objdump 对 64 位可执行文件的输出是可靠的(据我所知)。那么,objdump 是否也使用类似的库进行反汇编?最初,我认为 objdump 使用 libdisasm。
objdump
使用libopcodes
从binutils
. 然而,它非常基础,因为它只提供文本表示,没有关于指令的结构化信息。其他选项:
这只是为了澄清原始发布者在评论中提出的问题(我没有足够的评论点数)。
libdisasm 项目多年没有得到积极维护。它不支持 x86-64(64 位)指令集,或 SSE3 之后的任何 x86(32 位)扩展。
opdis 项目是 libdisasm 的替代品。libdisasm 的作者编写 opdis 是为了避免支持 Intel 和 AMD 不断变化的指令集所需的频繁更新。opdis 中的实际操作码反汇编由来自 GNU binutils(objdump 使用的反汇编程序)的 libopcodes 处理,其中 opdis 提供指令元数据和更高级别的反汇编函数。