标签: readelf

用于Visual Studio C++ ABI和VS编译对象的readelf实用程序?

我在寻找替代的readelfobjdump二重奏使用Visual Studio编译C++源代码和调查时lib,objdll.

我知道MinGW提供了这个工具的移植,但我正在寻找官方支持Microsoft C++ ABI的东西.

如果这件事,我正在使用Visual Studio 2012.

谢谢.

c++ abi objdump visual-c++ readelf

3
推荐指数
1
解决办法
694
查看次数

readelf 命令中 mips 标志的含义?

我在Linux上执行了命令“readelf -h test”(“test”是我的二进制程序),并得到以下文本:

ELF header:
   Magic:  7f 45 4c 46 ....
   Data:   2's complement, little endian
   ...
   **Flags: 0x1007, noreorder, pic, cpic, o32, mips1**
   ...
Run Code Online (Sandbox Code Playgroud)

您能详细告诉我上面文字中各个标志的含义吗?

我用谷歌搜索过,但找不到答案。任何意见将不胜感激。

linux flags mips readelf

3
推荐指数
1
解决办法
1348
查看次数

括号中的数字在 readelf 输出中意味着什么?

在可执行文件上使用 readelf 时,我在一些符号名称后的括号中得到一个数字。例如:

Num:    Value          Size Type    Bind   Vis      Ndx Name
 49: 00000000002052a0     8 OBJECT  GLOBAL DEFAULT   27 stderr@GLIBC_2.2.5 (3)
Run Code Online (Sandbox Code Playgroud)

(3)在这种情况下,stderr 的符号名称后面有一个。这是什么意思?

linux readelf

3
推荐指数
1
解决办法
503
查看次数

ELF程序标题:MemSiz与FileSiz

readelf -l /bin/bash 给我这个:

程序标题:
  类型偏移VirtAddr PhysAddr
                 FileSiz MemSiz标志对齐
  PHDR 0x0000000000000040 0x0000000000400040 0x0000000000400040
                 0x00000000000001f8 0x00000000000001f8 RE 8
  INTERP 0x0000000000000238 0x0000000000400238 0x0000000000400238
                 0x000000000000001a 0x000000000000001a R 1
      [请求程序解释器:/lib/ld-linux-x86-64.so.2]
  加载0x0000000000000000 0x0000000000400000 0x0000000000400000
                 0x00000000000aeef4 0x00000000000aeef4稀土200000
  加载0x00000000000afde0 0x00000000006afde0 0x00000000006afde0
                 0x0000000000003cec 0x000000000000d3c8   读写200000
  动态0x00000000000afdf8 0x00000000006afdf8 0x00000000006afdf8
                 0x0000000000000200 0x0000000000000200读写8
  注意0x0000000000000254 0x0000000000400254 0x0000000000400254
                 0x0000000000000044 0x0000000000000044 R 4
  GNU_EH_FRAME 0x000000000009dbc0 0x000000000049dbc0 0x000000000049dbc0
                 0x0000000000002bb4 0x0000000000002bb4 R 4
  GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000读写8
  GNU_RELRO 0x00000000000afde0 0x00000000006afde0 0x00000000006afde0
                 0x0000000000000220 0x0000000000000220 R 1

为什么在某些细分市场中MemSiz不等于?包含但不包含的存储区应该怎么办?FileSizLOADMemSizFileSiz

linux elf memory-alignment readelf

1
推荐指数
1
解决办法
952
查看次数

如何从已编译的ELF可执行文件中提取一些函数(无需反汇编)?

我正在处理一个大型可执行文件,我没有源代码(长篇故事).

我想从中提取几个函数的二进制代码 - 并尝试从我自己的程序中调用它们.我正在寻找的函数都是从相同的源文件(在Linux上使用gcc)编译的,如果重要的话.

我可以使用objdump看到函数的二进制代码.有没有什么方法可以说服工具转储函数的二进制代码 - 没有别的东西,没有拆解?

基本上,如果定义函数的C文件被称为foo.c,我想得到foo.o(我实际上更喜欢foo.So,但这不会存在于可执行文件中).可以用objdump,readelf或其他一些方法完成吗?

如果重要的话,这些功能是独立的.

谢谢!

elf objdump readelf

1
推荐指数
1
解决办法
3460
查看次数

如何从给定偏移量的 ELF 文件中提取符号名称

我有一个十六进制偏移量,比如说0xcccddd。使用gdb info symbol 0xcccdddI 可以获得符号名称,例如fn()section_name.

如何使用readelfobjdump命令或任何其他命令而不运行 gdb 来执行此操作?


编辑: 使用以下命令后

objdump -d --start-address 0xcccddd --stop-address 0xcccdde filename.axf
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

filename.axf:     file format elf32-little
objdump: can't disassemble for architecture UNKNOWN!
Run Code Online (Sandbox Code Playgroud)

gdb elf objdump readelf

1
推荐指数
1
解决办法
1911
查看次数

重新定义共享库中的符号

我需要更改共享库 (.so) 文件中的某些符号,如下例所示:我需要将abc.so 文件中的符号重命名为 symbol xyz。我有一个工具可以在头文件中替换它,我面临的唯一挑战是更改我的 .so 共享库。对于共享库,是否有任何工具或命令可以帮助我反汇编 .so 文件、更新符号并再次重新组装为 .so 文件?对于共享库,我们需要一种重建符号表的机制。如果有任何工具可以完成我的任务,需要帮助吗?

仅供参考:更改源是最好的方法,但对于短期的解决方案来说,它可以帮助在符号级别替换代码字。

shared-libraries binutils objcopy readelf

1
推荐指数
1
解决办法
1693
查看次数