Linux堆栈溢出的经典问题
Linux堆栈溢出的经典问题
声明:本文章只是我学习的一个记录,有关引用的地方,我都会给出链接的。如果侵犯作者权益,请通知我及时删除。
看了一下,Linux一站式学习的函数调用
,搞的我热血沸腾,立马找你一下这方面的资料看看。终于看到了一个有关Linux堆栈溢出的文章,就拿来试试手了。参考
我的学习linux笔记(一)堆栈
下面来贴一下我的代码吧。基本和上篇文章一样的。
#include<stdio.h>
void attack()
{
int attack=1;
printf("hi,attacked!\n");
}
void yaya()
{
int yaya=1;
printf("hi,yaya is my wife\n");
}
void foo()
{
int c_foo=1;
*(& c_foo +2)=(int)attack;
}
void main(){
int a_main=1;
i=(int)yaya;
foo();
}
BTW,说明一下,我的平台是redhat 9,2.4的核。
直接上图吧:
先来看一下各个函数的反汇编:
main函数的:
yaya函数的:
attack函数的:
foo函数的哦:
好了,下面一一细说了:
函数main:
*(& a_main -1)=(int)yaya;这条语句非常关键,因为
(& a_main -1)地址换成了yaya函数的入口地址,那么
(& a_main -1)原来的是什么呢?
请看图:
我们知道,GCC指针都是4字节对齐的,那么
(& a_main -1)就是地址0xbfffe2d0,里面什么也没有。只是GCC为了16字节对齐原则而空着的。具体可见:X86汇编语言学习手记
顺便说一下,
在执行程序时,操作系统为进程分配一块栈空间来保存函数栈帧,在每个函数的栈帧中,ebp
指向栈底,而esp
指向栈顶,在x86平台上这个栈是从高地址向低地址增长的,我们知道每次调用一个函数都要分配一个栈帧来保存参数和局部变量。(
Linux一站式学习的函数调用
)
下面执行foo函数。
foo函数
:
关键在*(& c_foo
+2)=(int)attack;
它的意思就是
本
来0xbfffe2cc存放的是main返回的地址0x0804839f,但是改为attack函数的入口地址0x08048328。
这样就会导致main函数返回时,跑到attack函数继续执行。
好了,foo函数执行完了,ESP依次出栈,就到了
attack函数的入口地址0x08048328。
就attack函数执行完毕以后,此时的ESP就为
地址0xbfffe2d0,回想一下,这
地址0xbfffe2d0里面是什么?
对了,就是yaya函数的入口地址。
那么接下来,就是执行yaya函数了。
那么yaya函数执行完以后,接下来,该怎么办么?
由于main函数丢失了返回地址,导致main函数无法返回
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
如何在linux开机时自动启动smb共享服务?
方法1:ntsysv,有界面,选中samba服务即可
方法2. chkconfig --add smb
[root@test ~]# chkconfig --add smb
[root@test ~]# chkconfig --list smb
smb ......
下载ntfs-3g
http://www.ntfs-3g.org/
ntfs-3g依赖FUSE(Filesystem in Userspace)
先处理依赖
下载FUSE
http://fuse.sourceforge.net/
编译FUSE
> ./configure
> make
> make install
编译ntfs-3g
vi 解压后的目录/src/secaudit.c
查找#include <attr/xattr.h>
替换为#include <l ......