缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。

问题描述

缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。

程序调试的时候提示“在已损坏了程序内部状态的XXX.exe 中发生了缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序” 程序定位到 _CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE);请问这是什么原因呢?

解决方案

指针越界了,或者使用的堆栈溢出

解决方案二:

问题是无法定位到是哪越界呢 使用VS2008编译的

解决方案三:

一般是你指针越界,或者忘记分配内存造成的。

解决方案四:

另外就是调用了一些不安全的函数,比如如下代码:

char * des = new char[10];
strcpy(des, src);
如果原始字符串长度有100个,那么strcpy就不会检查des的大小,结果就是溢出了。

解决方案五:

在 InitInstance() 最后return 的时候报错了

#if defined (_CRTBLD) && !defined (_SYSCRT)
DebuggerWasPresent = IsDebuggerPresent();
_CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE);

解决方案六:

感谢各位,问题已经解决了,是我的数组设置的长度太小,越界了。总结来看,不能把眼光总是聚焦在出错点,要有怀疑的点,然后调试排查问题。

解决方案七:

指针越界,或者忘记分配内存,或写到系统内存

时间: 2024-08-03 05:43:36

缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。的相关文章

浅谈缓冲区溢出之栈溢出<下>

上回我们简单的介绍了缓冲区溢出的基本原理和机器级代码的解释,对此类问题的分析和研究都必须建立在对程序的机器级表示有一定的了解的基础上.记得有句话是这样说的,"真正了不起的程序员是对自己代码的每一个字节都了如指掌的程序员."我们也许做不到每一字节,但至少得明晰机器级程序的组成结构和执行流程. 言归正传,我们今天在上回的基础上继续探索缓冲区溢出.之前的例子都是简单的通过越界访问来实现对程序执行流程的变动,而且执行的函数都是编译前写入的,那么如何对一个发行版的可执行程序进行缓冲区溢出呢? 首

缓冲区溢出:十年来攻击和防卫的弱点_漏洞研究

摘要: 在过去的十年中,以缓冲区溢出为类型的安全漏洞占是最为 常见的一种形式了.更为严重的是,缓冲区溢出漏洞占了远程网 络攻击的绝大多数,这种攻击可以使得一个匿名的Internet用户 有机会获得一台主机的部分或全部的控制权!如果能有效地消除 缓冲区溢出的漏洞,则很大一部分的安全威胁可以得到缓解.在 本文中,我们研究了各种类型的缓冲区溢出漏洞和攻击手段,同 时我们也研究了各种的防御手段,这些手段用来消除这些漏洞所 造成的影响,其中包括我们自己的堆栈保护方法.然后我们要考 虑如何在保证现有系统功能

Linux下缓冲区溢出攻击的原理及对策

前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概念提供了直接的硬件支持,但是由于将函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来了极大的隐患. 历史上最著名的缓冲区溢出攻击可能要算是1988年11月2日的Morris Worm所携带的攻击代码了.这个因特网蠕虫利用了fingerd程序的缓冲区溢出漏洞,给

Oracle 8i TNS Listener 缓冲区溢出漏洞

Oracle 8i TNS Listener 缓冲区溢出漏洞 (Other,缺陷)     Oracle 8i 发现重大漏洞,允许攻击者执行任意代码 详细: Oracle 8i TNS (Transparent Network Substrate) Listener 负责建立和维系客户机同 ORACLE 数据库服务的远程连接.发现该 Listener 存在缓冲区溢出漏洞.攻击者成功利用此漏洞,将能在数据库服务器上执行任意代码. 更为糟糕的是,缓冲溢出发生在验证之前,这意味着激活了口令保护机制的

iPlanet Web Server 缓冲区溢出漏洞

server|web 涉及程序: iPlanet 描述: iPlanet Web Server 缓冲区溢出漏洞 详细: iPlanet Web Server 4.x存在一个缓冲区溢出漏洞.该漏洞允许恶意的用户远程执行任意代码或产生拒绝服务攻击. 通过发送一个长度大约为 198-240 字符并以.shtml 作后缀的HTTP请求,将产生缓冲区溢出. 该漏洞只有在服务器端打开'parsing' 选项时才被利用.成功地利用这个漏洞恶意的攻击者可以完全控制目标主机. 受影响的系统:Sun Solaris

缓冲区溢出还是问题吗?C++/CLI安全编码

C++/CLI是对C++的一个扩展,其对所有类型,包括标准C++类,都添加了对属性.事件.垃圾回收.及泛型的支持. Visual C++ 2005扩展了对使用C++/CLI(通用语言基础结构)开发运行于带有垃圾回收的虚拟机上的控件及应用程序的支持,而C++/CLI是对C++编程语言的一个扩展,其对所有类型,包括标准C++类,都添加了如属性.事件.垃圾回收.及泛型等特性. Visual C++ 2005支持.NET Framework通用语言运行时库(CLR),其是垃圾回收虚拟机Microsoft

缓冲区溢出攻防

很久以来,在人们心目中,"黑客"和病毒作者的身上总是笼罩着一层神秘的光环,他们被各种媒体描述成技术高手甚至技术天才,以至于有些人为了证明自己的"天才"身份而走上歧途,甚至违法犯罪.记得不久前就看到过这样一个案例:一位计算机专业研究生入侵了一家商业网站并删除了所有数据.当他在狱中接受记者的采访时,他非常自豪地说这样做只是为了证明自己和获得那种成就感. 本文讨论的缓冲区溢出攻击实际上是一项非常"古老"的技术,但它的破坏力依然不可小视--相信大家都还没

VC++中利用/GS开关防止缓冲区溢出

缓冲区溢出通常表现为一个最为常见的漏洞而存在于今天的各种软件之中,黑客可以用恶意的输入,从而更改程序的执行流程,由此入侵相应的进程.电脑.或整个域.如果进程运行于一个高度受信的账户之下,如管理员或本地系统账户,那么黑客带来的破坏将是极其严重,并有潜在广泛传播的危险.近几年来爆发的一些"知名"病毒,如红色代码.冲击波.震荡波等等,都源于C/C++代码缓冲区溢出的结果. 从程序的角度来看,缓冲区溢出只是一个再简单不过的编程错误--都是关于复制一个内存区域的内容到另一个内存区域,而目标内存区

浅谈缓冲区溢出之栈溢出<上>

有段时间没有用windows了,刚一开机又是系统补丁更新.匆匆瞥了一眼看到了"内核缓冲区溢出漏洞补丁"几个字眼.靠,又是内核补丁.打完这个补丁后MD的内核符号文件又得更新了.于是抱怨了几句,一旁的兄弟问什么是缓冲区溢出.这个-三两句话还真说不清楚.解释这个问题用C语言比较方便,但是单从C代码是看不出来什么的,具体原理要分析机器级代码才能说清楚.既然是浅谈原理,那就从最基本的开始吧. 本文的定位是对此方面一无所知的读者,所以大牛们可以直接飘过- 缓冲区溢出这个名词想必大家并不陌生吧,在微