前言: 熟悉elf文件结构是一件很不错的事,因为安卓中的so加固以及修复都是需要这些知识的,包括pwn里面的rop之类的,也都是 和got节,plt节息息相关的,个人建议是在搞懂elf文件结构后,自己实现一个解析器,把注释写好,方便忘了再进一步重温,写的不好 见谅. 一. elf文件概述 elf文件包括了可执行文件,共享文件,目标文件这三类,其中安卓中涉及到的就是so文件,这个其实就是一个共享文件,类似 windows上的dll文件,目标文件是汇编文件,后缀为.o的文件,与可执行文件不同的是,并…
ELF文件结构 ELF文件的全称是Executable and Linkable Format,直译为"可执行可链接格式",包括目标文件(.o).可执行文件(可以直接运行).静态链接库.动态链接库.核心转储文件(core dump).ELF文件的定义可以在/usr/include/elf.h中找到,本文主要介绍ELF64,ELF文件通常由下列部分组成: ELF头(ELF header):放在ELF文件开头,描述该文件信息. 节头表(Section header table):包含对节(…
17.1.4  节表和节 从排列位置来看,PE文件在DOS部分和PE文件头部分以后就是节表和多个不同的节(如图17.1中的③和④所示).要理解什么是节表,什么是节以及它们之间的关系,那就首先要了解Windows是如何将PE文件映射到内存的. 1. PE文件到内存的映射 在执行一个PE文件的时候,Windows并不在一开始就将整个文件读入内存,而是采用与内存 映射文件类似的机制,也就是说,Windows装载器在装载的时候仅仅建立好虚拟地址和PE文件之间的映射关系,只有真正执行到某个内存页中的指令或…
ELF目标文件格式最前部ELF文件头(ELF Header),它包含了描述了整个文件的基本属性,比如ELF文件版本.目标机器型号.程序入口地址等.其中ELF文件与段有关的重要结构就是段表(Section Header Table) ELF文件格式 可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 共享…
.plt的作用是一个跳板,保存了某个符号在重定位表中的偏移量(用来第一次查找某个符号)和对应的.got.plt的对应的地址 .rel.dyn重定向表,在程序启动时就需要重定位完成. .rel.plt保存了重定位表的信息,可以使用lazy的连接方式 .got据说是保存了elf文件本身的各个符号的偏移量,即不要动态链接,未证明 .got.plt保存了重定位地址. 比如printf是一个重定位符号,需要连接该符号时过程是这样: main函数call  .plt段中的一个地址,这里的第一句话就是调转到.…
ELF目标文件格式的最前部是ELF文件头.包含了整个文件的基本属性.比如ELF文件版本,目标机器型号,程序入口地址等.然后是ELF的各个段,其中ELF文件中与段有关的重要结构就是段表.段表描述了ELF文件包含的所有段的信息,比如每个段的段名,段的长度,在文件中的偏移,读写权限及段的其他属性. 一 文件头; 通过readelf命令来详细查看ELF文件的头信息: root@zhf-maple:/home/zhf/c_prj# readelf -h main.o ELF 头: Magic:   7f …
JavaScript,理解JavaScript库 学习要点: 1.项目介绍 2.理解JavaScript库 3.创建基础库 从本章,我们来用之前的基础知识来写一个项目,用以巩固之前所学.那么,每个项目为了提高开发效率,我们需要创建一个库来存放大量的重复调用的代码.而在这里,我们需要理解一些知识. 一.项目介绍 在现在流行的网站中,大量使用前端的Web应用,估计就是博客系统了.博客系统目前主要分为两种,一种是博客,一种是微博(一句话博客). 不管在博客和微博,都采用的大量的JavaScript特效…
Vue-cli2.0 第3节 解读Vue-cli模板 目录 Vue-cli2.0 第3节 解读Vue-cli模板 第3节 解读Vue-cli模板 1. npm run build命令 2. main.js文件解读 3. router/index.js 路由文件 4. HelloWorld.vue文件解读 第3节 解读Vue-cli模板 了解一下Vue-cli的模板操作,包括增加模板.修改模板,以及一个常规模板的基本结构. 1. npm run build命令 npm run build命令就是把…
本篇文章主要介绍了"Android C语言_init函数和constructor属性及.init/.init_array节探索",主要涉及到Android C语言_init函数和constructor属性及.init/.init_array节探索方面的内容,对于Android C语言_init函数和constructor属性及.init/.init_array节探索感兴趣的同学可以参考一下. 了解C语言的程序猿都知道有两种方法可以让一部分代码在so或可执行文件被加载的时候先于其它任何函…
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78818917 一.Android so库文件的节表secion修复方案整理 1.简单粗暴的so加解密实现 https://bbs.pediy.com/thread-191649.htm             2. ELF section修复的一些思考 https://bbs.pediy.com/thread-192874.htm             3. 从零打造简单的SO…