
elf
文章平均质量分 95
不会写代码的丝丽
这个作者很懒,什么都没留下…
展开
-
ELF格式解读-程序头与内存布局
前言ELF格式解读-(1) elf头部与节头我们知道ELF中有一个头部叫程序头,这个头部专门用于将ELF加载内存中使用。参考Why ELF program headers have two LOAD entries, while the program layout three sectionsHardening ELF binaries using Relocation Read-Only (RELRO)[阅读型]CTF中linux pwn的四大基本防御措施Program Header原创 2022-05-02 20:04:59 · 2500 阅读 · 0 评论 -
ELF格式解读 Dynamic节
前言首先抛出一个问题,假设程序A需要动态库中的函数funb,那你你怎么知道这个函数在哪个动态库中?以及我们加载器怎么知道我们是否启用延迟加载还是立即加载?为了解决以上问题ELF推出了一个节名为.Dynamic,里面包含很多信息比如你需要的动态库,以及是否立即加载以及符号表等。在got表的第一项指像.Dynamic,并且延迟绑定那个的时候需要传入.Dynamic对象地址,因为里面包含解析函数地址的上下文。实战我们看看下main的例子//main.c#include <stdio.h>原创 2022-05-01 15:57:04 · 3892 阅读 · 0 评论 -
ELF格式解读-符号表
前言一个优先的symtab文章我们常常调试错误说需要符号表,那么符号表是什么?符号表仅仅用来调试?符号表本质就是一个映射表,举个例子:某行二进制汇编代码映射到源码第几行。符号表的作用:调试重定位调试window工程有一个*.pdb文件,里面编包含调试符号.可参阅wiki window pdb格式。在java工程会使用一个叫混淆的技术,混淆后会生成混淆前后的映射文件mapping.txt,这个也可以理解为符号表的一种。在linux有一个dwarf的文件格式也是专门用于调试的文件。参阅w原创 2022-04-30 14:44:15 · 3972 阅读 · 0 评论 -
通过GDB学透PLT与GOT
前言本文需要基础的ELF格式文件知识。我们知道printf代码的实现位于libc.so中,而我们知道我们的so是在运行通过加载器进行加载的.如下代码所示://编译指令 gcc -o main2.out main2.c -zlazy //zlazy是启用延迟绑定。部分发行版本连接器直接程序加载的时候会进行绑定so函数#include <stdio.h>void main(){ printf("hello %d",23);}ldd命令可以查看程序所需的动态库在so编译原创 2022-04-23 19:08:41 · 2875 阅读 · 1 评论 -
ELF格式解读-(1) elf头部与节头
前言ELF是linux动态库,可执行文件的格式.具体介绍可参阅wiki Executable and Linkable Format。可以类比到windows下exe的格式。我们知道程序需要加载内存后才能运行。但是ELF文件加载到内存后布局会变化和原始ELF文件相比,加载器会将相同的节属性(比如只读)合并一个段。所以ELF也就有了两种视图,一种未加载前静态视图,另一种是加载后的动态视图。我们首先了解静态视图下ELF文件格式如下:你可以把ELF内容大致分为四个部分:(1) ELF头部(2) 节原创 2022-04-20 18:34:08 · 6882 阅读 · 2 评论