可执行文件的装载与进程

覆盖装入和页映射是两种典型的动态装载方法
进程建立的三步
1.创建一个独立的虚拟地址空间
2.读取可执行文件头,并且建立虚拟空间与可执行文件的映射关系。
3.将CPU的指令寄存器设置成可执行文件的入口地址,启动运行。

常见段权限组合:

  • 以代码段为代表的权限为可读可执行段
  • 以数据段和BSS段为代表的权限为可读可写段
  • 以只读数据段为段表的权限为只读的段

操作系统通过给进程空间划分出一个个VMA来管理进程的虚拟空间:
基本原则就是将相同权限属性的、有相同映像文件的映射成一个VMA,一个进程基本可以分为如下几种VMA区域:

  • 代码VMA:权限只读、可执行;有映像文件。
  • 数据VMA:权限可读写、可执行;有映像文件。
  • 堆VMA:权限可读写、可执行;无映像文件,匿名,可向上扩展。
  • 栈VMA:权限可读写、不可执行;无映像文件,匿名,可向下扩展。

知识杂项

  • Linux malloc最大申请空间2.9G左右,Windows malloc最大申请空间1.5G左右。

参考

《程序员的自我修养》

pwn学习日记Day20 《程序员的自我修养》读书笔记的更多相关文章

  1. pwn学习日记Day19 《程序员的自我修养》读书笔记

    windows PE/COFF章总结 本章学习了windows下的可执行文件和目标文件格式PE/COFF.PE/COFF文件与ELF文件非常相似,它们都是基于段的结构的二进制文件格式.Windows下 ...

  2. pwn学习日记Day21 《程序员的自我修养》读书笔记

    Linux内核装载ELF过程 (1)bash进程调用fork()系统调用创建一个新的进程 (2)新的进程调用execve()系统调用执行指定的ELF文件,原先的bash进程继续返回等待刚才启动的新进程 ...

  3. 程序员的自我修养(2)——计算机网络(转) good

    相关文章:程序员的自我修养——操作系统篇 几乎所有的计算机程序,都会牵涉到网络通信.因此,了解计算机基础网络知识,对每一个程序员来说都是异常重要的. 本文在介绍一些基础网络知识的同时,给出了一些高质量 ...

  4. gcc ld 链接器相关知识,调试指令(程序员的自我修养----链接、装载与库)

    最近解决一个动态链接上的问题,因为以前从来没有接触过这方面的知识,所以恶补了一下,首先要了解gcc编译指令(makefile),ld链接器的选项(还有连接脚本section指定内存位置),熟悉查看连接 ...

  5. 第八周读书笔记(人月神话X月亮与六便士)——到底什么才是一个程序员的自我修养?

    写了这么久的读书笔记,涉及到问题大多是一些如何把软件工程做好,如何把自己的职业生涯做好.但总感觉逻辑链上缺了一环,亦即:我们为什么要把软件工程做好,我们成为一名优秀的职业生涯的意义到底在于什么?我觉得 ...

  6. 《程序员思维修炼》读书笔记——week4

    <程序员思维修炼>读书笔记——week4 PB16061441 陈昶金 这周读的是Andy Hunt的著作<程序员思维修炼>,这本书对于我这种刚刚入门的新手很友好,大多是讲一些 ...

  7. pwn学习日记Day18 《程序员的自我修养》读书笔记

    知识杂项 obj文件:当前源代码编译成二进制目标文件 exe文件:将.obj文件与库文件.lib等文件链接生成的可执行文件 一个现代编译器的主要工作流程如下: 源程序(source code)→ 预处 ...

  8. Java程序员的自我修养

    一.自我修养路线图 如图,这是笔者所走的路.且不论这路走的对不对,这个过程中行业环境会影响到你,大可不必钻牛角尖.附上这张图的目的是为了说,如果你想成为一个优秀的程序员,那么你一定要有规划.当然,别想 ...

  9. iOS程序员的自我修养之道

    新技术的了解渠道 WWDC开发者大会视频 官方文档 General -> Guides -> iOS x.x API Diffs 程序员的学习 iOS技术的学习 官当文档 Sample C ...

随机推荐

  1. ubuntu16.04安装aquatone

    很坑   网上的那些教程 不知道怎么搞得....  误人子弟 首先 一台服务器  ubuntu16.04 首先aquatone   github  https://github.com/michenr ...

  2. buffers和cached

    buffers和cached是为了提高数据访问性能,减少对磁盘的I/O操作 buffers 用来给块设备做的缓冲大小 例如,目录内容,权限 cached 用来给文件做缓冲 例如,打开的文件 测试 先后 ...

  3. MVC方式使用EasyUI - 搭建环境

    _Layout.cshtml <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Typ ...

  4. Maven 三种archetype说明--转载

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 原文链接:https://blog.csdn.net/cx1110162/article/deta ...

  5. You're currently running Fcitx with GUI 错误解决 Fcitx

    在英文版ubuntu配置输入法时,点击 Configure Current Input Method 会报以下的错误: You’re currently running Fcitx with GUI, ...

  6. skeleton directory: /etc/skel

    第一次接触这个词汇 还是在LFS8.2里面,感觉有点吓人.好好一个计算机操作系统,怎么搞出这个恐怖的术语.... 当使用useradd 或者其他命令创建用户的时候,/etc/skel这个目录下的文件. ...

  7. php curl请求接口并获取数据

    当我们在做php开发的时候,很多时候需要对接口进行测试,或者更方便的调用一些已有模块的接口,取到结果并进行后续操作,我们可以通过curl进行模拟提交post和get请求,来去实现这些功能. 下面是对c ...

  8. Mybatis在xml文件中处理大于、小于、不等于号的方法

    在mapper.xml使用大于.小于等符号会和xml语法冲突,解决冲突有两种方式. 方法一: 使用转义字符: 字符名称 字符符号 转义字符 大于号 > > 小于号 < < 与 ...

  9. Kostya the Sculptor(贪心

    这题本来  想二分.想了很久很久,解决不了排序和二分的冲突.     用贪心吧.. 题意: 给你n个长方形,让你找出2个或1个长方体,使得他们拼接成的长方体的内接球半径最大(这是要求最短边越大越好)( ...

  10. Paper Reading:HyperNet

    论文:HyperNet: Towards Accurate Region Proposal Generation and Joint Object Detection 发表时间:2016 发表作者:( ...