【发布时间】:2011-01-20 23:49:04
【问题描述】:
我有一个家庭作业要求我调用一个函数而不显式调用它,使用缓冲区溢出。代码基本上是这样的:
#include <stdio.h>
#include <stdlib.h>
void g()
{
printf("now inside g()!\n");
}
void f()
{
printf("now inside f()!\n");
// can only modify this section
// cant call g(), maybe use g (pointer to function)
}
int main (int argc, char *argv[])
{
f();
return 0;
}
虽然我不确定如何进行。我考虑过更改程序计数器的返回地址,以便它直接转到 g() 的地址,但我不确定如何访问它。无论如何,提示会很棒。
【问题讨论】:
-
4 票赞成家庭作业问题! OP甚至没有提出这个问题......哇,有些人很容易被打动。
-
@Lazarus,我赞成你的评论。哦哦! :-)
-
@Lazarus 这是一个家庭作业问题,这与我觉得它很有趣这一事实无关。我也赞成它,因为我想鼓励有趣的家庭作业问题,而不是简单的“我关闭了文件缓冲区,现在当我尝试从文件中读取它不起作用。为什么?” (换句话说,我赞成那些我不知道但想回答的问题)
-
@Alok,大声笑 - 它们都是我自己的话......这有助于缓解你的良心吗? ;)
-
哇,这是一个硬件问题?我已经爱上了你的老师:D
标签: c pointers stack-trace buffer-overflow fortify-source