【发布时间】:2014-12-12 09:45:49
【问题描述】:
如何修改func( )中的源代码,使程序执行func ()后返回的地址发生变化,从而跳过指令printf("first print\n”)。使用func() 中定义的指针*ret 适当修改返回地址以实现此目的。
代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(char *str)
{
char buffer[24];
int *ret;
strcpy(buffer,str);
}
int main(int argc, char **argv)
{
if (argc < 2)
{
printf("One argument needed.\n");
exit(0);
}
int x;
x = 0;
func(argv[1]);
x = 1;
printf("first print\n");printf("second print\n");
}
【问题讨论】:
-
这里有问题吗?
-
您好,对此很抱歉。是的,我是 linux 新手,想运行它,但不知道如何。任何帮助,我将不胜感激
-
我需要帮助修改代码。谢谢
-
在这种情况下,我建议您编辑您的问题,以便您将第 1 点变成有人可以回答的问题。就像是; “我应该如何编辑这段代码,以便......”将其他两点留到后面的问题中,因为第一个问题的答案可能会解决其他问题。
-
我希望现在问题很清楚了。感谢大家的帮助