相关疑难解决方法(0)

如何仅提取ELF部分的原始内容?

我尝试了以下内容,但生成的文件仍然是ELF,而不仅仅是部分内容.

$ objcopy --only-section=<name> <infile> <outfile>
Run Code Online (Sandbox Code Playgroud)

我只想要该部分的内容.有没有可以做到这一点的实用工具?有任何想法吗?

linux shell elf binutils

24
推荐指数
3
解决办法
3万
查看次数

为什么objdump不显示.bss,.shstratab,.symtab和.strtab部分?

我目前正在C中执行自己的objdump实现.

对于我的-s选项,我必须显示ELF文件部分的全部内容.

我做得很好,但我显示的部分比"真正的"objdump更多.

实际上,它不会输出.bss,.shstrtab,.symtab和.strtab部分.

我正在环顾Shdr结构上的sh_flags值,但我找不到任何逻辑......

为什么objdump -s没有显示这些部分?

c elf objdump

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

检查是否使用"-static"编译的二进制文件

我在linux中有一个二进制文件.如何检查是否已使用"-static"编译?

linux static gcc

11
推荐指数
3
解决办法
7457
查看次数

在哪里可以找到在我的C程序的.data部分中创建静态变量的程序集?

第一次海报.第二年CS学生.

我正在探索在C源代码 - > GCC编译 - > Linux执行环境的上下文中虚拟地址空间的.data部分中创建静态变量.

C程序是test.c

int main()
{
   register int i = 0;
   register int sum = 0;
   static int staticVar[10] = {1,2,3,4,5,6,7,8,9,-1};
   Loop: 
        sum = sum + staticVar[i]; //optimized away
    i = i+1;
    if(i != 10)
    goto Loop; 
   return 0;
 }
Run Code Online (Sandbox Code Playgroud)

要求GDB' disass /m'显示staticVar []创建没有代码,因为检查.s文件会显示变量驻留在创建进程时放置在那里的虚拟地址空间的读/写.data段中(这个过程是我感兴趣的).

检查(我虽然它是' readelf -A test.o')的输出,目标文件包含我假设在数据段中创建数组的程序集.这是ELF输出.

(如果你可以告诉我什么命令生成这个输出,我可以使用readelf来复制它.我从网站上获取命令并保存输出.我不记得是如何生成的)

[剪断]

    00000000 <staticVar.1359>:
   0:01 00                  add    %eax,(%eax)
   2:00 00                  add    %al,(%eax) 
   4:02 00                  add    (%eax),%al
   6:00 00                  add    %al,(%eax)
   8:03 00                  add    (%eax),%eax …
Run Code Online (Sandbox Code Playgroud)

c virtual static gdb execve

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

标签 统计

c ×2

elf ×2

linux ×2

static ×2

binutils ×1

execve ×1

gcc ×1

gdb ×1

objdump ×1

shell ×1

virtual ×1