问题标签 [pyelftools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1270 浏览

python - ELF 解析:使用 pyelftools 直接访问 DIE

我需要一种使用它们的偏移量直接访问 DIE 的方法。到目前为止,我发现有一种计算单元 (CU) 对象的方法,您可以在其中从偏移量访问 DIE。

IE :

但是,如果您尝试访问当前 CU 之外的 DIE,则会超出范围,因为该 DIE 未在该 CU 下编制索引。

我能想到的最好的方法是遍历 CU,并使用偏移量作为索引创建一个完整的 DIE 列表。

似乎应该有一个DWARFInfo类的方法,只要你有它的偏移量,你就可以访问任何 DIE。

我需要这样做的原因是因为我正在循环所有 CU 以生成我的全局变量列表,并且我需要在不同的 CU 中引用 DIE 来检索类型信息。

0 投票
3 回答
2270 浏览

mach-o - dsym 文件的结构是什么?

构建应用程序时生成的 dsym 文件的结构是什么。我知道它包含 DWARF 调试信息,但什么是 dsym 文件。我想阅读其中的 DWARF 信息。

它只是一个仅包含调试部分的 Mach-O 二进制文件吗?我如何将它传递给一个 DWARF 解析工具pyelftool,例如读取 ELF 文件调试部分中的 DWARF 信息。

objdump -h用来打印 dsym 文件的各个部分(.dsym 文件是一个包,我只是引用包中的二进制文件)

0 投票
1 回答
2361 浏览

python - 使用 python + pyElftools 从 (avr)elf 文件中获取内存布局

我正在为 ATXmega128A4U 创建自己的引导加载程序。要使用引导加载程序,我想将固件的 ELF 文件转换为 ATXmega 中使用的内存映射。为此,我使用 python 和模块“pyelftools”。它的文档很差,所以我遇到了一个问题:我不知道我可以使用什么信息从这些部分的数据中获取地址、偏移量等。我的目标是创建一个字节数组,将数据/代码复制到其中并将其传输到引导程序。下面是我的代码:

希望有人能告诉我如何解决这个问题。

0 投票
1 回答
64 浏览

assembly - 获取共享对象文件 (ELF) 中函数的指令流(字节或程序集)

我正在努力获取与共享对象文件 (ELF) 中的某个函数相关联的指令。

这将通过 python 脚本来实现。我当然可以从命令行执行此操作,目标不是从我的 python 脚本启动 cli 命令。应该使用图书馆。

我的脚本的输入是一个对象文件名和函数的名称,如

结果应该看起来像

不必以任何汇编语法显示输出。十六进制流也足够了。谁能为我命名一个或多个可以帮助我完成此类工作的库?

0 投票
0 回答
199 浏览

python - Python:使用 pyelftools 列出结构的成员

我在 C 中有一个结构,有几个成员和一个 ELF 文件。

例如我有以下

我怎样才能打印出 hello 的成员?或者获取一个 hello 对象,其中包含 hello.a、hello.c 和 hello.d 的成员

是否已经有一个库可以做到这一点,例如 pyelftools?

0 投票
1 回答
2794 浏览

python-3.x - 如何使用 Python 修改 ELF 文件

我正在尝试.text使用 python 修改 ELF 文件的段。我成功地获得了 .text 字段,所以我可以简单地更改我想要的位。问题是它pyelftools没有提供任何从 ELF 对象生成 ELF 文件的方法。

所以我尝试的是以下内容:

我在 中创建了一个简单的 helloworld 程序c,对其进行编译并获得了a.out文件。然后我用它pyelftools来拆卸它。

0 投票
1 回答
686 浏览

debugging - 如何使用 pyelftools/libdwarf 找到一行代码

我有一个函数名和该函数顶部的偏移量。我知道我可以通过查看汇编列表文件找到代码行并计算代码行的偏移量并以这种方式获取行号。

我想要做的是使用 .o 文件来获取相同的信息。我可以看到 ELF 文件的 DWARF 信息,并且可以在 DWARF 数据中找到函数的 DIE,但是我如何实际查看该函数的指令信息并将其映射到一行代码。我一直在使用 pyelftools,所以我希望能够使用它,但如果我不能使用 pyelftools,我愿意接受其他选择。

0 投票
0 回答
117 浏览

python - 多线程处理同一个文件

我正在尝试加快在 python 中处理文件所需的时间。我的想法是将任务分成n个线程。

例如,如果我有一个包含 1300 个项目的文件。我希望每个线程处理每第 n 个项目。每个项目都不依赖于任何其他项目,因此这里的顺序无关紧要

所以每个线程的工作流程都是这样的:

我正在使用线程库来执行此操作,但我没有看到任何性能改进。

这是伪代码:

由于每个线程都只是在读取文件,它应该能够自由地扫描文件,而不用关心其他线程在做什么或被它们阻塞,对吧?

我在这里俯瞰什么?

我唯一能想到的是我用来格式化这些文件的库(pyelftool ELFFile)有一些内部阻塞但我找不到它。还是我的计划存在根本缺陷?

编辑:请注意,我正在运行它的系统上有 32 个 CPU

0 投票
1 回答
406 浏览

python - 使用 pyelftools 抓取程序头信息

我只是想用pyelftools(偏移量、虚拟地址和物理地址)来获取程序头信息。

这可以通过运行从终端完成:

readelf -l <elf_file>

但我无法从 pyelftools 获取相同的信息。从这些例子中,我拼凑了这个:

注:Elf_Shdr是程序头文件。

这将打印偏移量、虚拟地址、物理地址等。但不是我想要的十六进制格式,或者像readelf打印它的方式。有没有办法让它打印出十六进制格式readelf

0 投票
1 回答
833 浏览

debugging - 解析 DWARF 的有效方法

我尝试构建一个调试器,它允许我在函数或代码行处设置断点。所需的调试信息应从 elf 文件的 DWARF 部分中提取。我能够提取这些数据。我要调试的项目有 50-100 个文件,所以我需要大约 10 分钟来用 readelf 或 pyelftools 解析 elf 以获得我需要的所有 dwarf 信息。为了提高速度,我的下一个方法是只解析当前打开的源文件的调试信息。但是使用 pyelftools 也需要几分钟。

调试器如何如此快速地获取信息?我使用带有 winIDEA 的 iSystem 调试器,大约需要 20 秒。闪现精灵,然后我可以立即在任何源文件中设置断点。

我是该主题的新手,因此不胜感激。

编辑:这就是我使用 pyelftools 从一个文件中获取函数地址的方式