elf相关内容
在一个C程序进行编译和创建目标文件(ELF)。目标文件中包含不同的部分,如BSS,数据,文字等段。我理解的是,ELF的这些部分是虚拟内存地址空间的一部分。我对吗?请纠正我,如果我错了。 此外,将有与编译程序相关联的虚拟存储器和页表。页表加载程序时,在ELF虚拟内存地址present关联到真实的物理内存地址。是我的理解是否正确? 我看了,在创建ELF文件,BSS部分只是保持未初始化的全局
..
我最近针对建设x86-64架构有一定的共享库(ELF),像这样的: G ++ -o binary.so -shared --no-不确定... -lfoo -lbar 这失败,出现以下错误: 创建共享对象时对`局部符号“搬迁R_X86_64_32不能使用;与-fPIC编译 当然,这意味着我需要重建它作为独立的位置code,所以它适合用于链接到共享库。 但是,这工作得很好在x86上
..
所以,我有以下程序: INT的main(){ 字符*一=“电脑”; 烧焦2个[] =“另一个”; 有2个[1] ='B'; [1] ='B'; 返回0; } 它出现segfaults,因为,要必须在读取内存指针“一”点只读存储器这是有道理的行“[1] ='B'。”然而,问题是为什么不就行“两[1] ='B'”段错误?纵观汇编输出从GCC: .file“one.c”
..
得到了下面的错误,当我试图编译在64位的FreeBSD C应用程序: 创建共享对象时 搬迁R_X86_64_32S不能使用;与-fPIC编译 什么是 R_X86_64_32S 搬迁的,什么是 R_X86_64_64 ? 我GOOGLE了有关该错误的,它是可能的原因 - 这将会是巨大的,如果有人能告诉什么R_X86_64_32S的真正含义。 解决方案 的 R_X86_64_3
..
我试图加载PHP扩展(sdo.so),但我收到以下错误,当我尝试运行XAMPP。 PHP的警告:PHP启动:无法加载动态库'/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/sdo.so' - /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/sdo.so:错ELF类:E
..
从的移植可执行的和Windows产品,我想创建一个小的 ELF 可执行文件的 NASM 的中的的Linux(Ubuntu的AMD64) 的。我的小件code看起来是这样的: 位64 ;其中的可执行文件链接默认的虚拟地址 _START_VAD EQU为0x400000;在这里,我通过写字节的头字节 ELF_HEADER: .ident_magic DB 0x7F的,“ELF” .i
..
我怎样才能得到全部是用C ++在linux的ELF程序所需的动态库的列表? 有一次,我已经成功地提取二进制我可以通过在 PATH 搜索找到实际的文件中的信息(文件名),但我一直没能够找到关于从ELF二进制提取重整的信息的任何信息。 思考? 解决方案 您可以拨打“readelf -d”程序,并解析输出: readelf -d的/ usr / bin中/ readelf | grep的
..
什么是转换PE二进制文件的ELF可执行文件的最佳工具? 下面是此问题的一个简短的动机: 假设我有一个简单的C程序。 我用它GCC为Linux(这给ELF),并使用“i586的-mingw32msvc-GCC”的Windows(这给出了一个PE二进制)编译。 我要分析这两个二进制文件相似,使用Bitblaze的静态分析工具 - 藤( HTTP: //bitblaze.cs.berkele
..
我的意思是可以在Win32和Linux的I386一个二进制文件运行? 解决方案 这是不可能的,因为这两种有冲突的格式: PE文件的最初两个字符必须是'M''Z'; ELF文件的最初四个字符必须是'\\ 0x7F部分''E''L''F'。 显然,你不能创建一个文件,该文件satisifies这两种格式。 在回答关于一个通晓多国语言的二进制既是一个16位的COM文件和一个Lin
..
作为一个具体的例子,天然气2.24,动地址: MOV $ S,%EAX 小号: 在作为--64 -o a.oA.Ş objdump的-Sr a.o 使用零扩展: 0000000000000000< S-0x5的计算值: 0:B8 00 00 00 00 $ MOV为0x0,%eax中 1:R_X86_64_32的.text
..
我在Linux环境下,我需要做检索一些数据被放置在其部分之一的程序。因此,如何从自身取得的指针的节目的部分(通过它的名字)? 我知道这是可能使用 elf_getdata()传递部分作为参数的索引来获取和 Elf_Data 结构和这个结构的领域之一是 d_buf ,这是一个指向实际的数据。然而,似乎在 elf_getdata()功能使部分数据的副本从文件到记忆这不是我想要的。我想的指针的数据已经被
..
我得到readelf -h入口点: 入口地址:0x8048400 用GDB进行调试和Intel语法: (GDB)X / 13I 0x8048400 0x8048400< _start计算值:XOR EBP,EBP 0x8048402< _start +2 ;:流行ESI 0x8048403&所述; _start +3 ;: MOV ECX,尤 0x8048405<
..
我玩弄操纵二进制的通话功能。我有以下code: 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT; #包括LT&;&string.h中GT;无效myfunc2(字符* STR2,字符* STR1); 在此输入code无效MYFUNC(字符* STR2,字符* STR1) { 的memcpy(STR2 +的strlen(STR2),STR1,
..
ELF文件的静态链接 和目前objdump的输出是一样的东西: 部分拆卸:.init:XXXXXX.PLT:部分拆卸:XXXXXX的.text:部分拆卸:XXXXXX 基本上是我想要实现的是 “ELF文件 - (由objdump的反汇编) - >文件汇编 - (重新编译) - > 相同的功能” 我不需要重新编译的二进制文件的二进制内容和原来一样的,唯一的相同的功能就足够了。 快速搜索后,基
..
我跟一个可执行建立我自己的运行环境玩弄了,我不能让铛(v3.4-1ubuntu1,目标:x86_64的-PC-Linux的GNU),以产生不可执行段错误。我已经减少该问题为以下: 如果我有一个文件crt1.c,什么也不做,除了满足对_start符号链接要求: 无效 _start(字符*参数,...) { } 然后我用铛-nostdlib crt1.c ,它产生以下可执行文件(从 objdu
..
我写了一个小程序添加到整数,并使用“readelf -a executable_name”这表明入口点地址ELF头为: 入口地址:0x8048330 我的可执行文件是如何知道这个地址预先加载器加载到内存中甚至在? elf_format.pdf说,这成员给出了虚拟地址到系统首先将控制权转移,从而启动进程。任何人都可以请解释什么是这句话的意思,什么是这里的虚拟地址的意义? 也让我知道了,从哪里
..
有大量的PE文件浏览器。这是好的清单如果你有兴趣: PE文件格式的观众: 体育总管 http://www.pe-explorer.com/ PE观点: http://www.magma.ca/~wjr/ PEBrowse专业
..
我在术语混淆不大。 这是作为输入到链接器的文件被称作对象文件。 链接器生成一个图片文件,而这又是用作加载程序的输入。 我得到这个从“MS PE&放大器; COFF规范” Q1。图片文件也被称为二值图像,二进制文件或只是二进制。对? Q2 因此,根据上述术语中,PE / ELF / COFF是的的格式图像文件的&放大器。不是的目标文件。的吧?但是,
..
我试图加载在64位x86环境的Linux上,“GCC -m32 test.c的-o test.exe的”编译的ELF文件。我试图加载它具有以下核心逻辑(32位ELF)的用户空间ELF加载器内部的32位文件(test.exe的):= 问题是调用到在返回的起始地址的结果 分割故障核心转储。这里是code:= 无效* image_load(字符* elf_start,无符号整型大小) { Elf
..
在程序启动(Linux中,小精灵) - 有在 EAX , EBX 零等,或有可以是任何东西(我没有做任何电话或使用的extern libraryies)?在我的机器真是这样,我可以这样写行为ASM programms的时候继电器? 解决方案 这在ABI完全取决于每个平台。既然你提到 EAX 和 EBX 让我们来看看有什么针对x86的情况。在 FS / binfmt_elf.c 线#972,
..