【发布时间】:2020-02-19 07:25:16
【问题描述】:
我在Linux上工作,刚刚听说有一个命令objcopy,我在我的x86_64 PC上找到了相关命令:x86_64-linux-gnu-objcopy。
在它的帮助下,我可以将文件转换为 obj 文件:x86_64-linux-gnu-objcopy -I binary -O elf64-x86-64 custom.config custom.config.o
文件custom.config 是人类可读的文件。它包含两行:
name titi
password 123
现在我可以执行objdump -x -s custom.config.o 来查看它的信息了。
custom.config.o: file format elf64-little
custom.config.o
architecture: UNKNOWN!, flags 0x00000010:
HAS_SYMS
start address 0x0000000000000000
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000017 0000000000000000 0000000000000000 00000040 2**0
CONTENTS, ALLOC, LOAD, DATA
SYMBOL TABLE:
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 g .data 0000000000000000 _binary_custom_config_start
0000000000000017 g .data 0000000000000000 _binary_custom_config_end
0000000000000017 g *ABS* 0000000000000000 _binary_custom_config_size
Contents of section .data:
0000 6e616d65 20746974 690a7061 7373776f name titi.passwo
0010 72642031 32330a rd 123.
众所周知,我们可以在任何 C/C++ 项目中打开、读取或写入文件,例如 custom.config。现在,我在考虑是否可以在 C/C++ 项目中立即使用这个 obj 文件 custom.config.o。例如,是否可以在不调用 I/O 函数的情况下立即读取文件custom.config.o 的内容,例如open、read 或write。如果可能的话,我认为这可能会成为某种硬编码风格并避免调用 I/O 函数?
【问题讨论】:
标签: c linux linker objdump objcopy