回复:转DOS下打开U盘技巧
使用“资源管理器”打开U盘会激活病毒,这是指在盘符上右键菜单点“资源管理器”的菜单项打开,而不是说在资源管理器里打开盘符,这是两码事。
使用资源管理器打开“我的电脑”,或者打开“我的电脑”之后点击工具栏中的文件夹,则左边窗格出现文件夹树形视图。从树形视图中点击U盘盘符,则右边窗格将会打开盘符,而不会激活右键菜单的机制。这种方法才是实用和安全的打开U盘的方法。
至于在CMD中打开不会激活病毒是因为“病毒的激活代码中并不会涉及到DOS中的内容”,这根本就是想当然,根本没有说到点子上。
首先我们要明确“打开盘符”或者“打开文件”是个什么样的概念。
为了让实习生更好理解,我们仍然讲回实习生必须掌握的SREng日志,在
http://bbs.ikaka.com/showtopic-8504098.aspx我的注释当中,我数次强调到原作者没有认识到的一个重要概念
“命令行”(CommandLine)。
特别对于文件关联来说,没有命令行的概念,你就不能理解文件关联是怎么一回事。所谓文件关联,指的就是当在explorer.exe中双击打开一个文件时,系统所执行的命令行。
如.TXT文件的文件关联是(忽略完整路径)"notepad.exe %1",%1指代双击时的文件路径。
这样当你双击一个.txt文件,设为C:\a.txt,实际上系统执行的命令行是(仍然忽略notepad.exe所在文件夹):
"notepad.exe C:\a.txt"
当notepad.exe进程创建后,notepad.exe进程通过解析其命令行参数,得到C:\a.txt这个路径,作为所需要读取的文件名,再进行读取该文件内容并显示在文本框中的工作,这就是我们整个看到的记事本的显示。
因此,文件怎样被打开,起决定作用的只是此时被执行的命令行是什么样子。
解释完了命令行和打开方式,说回U盘病毒。U盘病毒被激活的关键是Autorun.inf。
Autorun.inf之所以起作用,就是因为当移动介质被插入,盘符被添加时,系统读取此Autorun.inf的内容,从而临时修改盘符操作的默认命令行。当Autorun.inf中规定的新命令行指向病毒文件时,在资源管理器右窗格中直接双击盘符的方式,就会执行此命令行,从而运行病毒。这整个盘符的打开过程简单来说就是:双击盘符->程序收到消息->查询相应的命令行(可能已因Autorun.inf被修改)->执行此命令行->打开盘符/运行病毒在不取消U盘的自动运行的情况下,之所以会自动激活病毒,是因为Explorer.exe自动完成了以上的过程。所以,要避免因Autorun.inf而导致的运行病毒的结果,只需要绕过资源管理器对命令行的查询,而直接执行正确的命令行,问题就解决了。在CMD中访问盘符,之所以不会激活病毒,正是因为CMD中直接使用了命令行。所以,最简单而实用的方法,不是开始->运行->cmd->G: start.而是开始->运行->Explorer.exe G:\这样就够了。至于打开显示隐藏文件的设置并寻找是否有Autorun.inf,你尽可以在这样访问盘符之后去做,这是另外一回事了(既然病毒没有被激活,它就没有破坏你显示隐藏文件的相关设置,那你还怕什么)。另外,cmd.exe严格来说根本就不是DOS环境,说cmd.exe是DOS环境的人,说明他根本就不懂Win32控制台程序。cmd.exe只是个Win32控制台程序,用户键入的命令,在用户的想像中,它好像是DOS命令,其实还是cmd.exe所接收的消息中的
命令行参数,cmd.exe通过对这些字符串的解析,调用实际的API来完成操作,所以,完成操作的归根结底还是Windows系统,而不是DOS!只不过这种操作对一般用户来说是透明的,用户只知道操作的结果和以前用DOS的时候相像,并不知道它的具体过程,微软提供这个程序要的也就是用户有这种“朴素”的感觉,但是我之前已经强调过
,“朴素”的表象也许可以让你感觉良好,但它却往往不是真实,一个追求技术的人,追求的应该是真相,而不是表象,对于实习生来说,这一点尤其要注意。