问个网络竞赛的问题
编写一个程序(比如kernel module),使附件2.c中的程序跳出死循环。2.c中的代码如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
int n = 1;
printf("Address of n :%x\n",&n);
printf("My pid is: %d.\n", getpid());
while(n){
sleep(3); /* sleep for 3 secs */
}
printf("I break out\n");
return 0;
}
想办法令其跳出循环,打印出"I break out\n"。
你的代码不能调用任何其他软件,比如od之类。
可能使用到内核栈、pt_regs结构体、函数栈桢
[解决办法]
找到函数main 使用的栈,修改 n 所在位置的数据,使之 =0
由于不知道用的编译器,操作系统,和模式,比较麻烦
如果是 DOS tiny 模式,C语言
main函数是第一个被调用的函数直接查找堆栈即可