缓冲区溢出解密一
互联网 发布时间:2008-10-08 19:04:09 作者:佚名 我要评论
缓冲溢出弱点诞生于70年代。Morris Worm(80年代)可以认为是它们的第一次公开应用。从90年代开始,相关的文档,如著名的Aleph1的”Smashing the Stack for Fun and Profit”和代码已经在互联网上公开。
这篇文章是关于某种需要非常重视的主题的系列文
好了,我们说将被放到EIP中的值是CPU自身计算出来的。如果我们JMP到一个函数又是什么样子的呢?函数中指令的地址将在内存中的其它地方。它们执行后,CPU是如何知道到哪里继续调用程序执行呢?为了这个目的,在我们JMP到函数前,我们在一个临时寄存器中保存下一个指令地址,比如说在EDX中;并且在从函数返回之前,我们又把EDX中的地址写回EIP。如果我们使用JMP来跳转到函数地址,那将可能实际上是一个非常烦人的工作。
然而,ix86处理器家族给我们提供了两个指令:CALL和RET,使我们的生活简单!CALL指令把”函数返回后下个要被执行的指令”写入堆栈。它PUSH地址到堆栈,并且把函数地址写入EIP。因而,一个函数调用就产生了。另一方面,RET指令从堆栈中POP出”返回地址”,并且把地址写入EIP。因而,我们将从函数安全地返回,而且继续了程序的下一步执行。
让我们看看下面的代码片段:
x = 0;
function(1, 2, 3);
x = 1;
在几个汇编指令运行(x=0)之后,我们需要到function()所在的内存位置。就如我前面所说的,为了实现这一目标,首先我们拷贝返回地址的地址(在这个例子里是x=1的指令地址。)到一些临时空间(可能是一个寄存器)用JMP跳转到函数的地址空间,而且,在函数结束时我们恢复我们将要拷贝到EIP的返回地址。
感谢上帝,所有这些麻烦的操作都由CPU自身通过CALL和RET为我们做了,而你能从上面的篇章中得到相关细节。 一般地,程序堆栈区域能够象这样表示:
|_parameter_I____| ESP 8
|_parameter II___| ESP 4
|_return address_| ESP
Figure X : Stack
ESP,EBP
如我们已经说过的,堆栈同样被用来存储动态变量。动态地,程序请求新的空间时,CPU PUSH一些数据而我们的程序释放一些数据时它就POP一些数据。为了给内存编址,我们使用”相对寻址”。也就是说,我们在我们的堆栈中给数据编址,与一些标准相关。而这个标准就是ESP,它是Extended Stack Pointer首字母缩写。这个寄存器指向堆栈的顶端。考虑这个:
void f()
{
int a;
}
可以看出,在f()函数中,我们为一个名为a的整型变量分配空间。整型变量a的空间将在堆栈中分配。而计算机将引用它的地址作为ESP- 的一些字节。因此堆栈指针对程序执行是非常重要的。若我们调用一个函数呢?这个调用的函数有一个堆栈,它有一些局部变量,意味着它将要利用堆栈指针寄存器。同样地,内部被调用的函数将有局部变量而且它也将需要堆栈指针。
为了克服这个,我们保存老的堆栈指针。就象我们对返回地址所做的那样,我们PUSH老的ESP到堆栈,并且利用另外一个名为EBP的寄存器来引用被调用函数的局部变量。
相关文章
- “CMOS密码”就是通常所说的“开机密码”,主要是为了防止别人使用自已的计算机,设置的一个屏障2023-08-01
QQScreenShot之逆向并提取QQ截图--OCR和其他功能
上一篇文章逆向并提取QQ截图没有提取OCR功能, 再次逆向我发现是可以本地调用QQ的OCR的,但翻译按钮确实没啥用, 于是Patch了翻译按钮事件, 改为了将截图用百度以图搜图搜索.2023-02-04- QQ截图是我用过的最好用的截图工具, 由于基本不在电脑上登QQ了, 于是就想将其提取出独立版目前除了屏幕录制功能其他都逆出来了, 在此分享一下2023-02-04
非系统分区使用BitLocker加密导致软件无法安装的解决方法
很多电脑用户在考虑自己电脑磁盘分区安全时会采用 Windows 自带的 BitLocker 加密工具对电脑磁盘分区进行加密。但有些人加密后就会忘记自己设置的密码从而导致在安装其它软2020-11-25防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生
这篇文章为大家详细介绍了如何才能防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-27彻底防止计算机泄密、重要涉密人员离职泄密、涉密人员离岗离职前防范举
近些年企业商业机密泄漏的事件屡有发生,这篇文章主要教大家如何彻底防止计算机泄密、重要涉密人员离职泄密、告诉大家涉密人员离岗离职前的防范举措,具有一定的参考价值,2017-06-27- 最近有电脑用户反应量子计算机可以破解下载的所有的加密算法吗?其实也不是不可以,下面虚拟就为大家讲解买台量子计算机,如何分分钟破解加密算法2016-09-26
怎么破解Webshell密码 Burpsuite破解Webshell密码图文教程
webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,一种网页后门。黑客通常会通过它控制别人网络服务器,那么怎么破解webshell密码呢?一起来看看吧2016-09-19- 本文讨论了针对Linux系统全盘加密的冷启动攻击,大家都认为这种攻击是可行的,但执行这么一次攻击有多难?攻击的可行性有多少呢?需要的朋友可以参考下2015-12-28
防止泄露公司机密、企业数据防泄密软件排名、电脑文件加密软件排行
面对日渐严重的内部泄密事件,我们如何守护企业的核心信息,如何防止内部泄密也就成了摆在各个企业领导面前的一大问题。其实,针对内网安全,防止内部信息泄漏早已有了比较2015-12-17
最新评论