objdump相关内容

如何使用objump将源代码交织到高度优化的目标文件中?

我得到了一个高度优化的编译的C++目标文件(用g++编译,指定-O3 -g -march=amdfam10 -Wall),带有调试信息。 我正在使用objdump -S "objname"。 不幸的是,交错源代码似乎不起作用,因为有时我看到同一组行(不只是一行)多次重复,而且不只是一个代码行,而是多个代码行,然后是只一条装配线,然后是其他四分之三的源代码行,没有太大意义。 例如,我看 ..
发布时间:2022-07-21 19:35:07 C/C++开发

使用 ARM 循环计数后处理“objdump --disassemble"

是否有可用于对某些 objdump --disassemble 输出进行后处理以使用循环计数进行注释的脚本?特别是对于 ARM 家族.大多数情况下,这只是与计数的表查找的模式匹配.我猜可能需要像 +5M 这样的注解五个内存周期. Perl、python、bash、C 等都可以.我认为这可以通用,但我对 ARM 感兴趣,它有一个 正交 指令集.这是关于 68HC11 做同样事情的线程.该脚本需要一个 ..
发布时间:2022-01-17 13:41:37 其他开发

elf 文件中各节的虚拟地址和物理地址

objdump 如何计算 elf 段的物理地址 (LMA)?据我所知,elf 节标题仅包含节 [1] 的虚拟地址 (VMA). 通常,VMA 和 LMA 是相同的.但对于初始化数据段 (.data),VMA 是变量的 RAM 位置,LMA 是初始值所在的 ROM 位置.Crt0 负责在调用 main() 之前将初始值复制到 RAM 中.例如: $ objdump -h my.elf部分:I ..
发布时间:2022-01-11 15:32:08 其他开发

如何反汇编、修改然后重新组装 Linux 可执行文件?

有没有办法做到这一点?我已经使用了 objdump,但它不会产生任何我知道的任何汇编程序都会接受的汇编输出.我希望能够更改可执行文件中的指令,然后再对其进行测试. 解决方案 我认为没有任何可靠的方法可以做到这一点.机器码格式非常复杂,比汇编文件还要复杂.实际上不可能采用编译后的二进制文件(例如,ELF 格式)并生成一个源汇编程序,该程序将编译为相同(或足够相似)的二进制文件.要了解差异,请 ..
发布时间:2022-01-06 12:41:50 服务器开发

我怎么能用像 objdump 这样的东西来判断一个目标文件是否是用 -fPIC 构建的?

我怎么能用objdump 之类的东西判断一个目标文件是否是用-fPIC 构建的? 解决方案 答案取决于平台.在大多数平台上,如果输出来自 readelf --relocs foo.o |egrep '(GOT|PLT|JU?MP_SLOT)' 为空,则 foo.o 未使用 -fPIC 编译,或者 foo.o 不包含任何代码,其中-fPIC 很重要. ..
发布时间:2021-12-18 22:45:31 其他开发

分析 ELF 部分和符号大小的工具

我需要一种方法来分析我的 ARM 的 GCC 编译器的输出文件.我正在为裸机编译,我非常关心大小.我可以使用交叉编译器提供的 arm-none-eabi-objdump 但如果存在用于此任务的工具,解析输出并不是我渴望做的事情.您知道存在这样的工具吗?我的搜索没有结果. 还有一件事,我自己代码中的每个函数都在自己的部分中. 解决方案 您可以使用 nm 和 size 来获取函数和 EL ..
发布时间:2021-12-12 23:59:21 其他开发

如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32)

我正在使用 aarch64-linux-gnu-objdump 反汇编部分 ARM v8 程序.它适用于 V8 64 位指令,但在模式更改为 V7 指令集(A32)时失败 - 代码作为 V8 指令集启动,切换到 A32(AArch32 执行状态),然后切换到 T32 - 拇指指令集.如何反汇编A32和T32指令?当模式切换时,我是否需要将代码分解成部分,以便我有单独的指令模式块? 任何帮助将 ..
发布时间:2021-11-17 22:43:33 其他开发

Objdump 无法识别共享库的架构

我在 Ubuntu 14.04 上为 ARM 平台构建了一个共享库.该文件已成功编译和构建.我可以使用 nm 命令检查导出的符号,但是当我检查 .so 文件头时,我得到了架构未知的信息. 这个库是否正确构建,为什么库架构未知? objdump -f libMyLib.solibMyLib.so:文件格式 elf32-little架构:未知!,标志 0x00000150:HAS_SYMS、动 ..
发布时间:2021-11-17 22:32:39 其他开发

Objdump 无法识别共享库的架构

我在 Ubuntu 14.04 上为 ARM 平台构建了一个共享库.该文件已成功编译和构建.我可以使用 nm 命令检查导出的符号,但是当我检查 .so 文件头时,我得到了架构未知的信息. 这个库是否正确构建,为什么库架构未知? objdump -f libMyLib.solibMyLib.so:文件格式 elf32-little架构:未知!,标志 0x00000150:HAS_SYMS、动 ..
发布时间:2021-11-17 22:30:52 其他开发

arm-linux-gnueabi 编译器选项

我正在使用 arm-linux-gnueabi-gcc 在 Linux 中为 ARM 处理器编译 C 程序.但是,我不确定它编译的默认 ARM 模式是什么. 例如,对于 C 代码: test.c unsigned int main(){返回 0x1ffff;}arm-linux-gnueabi-gcc -o test test.c 现在,当我用 objdump 查看 main() ..
发布时间:2021-11-17 22:20:22 服务器开发

objdump 和 ARM 与 Thumb

我正在尝试使用 gcc 反汇编为 ARM 构建的对象.不幸的是,objdump 试图猜测代码是否是 ARM 和 Thumb,并且弄错了:它认为我的代码是 Thumb,而实际上它是 ARM. 我看到 objdump 有一个选项可以强制它将所有指令解释为 Thumb (-Mforce-thumb),但它没有一个选项来强制 ARM 模式! 这对我来说似乎是一个非常奇怪的遗漏,它严重阻碍了我完 ..
发布时间:2021-11-17 22:12:18 其他开发

从 ARM-GCC 编译的 elf 文件中提取详细的符号信息(结构成员)

我使用 ARM-GCC 4.7.4 为 Cortex-M4 编译代码.对于我们的调试工具,我需要以人类可读的格式(例如 .txt)了解所有变量的名称、类型和地址.地图文件提供了大部分信息,遗憾的是没有提供如下结构内容: typedef struct { float32_t Ref;//输入:参考值float32_t Fdb;//变量:反馈值float32_t 错误;//输入:控制错误float3 ..
发布时间:2021-11-17 22:08:33 其他开发

如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32)

我正在使用 aarch64-linux-gnu-objdump 反汇编部分 ARM v8 程序.它适用于 V8 64 位指令,但在模式更改为 V7 指令集(A32)时失败 - 代码作为 V8 指令集启动,切换到 A32(AArch32 执行状态),然后切换到 T32 - 拇指指令集.如何反汇编A32和T32指令?当模式切换时,我是否需要将代码分解成部分,以便我有单独的指令模式块? 任何帮助将 ..
发布时间:2021-11-17 21:47:43 其他开发

将 objdump 用于 ARM 架构:反汇编为 ARM

我有一个目标文件,正在尝试反汇编它.当我使用: objdump -d example.o 我得到一个elf64-x86-64文件格式的程序集. 我正在尝试将其反汇编为 ARM,我该怎么做? 解决方案 如果你想做ARM代码的反汇编,你最好有一个ARM工具链,这是我得到的: http://bb.osmocom.org/trac/wiki/toolchain 有了这个之后, ..
发布时间:2021-11-17 21:45:51 服务器开发

使用 ARM 周期计数后处理 `objdump --disassemble`

是否有脚本可用于对某些 objdump --disassemble 输出进行后期处理以使用循环计数进行注释?特别是对于 ARM 系列.大多数情况下,这只是一个模式匹配和一个表查找计数.我猜可能需要像 +5M 这样的注释,用于五个内存周期. Perl、python、bash、C 等都很好.我认为这可以通用,但我对 ARM 感兴趣,它有一个 正交 指令集.这是一个关于 68HC11 做同样事情的线程. ..
发布时间:2021-11-17 21:43:57 其他开发

是否可以在 Linux 中反汇编运行进程?

要反汇编我使用的程序 objdump -d 工具.是否有可能获得与 objdump 相同的输出,以便在没有 exe 文件的情况下运行进程?我怎样才能用 C 语言从其他程序中做到这一点?我知道存在像 GDB 这样的调试器,但我需要在 C 中使用该功能.由于我的程序,我想获得带有反汇编功能的输出文件以运行进程.我有一个进程的PID.我正在使用 Ubuntu. 解决方案 是否有可能获得与 o ..
发布时间:2021-06-21 19:53:15 其他开发

使用GCC将C编译为32位汇编语言与本书不符

我一直在尝试将此C程序编译为汇编程序,但效果不佳. 我正在阅读Dennis Yurichev初学者反向工程,但我没有得到相同的输出.它是一个简单的hello world语句.我正在尝试获取32位输出 #includeint main(){printf("hello,world \ n");返回0;} 这是书中所说的输出应该是的 主进程附近var_10 = dwo ..
发布时间:2021-05-09 20:54:50 其他开发