计算机如何工作续函数调用堆栈_第1页
计算机如何工作续函数调用堆栈_第2页
计算机如何工作续函数调用堆栈_第3页
计算机如何工作续函数调用堆栈_第4页
计算机如何工作续函数调用堆栈_第5页
已阅读5页,还剩28页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FoundationsForHackingLinuxbasedonX86/Linux::mengning@地址:苏州工业园区独墅湖高等教育区仁爱路188号思贤楼504 低地esp,堆栈指针(stackebp,基址指针(base

cseip跳转/分支:执行这样的指令的时候,cseip的值会call:将当前cseip的值压入栈顶,cseip指向被调用函数的地址ret:从栈顶弹出原来保存在这里的cseip的值,放入cs:eip中…call…址A保存在栈顶

pushl%ebpmovl%esp,//do…movl%ebp,%esppopl%ebpcall执行call时,cs:eip原来的值保存到栈顶,然后cseip的值指向xxx的地址进入pushlmovl%espmovlpopl

cscs:首先使用gccg生成test.c的可然后使用objdump–S获得intp2(intx,int{return}

movlmovl%ebp,%esp

…pushl0xfffffff8(%ebp)pushl0xfffffff4(%ebp) 804839b<p2> pushl0xfffffff8(%ebp)pushl0xfffffff4(%ebp)pushl0xfffffffc(%ebp)push$0x8048510 …

int{ charc='a';

在这个小程序中,main函数中调用了函数p2,而在p2的执行

……

cc ludeint{}

/*val1+val2=val3*/unsignedintval1=1;unsignedintval2=2;unsignedintval3=asmvolatile("movl$0,%%eax\n\t"/*clear%eaxto0*/"addl%1,%%eax\n\t"/*%eax+=val1*/"addl%2,%%eax\n\t"/*%eax+=val2*/"movl%%eax,%0\n\t"/*val2=%eax*/:"=m" /*output=mmeanonlywriteoutputmemory:"c"(val1),"d" /*inputcordmeanreturn0;int(*f)(intx);/*一个函数指针f=func;/*将func函数的首地址赋给指针f时,就说这是回调函数。void(*funcp)();voidFileFunc();voidEditFunc();{

void{}void{}}在高执行级别下,代码可以执行指令,inx86CPU有四种不同的执行级别0-3,Linux只使用了其中的0级和3级分别来表示内核态和用态下都可以 复现场就是 中断程序恢复保存寄存器的数据, 而是通过中断/异常/系统调用(也只能为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论