0

我想通过解析来检测 C 程序中发生堆栈粉碎的情况。我想在 Java 中做到这一点。

任何人都可以引导我开始。

如何检测 C 程序中是否存在堆栈粉碎。

4

2 回答 2

0

一般来说,这可能是不可行的。实际上,它看起来像是停机问题的一种表达方式。堆栈粉碎检测在运行时执行。您可以先查看有关缓冲区溢出的文章,以及stackoverflow 上已经提供的许多问题和答案。

于 2012-04-30T10:21:22.600 回答
0

您可以先编写一个程序来进行堆栈粉碎。根据我自己的经验,一个示例是以下代码。

int main(void)
{
    char hello[] = "hello";
    printf("%s\n",strcat(hello, "world"));
}

这可以为您提供带有分段错误的堆栈粉碎检测警告

您还可以通过插入足以容纳附加字符串的字符串大小来纠正此问题。IE,

int main(void)
{
    char hello[50] = "hello";
    printf("%s\n",strcat(hello, "world"));
}
于 2015-07-13T12:45:41.487 回答