文件无疑是计算机的根本,数据的最终形式,其重要性不言可喻。文件涉及到的东西实在太多了,在这里我们只讲与木马查杀有关的部分,想详细了解的请参阅相关资料。
有朋友可能遇到过,有的木马扩展名并不是exe而是pif、scr等等,但同样可以用鼠标双击来执行。现在是不是已经明白他们为什么能够执行了呢?呵,不明白我就再总结一下子:一个文件是否可以通过鼠标双击来执行,与其扩展名并没有必然联系。有联系的是该文件的文件格式与在系统中注册的打开此格式文件所使用的程序,缺一不可。
B、文件系统格式
文件格式是指文件中的数据存放的规则,什么地方放了什么东西,而什么东西又放在什么地方。而文件系统格式,则是指文件在磁盘中的存放规则,此规则说明的是文件是如何放到磁盘中的,又如何能找到它们。 我们接触最多的是FAT格式与NTFS格式,最早的系统比如DOS、Win3.X用的是FAT16,后来的Win95\Win98\WinMe开始使用FAT32系统,而FAT32只是FAT16的一个增强扩充版本,并无实质上的格式改变。 NTFS最早用于WinNT系列的操作系统,WinNT4以后的操作系统都支持NTFS文件系统,虽然仍然提供了对FAT32文件系统的支持,但NTFS取代FAT32已经是定局了。而当前仍然有不少朋友在用FAT32文件系统,尤其是系统盘使用FAT32文件系统的更加普遍。是因为FAT32较NFTS有某些优势么?非也,据我了解,是因为装机人员出于方便DOS下的操作而考虑的,因为DOS是不支持NTFS文件系统的,这无疑是一种很不负责任的做法。 为什么说这是不负责任呢?这就要从NTFS文件系统的优势说起了,当你明白NTFS文件系统的优势后,就会明白,为了图一时的方便,用户牺牲的又是什么。
除了FAT与NTFS外,其实我们还经常接触另外的两种文件系统格式,但却不像FAT与NTFS那么去注意它们罢了,它们就是CDFS(CD-ROM)\ UDF(DVD-ROM),呵,是不是呢?光盘都接触过吧?不过,我们这下面将只讲FAT与NTFS,因为他们与我们的主题木马的查杀是最相关的。
我们不用关心,事实上的数据在磁盘中是如何存放的,每种格式的存放方式都不相同,想了解这个的请去查阅相关资料,我们现在只需要明白,文件系统格式与文件系统驱动这个概念就可以了。下面呢,我们就看一看,一个文件是如何读取的,了解了原理上的东西,再看问题就会清晰很多。 C、文件读写机制
在了解这个之前呢,我们仍然需要先聊一些必要的基础知识,(咳,没办法,任何东西都不是孤立存在的,都需要一些知识为根基),文件读写离不开缓存管理,我们先看看缓存管理方面的。 从宏观上来说,计算机的数据流是由磁盘流向内存再流向CPU的各寄存器,而CPU是执行速度最快的,汇编语言之所以被认为是效率最高的语言,很大原因在于使用汇编语言可以直接操作CPU的寄存器,可以最大限度的抛开内存与磁盘的读取去利用寄存器。速度其次的,就是内存了,尽力的自内存中读写数据,而抛开磁盘操作,是无法直接使用寄存器时要努力做到的。而速度最慢的,就是磁盘了,直接自磁盘中读数据,是速度最慢的。 不知大家明白上面说的不?总之,系统在努力的保证更多的操作都是直接操作的内存而非磁盘,以此来提高系统的整体效率。 但是文件是保存在磁盘上面的,避开磁盘读写显然是不可能,只能是尽力的减少读写磁盘的次数。那么,系统又是如何来尽量多的读写内存而不是磁盘的呢?这就是我们接下来要讲的三个概念“缓存”、“智能预读”与“延迟写”。 缓存是什么呢?缓存的用途是将频繁被操作的数据的一个子集保存在物理内存中,这样我们的频繁操作就可以直接操作内存,而不是频繁的读取磁盘了。但系统又如何知道我们要操作哪些数据呢?这就涉及到智能预读的概念了,“智能”?明白了么?是通过一种科学的计算,来决定哪一部分应该被事先读取,并保存在内存中。当我们打开一个很大的文件或频繁的对某一文件进行操作时,系统会预选读取一部分放到内存中,预先读取哪些是通过计算得来的(这种计算的命中率显然决定了性能)。以后我们的读写操作就都是在读取内存,而非速度低下的磁盘。 当打开某一大的文件时,第一次会很慢,但关闭后再打开时会快很多,有这体会么?
如果有100本很长的小说,其中10本是我们经常阅读的,那么在对这10本进行操作时,其速度要比操作另外90本明显快上很多,这都是预读捣的鬼。 延迟写又是什么呢?比如我们修改一个文件,看着其中的一个字母“A”非常的不爽,就将它改成了“B”,改完后感觉仍然不够好,就再改成“C”………这种修改如果系统每次都将修改的结果存到磁盘上,那么我们的磁盘岂不是时时刻刻都在狂转?所以,系统采用了一种延迟写的方法,我们所有的修改都存在了缓存中,当完成一定的积累后,系统再一次性的将所有修改写入磁盘,而这种写是在后台进行的,我们并没有更多的感觉。 这里需要注意的地方是,这种延迟写与前面自启动项篇中注册表HIVE文件的延迟写并不是完全相同的。当然了,原理与机制是相同的,都是为了减少读写磁盘的次数也都是利用了缓存机制。但注册表HIVE文件的延迟写是由一个专门的注册表文件操作线程负责的,每5秒触发并写入一次。而文件的延迟写是由缓存管理器的延迟写出器在一个系统辅线程上每秒钟一次的来执行的,而且,执行并不等于写入,执行一次意指计算一次,计算什么呢?计算是否需要写入磁盘写入多少又写入哪些。 我们抛开缓存管理只谈文件读写,那么其机制就是这样的,系统得到文件读写请求后将请求发送给相关的服务处理程序,服务处理程序则交给文件系统驱动,文件系统驱动进行安全检查,看我们是否有权力进行所要求的操作,如果通过,则首选自缓存中取数据给我们,只有当缓存中没有时,才会自磁盘中定位到数据据在的位置去取数据。 汗,唠叨了半天只是让大家明白了有这么一个缓存的存在。这一段实在是很难写,因为文件系统是系统中很复杂的一块,涉及到的关联东西很多,写多了篇幅过长且会很杂乱,写少了又很不清楚,也不知道大家能否看明白,实在不明白就翻翻相关资料吧。 2、文件的隐藏、查找、保护与删除
文件的隐藏与保护的方式很多,我们下面对当前主流的一些隐藏及保护的方法进行一下讲解,在说之前,先要明白文件夹是什么,对系统来说文件夹其实只是一个具有特殊属性的文件而已。所以,文件的保护与隐藏同样适用于文件夹,当然了,操作起来由于文件夹的特殊性,会有所不同。我们讲解的顺序是由简到难的,首先讲的就是利用系统本身的功能来隐藏文件或文件夹(为了讲解方便,后面所指的文件也包括文件夹,隐藏也包括保护)。 A、 文件本身的属性中,就有“隐藏属性”,当然们勾选了文件的隐藏属性,并设置系统选项为“不显示隐藏文件”时,具有隐藏属性的文件,将不会再显示在文件夹中。 在文件上面按鼠标右键,选择“属性”,在属性设置的最下面勾选“隐藏”,就可以设置此文件为隐藏文件。然后在文件夹上方的菜单里,依次选择“工具”à“文件夹选项”,在“高级设置”里,将选项改为“不显示隐藏的文件和文件夹”,点击“应用”或“确定”,就可以完成设置,然后你就会发现,你刚才设置为隐藏属性的文件,已经不见了。 这个设置起来很简单,而简单也就意味着,这种隐藏几乎是没有用的,因为其它人也可以通过这种方法来选择“显示所有文件和文件夹”将你隐藏的文件重新显示出来。有没有办法加强这种方法的效果呢?答案是肯定的,有木马就用的这种方法的增强版,而效果看起来还不错,至少有很多人就拿它无可奈何。如何增强呢? 我们需要在注册表中进行设置,设置的键为:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL。选中此键后,再在右侧的设置窗口中,将“CheckedValue”这一项的值改为“0”,就完成了增强版的文件隐藏设置。会有什么效果呢?
我们再打开0文件夹选项设置窗口,然后选中“显示所有文件与文件夹”,选“确定”,去文件夹中看看,刚才我们设置为隐藏的文件能看到不?是不是仍然看不到?这是咋回事?再次打开文件夹选项设置窗口,骇然发现,我们刚刚设置成的“显示所有文件与文件夹”又被自动的设置成了“不显示隐藏的文件和文件夹”。
呵,记得当年好像是“橙色八月”这个木马最先用的这种方式来隐藏文件,很有创意是不? |
|