问题标签 [objdump]

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 回答
1069 浏览

objdump - objdump 如何处理全局变量

我制作了以下虚拟代码进行测试

/tmp/test.c 包含以下内容:

/tmp/test.h 包含以下内容:

我编译并运行 objdump 如下:

cd /tmp gcc -c test.c -o test.o objdump -gdsMIntel test.o

我得到以下输出:

在上面的反汇编中,我发现:

在 c 的情况下,执行以下操作:

在 p->a 的情况下,执行以下操作:

在这种情况下,c 和 p->a 是否都位于同一地址 (ds:0x0)?

0 投票
1 回答
2551 浏览

c++ - 如何使用 objdump 在高度优化的目标文件中交错源代码?

我有一个带有调试信息的高度优化的编译C++目标文件(用 g++ 编译,指定)。-O3 -g -march=amdfam10 -Wall

我正在使用objdump -S "objname".

不幸的是,交错源代码似乎不起作用,因为有时我看到同一组行(不仅仅是单行)重复,而且不仅仅是一个代码行,而是多个代码行,很多次,然后只有一条装配线,然后是其他 3/4 源代码行,没有多大意义。

例如,我看到 3/4 C++ 代码行带有迭代器,并且映射初始化后跟只有 1/2 ASM 行?是否有意义?

知道会发生什么吗?

0 投票
1 回答
857 浏览

c - 如何使用 gcc 列出链接器分配的代码对象?

我正在构建一个由几个代码模块和一个静态库组成的嵌入式应用程序。一些全局变量显式放置在专用内存段中(即,不是默认的 .data 段)。

处理器内存架构为 4 个存储体,创建了一个连续的物理内存空间。在我的应用程序中,只有第 1 个存储库是为代码保留的,其他 3 个存储库是为显式分配的全局变量和一个小堆栈保留的。

问题是代码部分(.text)现在超出了第一个银行边界,我收到以下链接器错误消息:

有没有办法在链接器检查部分和对象重叠并中止构建之前查看对象分配(可能在临时对象文件中)?

0 投票
1 回答
1491 浏览

linux - 寄存器值调试

我有一个崩溃方法的 objdump。我发现崩溃是由于内存访问错误造成的。内存地址存在于 MIPS 寄存器 a0 中。除了逐步回溯(演练)objdump(a0 从 s3 获得它等等)之外,有没有办法跟踪寄存器是如何获得这个地址的。

我还有一个问题。

如何在内核中完成分页。内核中必须没有虚拟地址的概念,因为它们都已经在内存中。这个问题是因为在我的崩溃中有一个叫做 BADVA(它是 BAD 虚拟地址)的东西持有一个错误的地址。

这是崩溃报告

0 投票
3 回答
4426 浏览

assembly - 如何反汇编movb指令

我正在编写一个反汇编程序,我正在查看指令格式(并手动进行一些反汇编),我遇到了一条我似乎无法解码的指令。

该特定指令的输出(来自 objdump)是:

但是,我不明白指令是如何解码的,因为操作码 c6 应该是 MOV Eb Ib (Mod R/M to imm8)。

有人可以告诉我它是如何解码的吗?

谢谢!

0 投票
1 回答
643 浏览

gdb - 如何将 gdb 中的 $eip 映射到 objdump -d 的输出?

我有一个不完整的堆栈跟踪,它在一个已知的库(linux i686 架构)处停止。为了确定最后调用的函数,我试图将 $eip 作为 gdb 的输出映射到由“objdump -d library.so”生成的文件中的地址。我想我也许可以使用 gdb 中“信息共享”的 From 地址输出,以及 $eip 来计算偏移量,然后我可以将其转换为来自 objdump -d 输出的反汇编文本部分的偏移量?不确定这种方法是否明智,但在一个带有共享库的简单测试工具应用程序中尝试它并没有在正确的函数中给我一个地址。非常感谢任何帮助。

0 投票
1 回答
1835 浏览

elf - 如何获取 ELF 存档文件中某个部分的实际位置?

我想从 Linux 中的 .a ELF 存档文件中提取二进制部分。

当我在存档文件上运行 objdump -h 时,它会列出它包含的目标文件以及每个部分的部分标题。但是,“文件偏移”列似乎与存档中的目标文件位置相关,否则它们将所有部分重叠。

我希望我可以使用 dd 从存档文件中提取二进制信息。(请参阅如何仅提取 ELF 部分的内容)。我如何使用存档来做到这一点?

我还应该提到我正在提取的部分是用这个命令添加的:

0 投票
1 回答
556 浏览

bash - 一起使用 sed 和 awk 创建替换映射

我正在尝试对某些软件进行逆向工程,以更好地了解操作系统的低级工作原理。我想用来自 objdump -t 的相应值替换来自 objdump -d 的原始地址转储,即使是 -Dslx 选项似乎也错过了一些东西。

objdump -t 的输出如下所示:

并且我能够在索引 1 和 NF 处使用 awk 提取所需的信息(我使用的实际代码在另一台计算机上)。对于每条记录,我将字段放入一个数组中:

从这里我有点迷路了。我想使用这些条目将所有出现的“位置”替换为

此时我只是打印出 sed 命令以供下一步使用,然后手动复制并粘贴命令并执行它。它看起来像

我真的不喜欢这个,我想完全自动化这个。我对一些 Bash 技巧相对缺乏经验,所以很可能有一个我从未听说过的简单解决方案。

示例:(此时我无法访问实际输入,但这对于我的目标来说已经足够接近了)

+

=

0 投票
1 回答
94 浏览

objdump - what does objdump mean by 'unsafe'?

objdump, run on a relatively modern 64-bit linux system, complains as follows about one of our shared libs:

use of unsafe function-scope static in ‘lib64/libwhatever.so’.

What does that mean?

The man page doesn't mention 'unsafe' or 'function-scope' anywhere I can see.

0 投票
1 回答
1305 浏览

c - 可以帮助理解 c 的这个 objdump