zoukankan      html  css  js  c++  java
  • pwn学习日记Day20 《程序员的自我修养》读书笔记

    可执行文件的装载与进程

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

    常见段权限组合:

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

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

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

    知识杂项

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

    参考

    《程序员的自我修养》

  • 相关阅读:
    快速幂取模
    程序人生系列之新闻发布系统 0105
    JavaWeb之博客系统(四)
    [转]树状数组
    题目:免费午餐
    题目:删数问题
    题目:三元组
    题目:分子团
    题目:[汪老师结婚]婚礼上的袭击
    题目:[SBN号码]
  • 原文地址:https://www.cnblogs.com/luoleqi/p/10914564.html
Copyright © 2011-2022 走看看