问题标签 [buffer-overrun]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
335 浏览

c++ - OpenCV 2.4.9 FileStorage 中的缓冲区溢出

我最近升级到并在发布模式下编译时执行这段小代码时OpenCV 2.4.9遇到了:Buffer Overrun

在调试模式下一切正常,所以我完全不知道在哪里寻找解决方案。如果这有帮助,我的调用堆栈如下所示:

0 投票
1 回答
211 浏览

c++ - 不使用指针或数组的 C++ 损坏堆

我正在开发一个 C++ 控制台应用程序来动态加载 DLL。

应用程序可以成功调用 DLL 的函数之一。但是,在执行结束时,会抛出损坏的堆异常。具体值为:

我想知道为什么...这里是代码。

我不知道问题出在哪里:如果正确加载了库,我将其释放;没有指针,我没有使用任何缓冲区...

任何想法?仅当执行到达最后一个闭合的花括号时才会发生异常...

0 投票
1 回答
171 浏览

c - 使用旧的 C/C++ 编译器开发的黑客程序?

使用的编译器:GCC 3.4.4 操作系统:Windows XP 32bit

使用较旧的 C/C++ 编译器(例如 gcc 3.4 或 Visual Studio 6),可以操纵堆栈帧以操纵缓冲区溢出的程序执行(例如,通过损坏的返回地址)。

试图证明这一点失败了,因为我需要复制的所有数据都包含一个零字节,在该字节处复制总是停止。

正如代码所示,我使用命令行参数来填充缓冲区。这总是在第一个空白处停止。我搜索了几个例子(书:Hacking – the art of exploit, stackoverflow…),但所有例子都使用不包含零字节的地址。这种情况下的问题取决于位于返回地址前面的内存中保存的堆栈指针(地址包括零字节),如果堆栈指针没有某个有效值,程序总是失败。

我想跳转的地址是 0x004013BA,而不是 0x004013b1。保存的堆栈指针的值为 0x0022ff78。这意味着我需要用 43 个字节的随机数以及堆栈指针和返回地址填充缓冲区。

如何解决这个问题?

谢谢

0 投票
1 回答
16676 浏览

c++ - STATUS_STACK_BUFFER_OVERRUN 遇到

我搜索了这个特定的错误,发现根本问题涉及循环计数错误并导致程序超出数组的界限。

但是,在我将每个数组降低到数组开始丢失输出数据的点之后,它继续抛出相同的错误。我仍然是 C/C++ 的新手,但对此的任何见解将不胜感激。

该程序似乎运行到最后,甚至返回到 main 方法。

0 投票
1 回答
954 浏览

c - C缓冲区溢出中的链表

我要用有序的插入函数在 C 中创建一个链表。数组列表是单个链表的数组,我必须生成 10000 个随机数,有时我可以生成 300 或 400 个数字,有时它会失败并给我一个缓冲区溢出异常。我得到这个的原因是什么?

我认为这可能是因为我需要释放一些内存,但在我看来,我需要分配的所有内存,什么都没有。

当错误发生时,调用堆栈显示这一行:

是导致异常的原因。

它可以在生成的数字较少的情况下正常工作,例如如果我做 100 个数字,输出看起来像这样: http ://gyazo.com/18a9ba87611f5676d6fa7b6229fc41e0 当然这不是完整的输出,但这就是想法。

如果需要,这是完整的调用堆栈-

我收到另一个错误:程序 6.exe 中 0x100B26B6 (msvcr110d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x0146F78F。

这个调用堆栈:

这不是完整的调用堆栈。完整的调用堆栈长达数英里。

0 投票
1 回答
1060 浏览

c - 使用缓冲区溢出更改函数的返回值

x86系统

我正在尝试更改函数的返回值。例如

foo() 总是返回 1。我知道函数的返回值存储到 %eax(所以 1 存储到 %eax)。有什么方法可以达到和更改 %eax 值吗?我认为这不会发生,因为 %eax 没有出现在堆栈中!我说的对吗?

0 投票
3 回答
106 浏览

batch-file - 删除文件名长于 x 的文件

我正在寻找创建 BAT 文件的帮助,以帮助删除超过特定文件名长度的视频和图像。

一点背景:

我们有一个定制的应用程序,我们没有源代码。它从提要中更新其视频。最近我们收到“检测到缓冲区溢出”错误。我们认为超过 90 个字符的文件名正在成为一个问题。

我想在它们成为问题之前删除这些 WMV 和 JPG 文件。我们通常使用 bat 文件来执行这些小任务。

0 投票
1 回答
268 浏览

visual-studio - 如何修复 psqlodbc 驱动程序中的缓冲区溢出

Visual FoxPro 应用程序调用 Postgres psqlodbc 驱动程序 9.3.0400 两者都是在 Windows 7 x64 中运行的 32 位应用程序

此调用导致 psqlodbc35w.dll 中出现 Buffer Ovverrun 异常,堆栈跟踪如下。如何解决问题?psqlodbc 是用 C 编写的开源应用程序,可能由 Visual Studio 编译。也许可以在某些情况下对其进行更改,以便不会出现异常?已安装 Visual Studio 2015 社区版。

崩溃后调用 Visual Studio 2015 社区版调试器。它显示堆栈跟踪:

调试窗口显示了很多加载的模块,最后:

也发布在http://www.postgresql.org/message-id/1B88854920C942948F943E26B452E3A4@dell2

更新

这是导致崩溃的 FoxPro 代码。在将查询发送到 Postgres 之前,odbc 驱动程序中发生崩溃。查询中的表不需要存在于数据库中。只需使用 postgres odbc 官方驱动程序运行查询。可能在查询中使用 $ 字符会导致 odbc 崩溃。

使用的连接字符串:

0 投票
0 回答
1643 浏览

seh - Is there a way to catch a STATUS_STACK_BUFFER_OVERRUN error programmatically?

We have some C code that is throwing a STATUS_STACK_BUFFER_OVERRUN error (0xC0000409) once in a while. I can reproduce that error using the C code below. I'm using Visual Studio 2013 Update 4 on Windows 7, and I'm compiling with the /EHa and /GS flags. However, I have been unable to catch the error programmatically. The code never enters my __except block; instead, Visual Studio pops up a few dialog boxes informing me of the stack corruption. I realize that once this error occurs, the state of the program is in doubt; I'm merely trying to capture the error in hopes of locating where it is occurring in our production code. Is there a way to handle this error programmatically?

0 投票
1 回答
1104 浏览

c# - 应用程序启动时 clr.dll 中的缓冲区溢出

我有两台电脑。两者都在 Windows 7 Embedded 下工作,并且安装了相同版本的 .Net 4.0 框架。我的 WinForms 应用程序在其中一个上没有问题,但在另一个上的 clr.dll 中使用 BEX 启动时失败。

什么很“奇怪”

我能够在我的应用程序中找到两件事,它们会以某种方式影响或引发这个问题。 首先,我找到了确切的代码行。 我在 UI 线程上手动创建的按钮很少。如果我删除下一行,我的应用程序就会启动。

其次,我注意到,如果我使用调试记录器,它使用 StackFrame 来找出日志消息来自何处,应用程序将在 CLR 中崩溃并出现相同的错误,但在其他地方。不在我上面提到的那条线上。

我的两台电脑有不同的内存。2GB 和 1GB。应用程序在具有 1GB 内存的第二个应用程序上失败。但是应用程序本身使用 30 MB 并且系统有大约 350 MB 的可用内存。记忆会是一个原因吗?

我的研究大部分让我参考了 Microsoft 发布的不同热修复程序。我试过了,但没有任何帮助。我也尝试安装 .Net v4.5,但结果相同。

我还能从哪里开始寻找问题?

...是的,当运行带有附加调试器的应用程序时,这个问题不会出现。

更新

我刚刚意识到“异常代码:c0000409”表示 STATUS_STACK_BUFFER_OVERRUN。这对我有但仍然不清楚为什么它在一台计算机上工作但在另一台计算机上不起作用的奇怪应用程序行为带来了一些意义。