11 运行库

本章从程序创世开始,接触到程序背后另一类默默服务的团体,它们能够使得程序正常启动,使得我们熟悉的函数发挥作用,它们就是程序的运行库。
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:
这里写图片描述
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值