在 Python 中读取二进制文件 (.out) 并使用 Capstone 进行反汇编

Posted

技术标签:

【中文标题】在 Python 中读取二进制文件 (.out) 并使用 Capstone 进行反汇编【英文标题】:Reading Binary File (.out) in Python and disassemble with Capstone 【发布时间】:2016-03-01 18:52:23 【问题描述】:

我在读取二进制文件的 .text 部分时遇到了一些问题。

二进制文件由 gcc 编译。

readelf -S binary_file

这个命令表明

.text   PROGBITS    0000831C   00031C   000340

.text 部分的地址为 0000831c,偏移量 = 00031c 且大小 = 000340

我试过了

file = open('binary_file')
content = file.readlines()

Capstone 无法识别。

如果 .text 内容看起来像

 f102 030e 0000 a0e3 

怎么读

content = b'\xf1\x02\x03\x0e\x00\x00\xa0\xe3'

【问题讨论】:

【参考方案1】:

默认情况下,open() 以文本模式打开文件。要以二进制模式打开文件,您需要提供适当的模式:'rb' - 表示以二进制模式打开以供读取。

readlines() 被设计用来从文件中读取一行文本,所以用它来读取二进制文件是没有意义的。

你想要这样的东西:

file = open('binary_file', 'rb')
content = file.read()

【讨论】:

以上是关于在 Python 中读取二进制文件 (.out) 并使用 Capstone 进行反汇编的主要内容,如果未能解决你的问题,请参考以下文章

像在 python 中一样在 C++ 中读取二进制文件

python读取文件操作文件放在哪里

如何使用 NumPy 在 Python 中读取二进制文件?

java怎么实现读取一个文件,拿到二进制流

python pdf二进制读取问题

Python中读取二进制图片(例如 a.jpg)有关解码编码的问题