【发布时间】:2020-05-11 06:51:58
【问题描述】:
我正在尝试在我的程序中添加更多堆栈,但是我的程序使用带有参数的 main,但我需要使用带有 args 的 main 来测试 porpuses,但是在这种情况下如何添加使用 _declspec 和 args ?我正在添加更多堆栈,因为我正在为安全问题创建一些内容,但我无法在不限制堆栈的情况下展示完整的实验
_declspec(noinline) int old_main(int argc, const char* argv[]) {
if (argc != 2)
{
printf("Usage: %s examlpe", argv[0]);
exit(1);
}
char buf[MAX_BUFFER];
strcpy(buf, argv[1]);
printf("%s hi!\n", buf);
}
int main() {
char moreStack[10000];
for (int i = 0; i < sizeof(moreStack); ++i)
moreStack[i] = i;
return old_main();
}
【问题讨论】:
-
完全不清楚您要做什么。你想解决什么问题?为什么要“添加更多堆栈”?
-
我想在我的程序中堆叠更多的堆栈,因为我正在做一些安全实验
-
我想不通:“我的程序使用带有参数的 main,但出于测试目的,我需要使用带有 args 的 main。”你有X,但你想使用X。那么问题解决了吗?根据操作系统,可能有一些方法可以配置堆栈大小。但在这种情况下,
moreStack根本不需要是堆栈变量,没有明显的理由。只需将其设为全局变量或静态局部变量即可。 -
我还是没跟上。你想分配你自己的堆栈然后切换到那个堆栈吗?您真正的问题是“如何切换到使用我分配的堆栈?”
-
@DavidSchwartz 完全正确