在C中堆栈粉碎

时间:2012-04-30 10:03:00

标签: eclipse-cdt

我想通过解析来检测C程序中的堆栈粉碎事件。 我想用Java做到这一点。

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

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

2 个答案:

答案 0 :(得分:0)

一般来说,这可能是不可行的。事实上,它看起来像Halting Problem的表达。堆栈粉碎检测在运行时执行。您可以先查看buffer overflows上的文章,以及已在stackoverflow上提供的many个问题和答案。

答案 1 :(得分:0)

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

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

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

您也可以通过插入足够大的字符串大小来保存附加字符串来纠正此问题。 即,

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