网站大量收购独家精品文档,联系QQ:2885784924

9行代码废掉WindowsXP2000.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9行代码废掉WindowsXP2000

9行代码废掉Windows XP/2000 2001-10-31 9:27:17,阅读次数: 2498 新闻内容: 微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama的外国编程爱好者刊出了一小段C语言代码。这一只有9行的小程序如果在Windows XP/2000下运行,则可导致系统完全崩溃,并重新启动。但此程序对其他版本的Windows没有任何影响。这一产生无限循环输出的小程序的代码如下:   #include   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系统出现蓝屏错误。   但愿微软赶快修补这一漏洞。同时提醒大家,此代码只可用于研究,不得用于任何非法勾当。 推荐给朋友 打印文章 观看更多评论文章……(共21条) 评论人: xiaodaoren 评论时间:2001-11-3 21:05:26 为什麽? -------------------------------------------------------------------------------- 评论人: coaa 评论时间:2001-11-1 11:59:00 这是某一位高手的调查结果以及个人的判断:(转载的) 调查结果公布如下: #include stdio.h int main() { printf(\t\b\ba); } 即可崩溃(需双击运行,命令行运行需更多的\b). 表面原因如下: \b是退格符, 首先使用退格符将console上的光标退没, 然后显示任一字符(除\t),即崩溃. 但是一般情况\b是不能退出规定的区域的, 而如\b的前一个字符是\t则可以退出规定的区域(bug?). 双击运行时,系统将新建一个console,所以我们的显示在console 的左上角,我们只需两个\b就可退出屏幕(第一个吃掉\t). 内在原因: windows subsystem system process(win32子系统) 意外中止导致系统崩溃. 会话管理器(smss)是windows系统建立的第一个用户进程, 他的工作之一是建立win32子系统进程(csrss)和winlogon进程, 然后永远等待这两个进程的句柄,如这两个进程意外中止, smss将导致系统崩溃(进程中止时会返回进程句柄). win32子系统(csrss)是什么东西哪? windows系统号称使用一部分微内核机制就体现在这里, 微内核机制要求操作系统将大部分功能做为进程运行在用户态, 如mm(memory menage),fs(file system)等等, csrss进程就是专门负责所有win32进程和系统进行通信的进程. 所有win32进程的系统调用都会由csrss进程帮你完成, 但是这样做的效率太低(需要进程切换). 所以在windowsNT从3.51升级为4.0时将许多部分从用户态移入 核心态,win32进程的系统调用将直接进行以减少进程切换时间. 但是仍有少量系统调用需要csrss进程完成,据我所知createprocess 是这样的函数,所有console上的显示是这样的函数(还有其他的). 当我们调用printf(\t\b\ba)最终将调用WriteFile API. WriteFile((HANDLE)7,\t\b\ba,NULL,NULL)等同于 printf(\t\b\ba),7是console标准输入的句柄. WriteFile判断句柄类型,如是文件句柄将调用ntdll.dll中的 NtWriteFile函数.如是console句柄将调用WriteConsoleA函数. WriteConsoleA函数将调用ntdll.dll中的csrClientCallServer 函数通知csrss进程,然后调用NtRequestWaitReplyPort等待结果. 估计是csrss进程在处理这个请求过程中出错了. 跟踪csrss进程和系统调用VC就搞不定了,恐怕要上softice了. 至于csrss进程怎么出的错,还是等其他高手继续吧:-) 大家也探讨

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档