
编译原理
文章平均质量分 62
codetracer
学习造轮子
展开
-
ELF和a.out文件格式的比较
本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是对可执行文件格式的一个综述,并通过描述 ELF 文件转载 2012-06-07 00:45:53 · 5025 阅读 · 1 评论 -
ELF文件中section与segment的区别
1. ELF中的section主要提供给Linker使用, 而segment提供给Loader用,Linker需要关心.text, .rel.text, .data, .rodata等等,关键是Linker需要做relocation。而Loader只需要知道Read/Write/Execute的属性。a.out格式没有这种区分。(注意现在使用gcc编译出来的a.out文件只是取该名字而已,文件格式原创 2012-06-12 12:52:49 · 11299 阅读 · 0 评论 -
静态变量、全局变量在ELF文件中的位置
静态变量编译之后,被编译器放到了可执行文件的哪个字段? 以下实验在ubuntu10.04上完成,使用gcc4.4.3。测试源码如下:#include int g_val_init = 45;int g_val_uninit;static int s_global_inited = 12;static int s_global_uninited;stru原创 2012-06-17 22:20:27 · 10674 阅读 · 0 评论 -
HelloWorld... 不用C语言库,不用main函数
1.从程序员的自我修养上摘录的。2.这不是卖弄技巧,这是深入了解链接和编译。开始 使用c语言输出hello world,不用C语言库,不用main函数。怎么做?1. 我们需要printf这样的功能。2. 一段程序需要一个程序入口,C语言默认是main。 有这样的武器:1. GCC支持内嵌汇编。2. 使用汇编直接产生中断,可以使用系转载 2012-06-19 23:27:08 · 3575 阅读 · 1 评论 -
GCC中的堆栈保护技术
原文:GCC 中的编译器堆栈保护技术 CSAPP 第三章的练习3.38,是一个shellcode攻击的例子,下载范例bufbomb.c,编译、执行,运行时都弹出如下信息,始终无法成功执行溢出攻击。原来gcc4.1中默认开启了堆栈保护选项,使用-fno-stack-protector选项,成功堆栈......练习还没有做出来,网上没有gcc版的答案,等汇编能力加强,隔日再战。转载 2012-03-25 17:40:50 · 1759 阅读 · 0 评论 -
GOT(全局偏移表)和PLT(过程链接表)
全局偏移表(GOT)和过程链接表(PLT) ELF 格式的共享库使用 PIC 技术使代码和数据的引用与地址无关,程序可以被加载到地址空间的任意位置。PIC 在代码中的跳转和分支指令不使用绝对地址。PIC 在 ELF 可执行映像的数据段中建立一个存放所有全局变量指针的全局偏移量表 GOT对于模块外部引用的全局变量和全局函数,用 GOT 表的表项内容作为地址来间接寻址;对于本模转载 2012-06-22 17:36:15 · 1288 阅读 · 0 评论