11 运行库

来源:互联网 发布:淘宝网店转让 编辑:程序博客网 时间:2024/05/17 06:09

本章从程序创世开始,接触到程序背后另一类默默服务的团体,它们能够使得程序正常启动,使得我们熟悉的函数发挥作用,它们就是程序的运行库。
11.1入口函数和程序初始化
11.1.1程序从main开始吗
这里写图片描述
11.1.2入口函数如何实现
glibc的程序入口为_start:
这里写图片描述

ebp设为0正好可以体现出这个最外层函数的尊贵地位

pop esi及mov esp,ecx;调用_start前,装载器把用户参数和环境变量压入栈;按照压栈方法,实际栈顶元素是argc,而接着是argv和环境变量的数组。下图给出栈布局,虚线箭头是执行pop esi之前的栈顶:
这里写图片描述
三条指令后,esi、ecx分别指向argc和argv及环境变量数组。
实际执行代码的函数是__libc_start_main:
这里写图片描述
这里写图片描述
这里写图片描述

原创粉丝点击