elf相关内容

如何更改ELF中的代码段的对齐方式

在ELF二进制中,如何更改可加载段的对齐方式? 在下面的例子中(见右下角),我想将0x200000减少到0x40960。 LOAD 0x000000 0x000000400000 0x0000000000400000 0x000704 0x000704 RE ** 0x200000 ** LOAD 0x000e10 0x000000600e10 0x0000000000600e10 ..
发布时间:2016-11-22 23:40:05 服务器开发

C ++异常和.eh_frame ELF部分

是否是.eh_frame ELF部分的缺失或损坏是我的C ++代码中的异常停止工作的原因?任何以前被成功捕获的异常现在调用std :: terminate()。 我的情况: 我的zzz.so共享库有try-catch块: $ b throw Exc(); } catch(const Exc& e){ LOG(“ok” ..
发布时间:2016-10-31 00:16:54 C/C++开发

我可以从ELF文件中符号表中的符号信息中获取对象名称吗?

我已成功解析从多个源文件编译的elf文件(可执行文件)。我能够获得绑定(局部,全局,弱),类型(对象,文件,节,函数),符号的大小和符号的地址以及符号名称(从字符串表)。 符号链接的部分也是我已知的。 我的问题是,我们可以得到对象文件名( * *。obj),它包含符号表信息中的符号?我在解析时缺少一些信息? 解决方案 您不能直接获取对象文件名,但是,根据用于创建可执行文件的构建 ..
发布时间:2016-10-30 21:42:00 C/C++开发

如何在C ++中找到ELF二进制所需的动态库?

如何获得一个elf二进制在linux使用C ++所需的所有动态库的列表? 一旦我设法从二进制文件中提取信息(文件名?),我可以通过搜索 PATH ,但我没有找到任何有关从ELF二进制文件中提取未解决信息的信息。 想法? 解决方案 您可以调用“readelf -d”程序并解析输出: readelf -d / usr / bin / readelf | grep需要 0x ..
发布时间:2016-10-23 21:01:33 服务器开发

gcc编译的二进制文件有不同的大小?

如果相同的代码是在不同的时间w / gcc构建的,生成的二进制将有不同的内容。好吧,我不是那么疯狂,但这是它是什么。 但是,我最近遇到了一种情况,相同的代码,版本的gcc,是生成一个二进制的大小不同于以前的版本(大约1900字节)。 有没有人知道什么可能导致这些情况?这是一种ELF问题吗?有没有任何工具(除了ldd),可以用于转储二进制文件的内容,看看到底是什么不同? 提前感谢。 ..
发布时间:2016-10-17 09:38:42 服务器开发

编译的C ++类怎么样?

有了汇编指令和C程序的一些背景知识,我可以想象一个编译的函数是什么样子,但很有趣,我从来没有仔细想过一个编译的C ++类是什么样子。 bash $ cat class.cpp #include class Base { int i; float f; }; bash $ g ++ -c class.cpp p> ..
发布时间:2016-10-17 09:38:23 C/C++开发

如何使GCC编译.text节在ELF二进制文件中是可写的?

我想能够动态更改我正在使用的库中的可执行代码。基本上,我想动态NOP某些功能,如果他们不需要。 但是,我使用的库的.text部分是不可写的(大多数程序都是这样)。我有库的源代码,因此希望使用GCC将其编译为可写。 有办法吗? 解决方案 一般意义上, mprotect 是 sys / mman.h 下的选择(在POSIX符合系统上) href =“http://linux.die ..
发布时间:2016-10-14 10:39:00 C/C++开发

.bss段零初始化变量占用elf文件中的空间?

如果我理解正确,ELF文件中的 .bss 部分用于为零初始化变量分配空间。我们的工具链产生ELF文件,因此我的问题: .bss 部分实际上是否必须包含所有这些零?看来这样一个可怕的浪费空间,当我说,我分配一个全局十兆字节数组,它导致在十亿字节的零在ELF文件。我在这里看到了什么错误? 解决方案 但我想我还记得这个东西。不,它实际上不包含这些零。如果你查看一个ELF文件程序头,那么你会看到每 ..
发布时间:2016-10-13 10:54:33 C/C++开发

DSO正在引用的隐藏符号的警告是什么意思?

我有一个链接一些共享库与g ++的问题。它给我一个警告,如: 隐藏的符号XXX在YYY由DSO / usr / lib / ...引用 我已经阅读了一些有关特定问题的相关问题,但我想了解它的整体此警告是什么意思和原因: 什么是DSO? 什么是隐藏 解决方案 什么是DSO? 或更低版本的 共享库 。 / p> ..
发布时间:2016-10-13 10:34:08 C/C++开发

C / C ++与GCC:将资源文件静态添加到可执行文件/库

有人知道如何使用GCC将任何资源文件静态编译到可执行文件或共享库文件中。 例如,我想添加图片文件从不改变(如果他们这样做,我必须替换文件),并且不希望它们在文件系统中。 如果这是可能的(我认为这是因为Visual C ++为Windows也可以做到这一点),如何加载存储在自己的二进制文件?是否可执行程序解析自身,找到文件并从中提取数据? 也许有一个选项GCC我还没有看到。使用搜索 ..
发布时间:2016-10-11 21:08:48 服务器开发

使用LD脚本在精灵的目标设定如何设定切入点

我想用链接脚本到指定入口点到我的ELF文件。我已经定义在我的ELF部分路段,所以要设置一个入口点也withit。谁能告诉我该怎么办呢? 解决方案 有一个特殊(GNU)链接脚本命令设置切入点定符号的地址项(符号)。参阅官方文档。 ..
发布时间:2016-08-24 14:07:58 C/C++

我怎么能编译库的源路径链接到Eclipse中不同的位置?

我已经安装了MSP430-gcc编译器和相关工具的使用Eclipse做一些开源的MSP430开发在家里。我正在开发一个年龄稍大的MacBook Pro的运行OS X Lion的安装和使用的MacPorts的工具。我运行Eclipse 3.7.2与CDT和GCC交叉编译器支持插件。我有一个简单的空的main()撰文指出,编译和链接就好了。 精灵解析器让我查看ELF二进制只是一个组件除外精细的内容; ..
发布时间:2016-08-24 13:11:53 Java开发

VMA和ELF段之间的关系

我需要确定音乐录影带大奖的ELF可执行文件的加载段。 VMA的可以从打印/ proc /进程/图。通过地图可加载段所示的VMA之间的关系也很清楚我的。每个段由一个或多个VMA的。什么是使用的内核从ELF段形成VMA的方法:whteher它只考虑权限/标志或别的东西,还需要?按我的理解,用彩旗段读取,执行(code)将在单独的VMA去有相同的权限。虽然与权限下一段的读,写(数据)应走在其他VMA。但 ..
发布时间:2016-08-23 12:20:37 服务器开发

使文本段可写,E​​LF

我需要一个可执行ELF可写的文本段。 该方案我需要修改是用C语言,我可以编译它。有任何想法吗? 非常感谢。 解决方案 对于下面的答案,我要利用这个测试程序: 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT;INT 主(INT ARGC,字符** argv的) { 的printf(“世界,你好\\ n”); 无效* M =主; * ..
发布时间:2016-08-23 10:55:30 C/C++

提供dladdr犯规返回函数名

我试图使用提供dladdr。它正确地定位在库中,但它没有找到的函数名。我可以打电话给objdump的,做一些数学,并得到了我通过提供dladdr函数的地址。如果objdump的可以看出来,为什么不能提供dladdr? 下面是我的功能: 为const char * funcname的(常量无效* pFunc) { Dl_info DlInfo; INT NRET; //查找给定函数指针的函 ..
发布时间:2016-08-23 10:22:25 服务器开发