在C语言中编写请求密码程序

4

我正在阅读一个用C语言编写的需要密码的程序。但是有一行我不太理解:

if(!OK){
 printf("\nWrong password!"); getch();
 f = MK_FP(0xFFFF,0x0000); f(); // this line I don't know
}

当f是指向函数的指针时,其格式为void far (*f)(void)。是否有人可以解释一下,谢谢。

1
发布完整的代码可以更好地帮助您。 - Chinna
1
MK_FP 是什么作用?在哪个操作系统上?在哪种硬件上? - Some programmer dude
2
在哪个操作系统上?什么电脑?什么编译器?什么头文件?我猜MK_FP可能是一些宏,或许构建了一些函数指针。 - Basile Starynkevitch
请展示MK_FP的实现。 - Codor
1
虽然你的问题格式正确,但在发布问题之前你没有做任何研究。仅仅在SO上进行简单的MK_FP(0xFFFF,0x0000)搜索就可以得到至少2篇帖子... - Chris Maes
显示剩余4条评论
1个回答

8
这些命令用于从BIOS(MS-DOS)重新启动计算机。
MK_FP(0xFFFF,0x0000);

构建一个远程指针(每次32位),并将其作为函数指针返回。然后,在该地址处执行f,重新启动PC。现代操作系统今天不支持此方法。 这个程序使用了它。

顺便问一下,为什么今天它不起作用了,以及this和那个有什么区别? - computerluv
1
该地址曾作为系统的启动地址,当系统开机或从运行中的程序中调用时,它也可以作为热启动地址。然而,在当前的Windows系统中,这种方式已经不再适用,原因如下:1)操作系统不允许直接调用该地址;2)系统发生了变化,即使在32位PC上,该物理地址可能不再对应于“引导”内存段。 - Déjà vu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接