elf相关内容

获得sh_name成员节头ELF文件

我试图得到正确的通过访问一个ELF文件的 sh_name 成员偏移的节名,但是它不断给我零,或空.. 我应该只使用的mmap()和 elf.h中 - 没有辅助功能 所以,我所做的: 无效* map_start = MMAP(0,fd_stat.st_size,PROT_READ | PROT_WRITE,MAP_SHARED,FD,0)) 标题=(Elf32_Ehdr *)map_start ..
发布时间:2016-08-21 22:30:55 服务器开发

访问执行过程中.eh_frame数据

我试图从内部访问它 .eh_frame 正在运行的程序的部分内容(具体程序是Linux内核2.6.34.8)。在 .eh_frame 包含用于异常处理有用的数据,我想内核code内内部使用它。本节已经被写了 GCC ( readelf -a vmlinux.o 包含 .eh_frame ),问题是从code阅读。我是pretty确保ELF格式文档说 .eh_frame 为code执行期间访问。 ..
发布时间:2016-08-21 21:55:07 C/C++

怎么样.bss段未初始化为零

因为我们知道.bss段包含未初始化的变量。如果C code,程序设计师在使用前初始化变量。随后的.bss是没有必要执行C $ C $在C之前是零。 我说得对不对? 感谢 解决方案 在C code,具有静态存储持续时间的变量定义在规范中被初始化为0(第6.7.8初始化,第10段) 如果有静态存储持续时间的对象不明确初始化,然后: 如果有指针类型,它被初始化为空指针; 如果有 ..
发布时间:2016-08-21 21:40:27 C/C++

&是什么QUOT; COM"指中的.symtab部分的NDX列?

add2.c: INT计数器= 0; INT A = 0; INT B: INT℃; 加INT(INT A,INT B){ 返回A + B; } 编译: GCC -c add2.c -o add2.o 读取符号表: readelf --symbols add2.o 符号表“的.symtab”包含12个条目: 编号:值大小类型绑定可见NDX名称 0:0 000000 ..
发布时间:2016-08-21 21:13:28 C/C++

修补code /符号成一个动态链接ELF二进制

假设我有一个ELF二进制文件的动态联系,我想重写/重定向某些库的调用。我知道我可以用 LD_ preLOAD 做到这一点,但我想独立于环境的解决方案,在二进制的永久性,而且工程的setuid / setgid的二进制文件,其中没有一个 LD_ preLOAD 可以实现。 我想要做的是从另外的目标文件(可能在新的章节,如果必要的话)从这些目标文件添加code,并添加符号二进制的符号表,这样的新增版 ..
发布时间:2016-08-21 21:00:56 服务器开发

添加部分ELF文件

我需要能够将任意部分添加到一个ELF文件。我无法使用GPL code在这个程序,所以BFD是出了问题。我可以使用libelf函数/ GELF阅读部分,但文档是这些相当稀疏,我无法弄清楚如何添加一个部分。是否有人知道如何做到这一点?我宁愿不写我自己的ELF code。 解决方案 有几个(可能)在有关答案关于ELF文件头这个问题的。使用 objcopy把来的部分添加到一个ELF文件的接受的答案 ..
发布时间:2016-08-19 16:02:19 服务器开发

加载时ELF重

我写Linux下一个简单的用户空间ELF装载机(为什么吗?“有趣的”)。我此刻的加载程序是非常简单,旨在加载包含与位置无关的code只有静态链接的ELF文件。 通常,当一个节目由内核的ELF加载器加载,它被装入其自己的地址空间。这样,数据段和code段可以在如在ELF段指定的正确的虚拟地址被加载 在我的情况,但是,我通过 MMAP ,并要求从内核地址可能会或可能不会得到在ELF段要求的地址。这 ..
发布时间:2016-08-19 15:50:19 服务器开发

拦截ELF加载Linux内核:FS /通过加载内核模块binfmt_elf.c文件

我是新内核编码,并在present我已经过修改一点点对,我需要看一些它的安全目的ELF文件时的自定义栏目标题并提取独特$从它命名为c $ C加密密钥为CPU解密修改ELF的内容。 在present上述逻辑已在 load_elf_binary 函数中实现的 FS / binfmt_elf.c 在内核源​​代码树中的文件,但它是只有约250 code修改的线,我需要重新编译整个内核,所以我期待通过实 ..
发布时间:2016-08-19 13:52:41 C/C++

什么是__gmon_start__象征?

我编译这个code用gcc -o hello.c的-O3你好 的#include<&stdio.h中GT;诠释主要(无效){ 的printf(“世界,你好\\ n”); 返回0; } 当我列出搬迁,我得到:测试@南方公园$ readelf -r招呼| grep的gmon 080495a4 00000106 00000000 R_386_GLOB_DAT __gmon_s ..
发布时间:2016-08-19 13:37:23 服务器开发

正在运行的C程序能够访问自己的符号表?

我有一个处理的请求发送到TCP套接字(绑定到特定端口)的Linux下C程序。我希望能够通过该端口的请求来查询C程序的内部状态,但我不想硬code可以查询哪些全局变量。因此,我希望查询包含全局的字符串名称以及C code查找该字符串了在符号表中找到它的地址,然后发送它的价值又回到了TCP套接字。当然,符号表一定不能被剥夺。因此,可以在C程序甚至找到了自己的符号表,是否有库接口用于查找给予他们的名字的 ..
发布时间:2016-08-19 13:36:27 服务器开发

哪里是在ELF文件的全局变量

近日,我想了解有关ELF文件的一些知识,但是当我遇到全局变量,全局静态变量和范围静态变量,我也有点困惑,例如: int类型的= 2; INT B:静态INT C = 4; 静态INT D组;无效的乐趣(){ 静态INT E = 6; 静态INT F; } 诠释主要(无效){ 有趣的(); } 谁能告诉每个变量属于哪段?在我看来,B,D,F属于BSS段,A,C,E都属于数据段, ..
发布时间:2016-08-19 00:08:06 服务器开发

GCC连接器使用说明文件力的象征是在特定的地址

我对GCC连接器使用说明文件非常具体的问题。我有一个嵌入式项目,必须确保,主符号或主要标志的地址是present在一个特定的地址(ELF文件)。 究其原因是,我有上有一个引导程序的微控制器。启动后该引导程序应调用主程序。出于这个原因,我必须提供开机后跳转到的地址。 有没有使用连接器使用说明文件,以强制符号总是在桌子上或输入地址或可我甚至得到符号的地址以某种方式把它写回的具体位置的方法吗? T ..
发布时间:2016-08-19 00:05:54 C/C++开发

什么是每个CPU拱真正的ELF ABI TLS的要求?

在线程本地存储 乌尔里希Drepper的论文概述了TLS ABI为几个不同的CPU架构,但我中号发现它不足以作为实施TLS的原因有两个基础: 它省略了许多功能,如ARM,MIPS等重要archs(同时还包括像安腾一堆完全无关的那些的) 更重要的是,它混合了很多与ABI实施细则,使之很难说是必需的互操作性哪些属性,哪些只是他实现的各个方面。 作为一个例子,为i386的唯一实际ABI要 ..
发布时间:2016-08-18 23:55:07 服务器开发

使用dlopen编译C程序和-fPIC对dlsym

我有一个关于一个错误的符号解析问题。我的主要程序加载使用dlopen的共享库,并从它的dlsym的象征。无论是程序和库是用C编写 库code int类型的(INT B) { 回报B + 1; }INT℃(中间体D) { 返回(D)+ 1; } 为了使其在64位机器上工作,-fPIC传递编译时与gcc。 该计划是:的#include<&dlfcn.h中GT; #包括LT&;& ..
发布时间:2016-08-18 23:31:37 服务器开发

我如何找出哪些是由程序或其它库所使用的共享对象的功能呢?

我如何找出一个程序或其他图书馆使用的共享对象的哪些功能? 在这种特殊情况下,我想看看哪些功能/lib/libgcc1_s.so.1由一个其他动态库使用。 由于他们是动态链接,objdump的-d不能解决函数调用的地址。 有没有办法在短期调试运行程序或静态重连的? 谢谢, 卢卡 编辑: 纳米和readelf不会做,我不需要看这些符号是一个共享对象present,但实际上是在链接到它的其 ..
发布时间:2016-08-18 22:00:07 服务器开发

漂浮在'点异常(SIGFPE)INT的main(){回报(0); }“

我想建立一个简单的C程序两种不同的Linux环境。在一个设备中的程序运行良好,其他的设备上的程序生成一个浮点异常。该方案不只是从主回0,这使我相信有一些不兼容的初创code也许ABI? 该计划是用gcc编译具有以下规格建造: 使用内置的规格。目标:I386-红帽Linux的配置有: ../configure - preFIX =的/ usr --mandir =的/ usr / shar ..
发布时间:2016-08-18 21:58:13 服务器开发

创建ELF,而不是a.out的

我需要使用gcc来生成一个简单的“Hello World”的ELF32可执行文件。 我似乎不具备GCC精灵命令虽然。 是否有可能再没有编译GCC创建ELF可执行文件,而不是a.out的? (我假设它有可能需要一些选项,但我不确定如何进行) 解决方案 a.out的是很老了,我们正在谈论的内核版本的Linux 1.2。假设你在任何远程最近的Linux平台上运行,你生成默认的ELF可执行文 ..
发布时间:2016-08-18 15:16:02 C/C++

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

目前,我正在做我自己objdump的实施℃。 有关我的-s选项,我必须展示一个ELF文件的节的全部内容。 我做的很好,但我展示比“真正的”objdump的多个部分。 在事实上,它不输出文件的.bss,.shstrtab,和的.symtab部分.strtab 我环顾了SHDR结构的sh_flags价值,但我找不到任何逻辑... 为什么objdump的-s不显示这些板块? 解决方案 ..
发布时间:2016-08-18 14:51:59 C/C++

如何找到一个ELF文件的节头字符串表的偏移量?

我必须写,打印一个ELF文件的C程序。我无法搞清楚节头字符串表。 让我们说我有这给了我下面的输出文件: readelf -h ELF头: 魔:1408米45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 类别:ELF32 数据:2的补,小尾数 版本:1(电流) OS / ABI:UNIX - 系统V ABI版本:0 类型: ..
发布时间:2016-08-18 14:11:58 服务器开发

其中ELF文件的一部分,必须加载到内存?

可执行文件的ELF文件有一个程序(段)报头和节头,可以通过 readelf -a 中可以看出,这里是一个例子: 上面的两张图片分别是节头和程序(段)的头。可以看出,一个段首标是由几个部分标头,其用于装载程序到内存中的 难道仅仅是必要的.text,.RODATA,.data和.bss段被加载到内存? 是否所有在该段中用于对准的其他部分(例如.ctors,.dtors .jcr在第三链段)的 ..
发布时间:2016-08-18 14:04:46 服务器开发