目前很多地方都转载着利用9行代码史windows崩溃的文章,不过我发现没有关于为什么会使windows崩溃的分析。我先把原文给大家看看。然后把具体的细节说一下。
#include 【相关文章:笔记本知识小百科 笔记本电脑显示器小资料】
微软一直声称windows xp多么多么稳定可靠,但日前一位名为masaru tsuchiyama的外国编程爱好者刊出了一小段c语言代码。这一只有9行的小程序如果在windows xp/2000下运行,则可导致系统完全崩溃,并重新启动。但此程序对其他版本的windows没有任何影响。这一产生无限循环输出的小程序的代码如下: 【扩展阅读:基础知识 XST攻击理论及手法讲解】
int main( void ) 【扩展信息:知识产权处境尴尬 科技企业如何破局】 { for(;{ printf( "hung up\t\t\b\b\b\b\b\b" ); print("hung up\t\t\b\b\b\b\b\b"; } return 0; }如果去掉print语句,此程序还会导致nt 4.0系统出现蓝屏错误。
但愿微软赶快修补这一漏洞。同时提醒大家,此代码只可用于研究,不得用于任何非法勾当。
如果去掉print语句,此程序还会导致nt 4.0系统出现蓝屏错误。
以上就是网上纷纷转载的原文。
关于为什么会导致错误,就在看下面的分析吧。
\b是退格
代码是用退格符把console里的光标退成null,然后显示任一字符(除\t),即崩溃。
但是一般情况\b是不能退出规定的区域的,而如\b的前一个字符是\t则可以退出规定的区域(bug?)。
双击运行时,系统将新建一个console,所以我们的显示在console的左上角,我们只需两个\b就可退出屏幕(第一个吃掉\t)。
... 下一页