
elf
狼群一一先锋
他日仙界如相见,一声道友尽沧桑。
展开
-
2——man elf的翻译——Program header (Phdr)
Program header (Phdr) program header 是一个 array of structures,每一个描述了 a segment 或者是系统需要的程序执行的信息。 一个 object 文件的 segment 包含一个或几个 sections。program header 只有在 executable 和 shared object file 中才有...翻译 2019-03-25 10:18:56 · 1020 阅读 · 0 评论 -
readelf——2—— -h --file-header Display the ELF file header
-h显示文件头应该是最简单的一个参数,我想没有之一了,只有下面这一点点的输出:ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's co...原创 2019-04-16 20:54:51 · 223 阅读 · 0 评论 -
readelf——1——环境搭建(编译)
上一个阶段翻译完了man elf,下面准备学习一下readelf,addr2lime,objdump等elf相关工具。之所以从readelf入手,是因为我感觉它最合适吧,原因也不清楚,因为哪个工具我都谈不上精通,选择一个马上行动才是最重要的。学习readelf,当然要知道它是从哪里来的。不是这个计划我真的不知道它们这些神秘的神器是来自哪里,linux内核是没有它们源码的。它们都是来自binut...原创 2019-04-16 20:40:46 · 652 阅读 · 0 评论 -
关于sizeof()使用的另外一种写法—— sizeof * 变量
今天在阅读代码的时候再次遇到了sizeof()的另外一种使用方法,然后自己进行了尝试,现在也仅仅是知道含义,深层次的含义此刻并不得而知,如果读者您知道,希望您能评论一下,谢谢。在readelf源码中有get_64bit_section_headers()这样一个函数,里面在进行长度比较的时候有下面这样的一段代码:Elf64_External_Shdr * shdrs;Elf_Inte...原创 2019-04-16 20:20:11 · 465 阅读 · 0 评论 -
6——man elf的翻译——重定位条目 (Relocation entries(Rel & Rela))
重定位是一种用符号定义连接符号引用的过程。可重定位文件必须拥有描述如何去修改它们section contents的信息,好让 可执行或共享目标文件保存程序镜像的正确信息。可重定位条目就是这些数据。 重定位结构不需要附加信息: typedef struct { Elf32_Addr r_offset; uint32...翻译 2019-04-03 10:23:50 · 1166 阅读 · 0 评论 -
3——man elf的翻译——Section header (Shdr)
Section header(Shdr) 通过section header table能够定位文件所有的section。section headertable 的格式是Elf32_Shdr或者Elf64_Shdr。 ELF header 的e_shooff字段是section header table从文件开始位置的偏移量。e_shnum是section header tables...翻译 2019-03-29 09:24:10 · 311 阅读 · 0 评论 -
5——man elf的翻译——字符串和符号表 (String and symbol tables)
字符串和符号表 string table sections保存的是以NULL结尾的字符串序列,通常叫做strings。目标文件使用这些字符串去代表符号和节名字。它们 中的一个字符串被用作到string table section的索引。其中第一个字节,也就是索引号位0的,被赋值‘\0’。同样的,一个字符串表 的最后一个字节也被赋值‘\0’,确保是以NULL结尾。 ...翻译 2019-04-02 09:40:15 · 574 阅读 · 0 评论 -
4——man elf的翻译——所有Sections说明
各种各样的sections保存了程序和控制信息: .bss 此节保存的是contributes to the program's memory image的未初始化的数据。当然,程序运行起来之后, 系统会把这些数据初始化为零。此节的类型是SHT_NOBITS。参数类型是SHF_ALLOC和SHF_WRITE。 ...翻译 2019-04-01 10:13:53 · 258 阅读 · 0 评论 -
8——man elf的翻译——Notes (Nhdr)
Notes (Nhdr) ELF notes允许附加任意信息供系统使用。它们大部分情况是被内核文件使用(e_type of ET_CORE), 但是很多projects定义它们自己的扩展。例如,GNU tool chain使用ELF notes将信息从链接器 传递到C库。 Note sections 包含一系列的notes(请看下面的定义)。Ea...翻译 2019-04-05 13:58:07 · 519 阅读 · 0 评论 -
7——man elf的翻译——动态标签 (Dynamic tags(Dyn))
.dynamic section保存的是一系列和动态链接相关的结构。d_tag成员控制着d_un结构体的内容。 typedef struct { Elf32_Sword d_tag; union { Elf32_Word d_val; Elf32_Addr ...翻译 2019-04-05 10:54:56 · 604 阅读 · 0 评论 -
8——Linux二进制分析——学习——读完
用了今天一上午把剩下的两章半读完了,内存取证,作者开发的ecfs,还有kernel取证。现在感觉这本书读完前五章就可以了,后面的大概看看就行。介绍ptrace那一章才是最有用的部分,还算是扩展了一下我的视野。其他的我可以概况为两部分,一部分是作者的自我吹嘘,介绍自己开发的几个工具占用的篇幅太大。另一部分是就是一些简单的科普知识,指一个大概思路。书中提到了很多的工具源码路径,如果能研究一到两个肯...原创 2019-03-30 11:55:26 · 373 阅读 · 0 评论 -
1——man elf的翻译——ELF header (Ehdr)
学习ptrace,学习linux本质,elf是无法绕开的一个基础知识。所有的网上知识都没有man elf来的准确和优秀,唯一艰难的一点就是英文。这么多年,我也没在网上找到一个翻译版本,所以我觉得好好阅读一下,并用自己的话翻译出来于大家分享是一件不错的事情。抽空我会进行翻译和更新。在翻译结束之前就暂时不排版了,等都结束了,我会再汇总,认真设计一下结构。名字 elf——可执行和链接格式文件...翻译 2019-03-19 09:53:14 · 758 阅读 · 0 评论 -
动态库链接静态库遇问题
问题liba.so的编译依赖libb.a,链接后正常编译通过。运行加载liba.so的时候报找不到函数int c(int d ).原因原因现在讲不清楚,只知道和链接,地址,程序执行过程有关。解决在编译libb.a的时候加上 -fPIC 选项(编译为位置独立(地址无关)的代码)这篇博客写的挺好的其他ldd -r liba.so | grep c 和nm liba.so ...原创 2019-07-24 20:39:04 · 1161 阅读 · 0 评论