Shell's Home

Jul 14, 2005 - 1 minute read - Comments

windows系统二、三

二,从程序到内核 程序是被CreateProcess载入的,中间过程就略去不说了。不过程序为何可以在不同系统上运行呢? 首先每个程序会调用一系列的库函数,具体视使用语言和编译工具,编程框架而定。程序或者框架会调用系统的API,这个部分是SDK编程的内容。具体调用哪个API,在什么DLL里面,传入啥参数,在所有windows系统中都是一样的。不过每个windows系统对于具体实现就完全不同了。调用的API会在程序文件中载明。然后系统会将每个DLL载入进程空间,于是就实现了具体和系统的链接。每个DLL最终都会调用int 2eh(或者SYSENTER)陷入系统来完成各种使用。这部分就是内核的事情了。由刚刚的程序载入(每个系统都相同的动作),到内核实现(每个内核都不同的事情)。中间具体的过程就是系统附带的DLL的所完成的。 三,MM,不是美媚 MM是MemoryMangermant的简称,而非美媚。windows的内存管理在程序来看是透明的,因为对于程序来说,地址空间是连续的。主要原因是系统通过段寄存器索引了某个表,通过此表来映射你的“连续”内存地址到真实内存地址上来。当然,也有可能映射到了硬盘上的某个区域。Windows的每个内存块都对应某个硬盘上的区域。不过如果在内存中,则区域保留等待写入。如果不在内存中,需要的时候读出来而已。在你“透明”访问内存的时候,段寄存器会访问这张表(实际一般不访问,表的项目会在首次访问的时候载入某个缓冲用的快速寄存器),而后映射到真实的内存地址。如果“真实”的内存地址不存在,则会发生异常。windows的异常捕获会直接将硬盘内数据调入,然后继续程序执行。所以在访问内存过程中,程序看来是“透明”的。

Jul 14, 2005 - 1 minute read - Comments

病毒编年史-当代

现代病毒的最大特征是混合化,商业化。可能同时具备文件病毒,木马,蠕虫的特征,很难界定其归属。也可能具备多种传播途径,在多方向传播。同时可能具备多个部分分别载入。病毒的意义也渐渐从无明确的多种意义渐渐转向商业化。 AD 2001.9.18,混合代码出现,代表作 W32.Nimda,作者未知。 蠕虫通过电子邮件发送自己,搜索开放的网络共享,试图将自己复制到未打补丁的或已经有漏洞的 Microsoft IIS 网站服务器上,是一种既影响本地文件又影响远程网络共享文件的病毒。 贝壳评论: 可以看出,蠕虫同时具备了邮件蠕虫,漏洞蠕虫,社会工程蠕虫三者的特征。并且蠕虫会在系统中留下一个后门,这又具备了木马的特征。这正是现代病毒非常明显的特征。 AD 2002.5,蠕虫中的病毒,W32.Klez中的W95.CIH.1049。上面曾经说BackOrifice2000感染过CIH,这次CIH又感染了W32.Klez蠕虫,W32.Klez的大规模流行使得CIH卷土重来。这是首次由大规模蠕虫引起的病毒流行。 AD 2003,IM混合型病毒大规模流行,代表作 QQ尾巴。 贝壳评论: QQ尾巴是比较有趣的混合型IM病毒(虽然很多人不这么认为……)。通过IM传递一个消息,驱动你去某个网站访问,然后通过IE漏洞使你中毒。结合了IM传递,AcitveX或者脚本病毒,蠕虫三者的特征。这表明现代的病毒正逐渐融合各种技术,各个有害代码的严格分界线正在渐渐消失。 IM病毒有很多有趣的分支,无论技术如何变革。其核心都在IM传递的语言如何驱动人获得病毒。最近有直接发送病毒文件的例子,还有通过URL用户名结合的特定传染的(http://www.sina.com.cn:80@18.com/1.scr)。甚至有你回复是否中毒时对方自动应答没有啊的例子。这个过程中一般用的是社会工程攻击的知识,通过人的心理去驱动人。 AD 2003.2,W32.SQLExp.Worm SQL注入病毒,相信众多网管一定感触多多。 AD 2003.8,W32.Blaster.Worm 史上赫赫有名的“冲击波”病毒。步了红码的后尘,也是一个蠕虫。不过2K/XP双溢出的特性加上2K中一分钟重起的“有趣”特性造就了它的名声。曾经有人说病毒自动设计了一分钟重起,防止更新补丁。根据贝壳的分析,这个应该是溢出失败导致系统进程关闭,而后系统自行决定重起的。这种防止下补丁的方法既不实用风险也大,而且对于病毒传播没有贡献。只有呆子才用他。 AD 2003,“无法删除”的3721。3721是一家公司的网络实名解决方案。为了防止软件被删除,该公司使用底层驱动阻止核心文件和注册表键值被删除,导致系统效率低下。 老实说我对诸多解决方案没有啥兴趣,严格来说左解决右解决就是为了抢实名到底谁用的问题。但是这个事情引申出来一个问题,无法删除是否是恶意代码。如果说非恶意吧,他确实的违背了用户的意志。要说恶意吧,谁能说防删除就是恶意呢?如果这么说,防修改的保护卡是否是恶意呢?同时,这个技术也为诸多病毒提供了借鉴。可以想见将来的诸多病毒左右删不掉的场景,届时恐怕就头痛多多了。 另外贝壳插句话,谁写个linux引导专门对付3721之类的东西阿?我已经被问的脑袋大死了。这个东西DOS下删不了,上NTFS4DOS是ReadOnly的。linux支持了NTFS的RW挂载恐怕内核在软盘上已经放不下了,那就是说要光引导或者是USB引导咯……多软件也可以考虑。哪位大大,出一个吧。 PS.后记,病毒编年史的更新曾经一度中断。最后贝壳偶尔想起是否是文字中的某些病毒特征码导致的呢?结果果然如此,哎……此天意也(旁:又开始打太极了)。

Jul 14, 2005 - 1 minute read - Comments

病毒编年史-近代

近代病毒的特征是多样化,结合化,跨平台。对社会工程的依赖大于对技术问题的依赖,传播中对于网络的依赖大于对软盘的依赖。种种病毒多数是通过社会工程方法或者漏洞来传播的。此时也大规模的兴起了后门运动。满世界飞的后门造就了很多Cracker,有害代码的破坏力展露无疑。 AD 1998,木马后门首次为大众所知,代表作 Back Orifice,作者 死牛崇拜(Cult Dead Cow)。 贝壳评论: 1998年真是电脑界风云之年,win98出世,BO发布,CIH流行,java病毒出现,到处充满了生机(如果这个算是生机的话)。BO作为木马,不是最早的一个。但是作为近代木马的鼻祖,BO当之无愧。木马自Unix产生以来就出现了,最早是管理员用来方便自己进出的后门,或者诱骗套取密码用。BO发布的木马可以在win9X系统上开个洞,使得别人任意操控机器。当今世界九成以上的破坏性代码(或者说恶意代码),均结合了这个特点,在侵入别人的机器后会留下后门方便作者进出,或者窃取用户各类密码。 说到死牛崇拜,还有个好笑的事情。在美国拉斯维加斯第七届“黑客”周年大会上,黑客组织“死牛崇拜” 推出特洛伊木马型黑客软件Back Orifice 2000。然而15日“死牛帮”证实其推出的正式版“BackOrifice2000”软件光盘确实感染了CIH病毒…… AD 1999,中国木马兴起,代表作 glacier,作者 西安电子科技大学 黄鑫。 冰河为国内相当优秀的木马,即使在国际上也非常有名。现今很多出名的黑客都是利用冰河迈向通往黑客道路的第一步的。黄鑫的冰河让很多人体会了做黑客的快感,更让很多人了解了网络安全的重要性。此人目前为网站“安全焦点” 的工作人员,水平极高。在安焦论坛上经常可以见到,大家不妨去过把名人瘾,要两个签名来留念…… AD 1999,Millenniu蠕虫出现,作者未知。这是迄今为止最没有名气的一种病毒,只有一个人报告受到感染。因此此病毒入选最没有名气病毒奖…… AD 1999,邮件蠕虫兴起,代表作 W97M/Melissa,作者 David L. Smith。不要被骗了哦,W97M中指的是win97。时间大约是99年(贝壳在symantec的安全响应中心99年才找到它的资料)。 AD 2000.5,邮件蠕虫和脚本病毒的结合,代表作 VBS.LoveLetter,作者未知。 AD 2000.10,嵌入式系统病毒出现,代表作 Palm.Phage.Dropper,作者未知。这是一个感染PlamOS的病毒,感染能力很小。但是代表嵌入设备病毒首次出现。 AD 2000.11,PHP网页病毒出现,代表作 PHP.Pirus,作者未知。 AD 2000,史上最出名的本地漏洞出现,代表作 win2000,作者Bill.Gates。 贝壳评论: windows2000的输入法漏洞可以号称是计算机史上最出名的漏洞了,直到去年还出现了一种新的表现形式。输入法漏洞以其简洁有效,立竿见影而著称。任何人都可以轻易学会,从而进入不是自己的系统里面去。漏洞总共有三种表现形式。一个是登陆时使用输入法,察看帮助,Internet属性。一个是登陆是等待,直到KV系列杀毒软件跳出来(怎么又是你)。一个是在特定输入法中按特定键序列,导致缓冲溢出。(这个去年才出来) AD 2001,史上最出名网络漏洞,UNICODE绕回漏洞出现,代表作 IIS5,作者Bill.Gates,发现者NSFOCUS。 贝壳评论: 这个漏洞是下面的红码的基础,红码在窜入新的机器前就扫描此漏洞。并且在远程下载病毒执行。漏洞简单来说就是在UNICODE解码的时候检验不严格,导致可以执行任何一个同盘上的文件。严格来说,如果在IIS或者NTFS安全属性上设置过的话,或者使用了安全策略和IPSEC,漏洞都不会作用。但是漏洞之所以出名就是因为连IIS都是大家糊里糊涂装上去的…… 其攻击形式大致如下: (此处省略,否则无法发表) 想当年我的IIS上面一半都是这种扫描代码。虽然我开了各种安全配置,而且上了补丁,上了IISLock。不过机器不停跑这种东西还是非常讨厌的,最终导致了贝壳的个人网站的倒站(太麻烦了)。 AD 2001.8,新一代蠕虫,红色代码II出现。 贝壳评论: 红色代码不同于以往蠕虫的是,它不使用感染文件的方法驻留在系统内部,因此可以简单的通过重起解除感染。但是问题在于,如果没有打补丁,重起后会重新感染病毒。这点和Blaster很像,但是Blaster还会定时重起,导致无法下载补丁。由于很多默认安装的个人win2000系统安装了没有必要的IIS组件,导致了该病毒大量感染。其声势不在Morris之下。 AD 2001.9,反蠕虫蠕虫,W32.BlueCode.Worm出现。此病毒的目的是为了解除红码的流行。在利用和红码相同的漏洞入侵系统后,此病毒会去下载补丁并且清除红码。而后寻找下个中毒机器,并且消灭自身。作为反蠕虫蠕虫,早在磁芯大战(Core War)的年代就出来过了。不过其合法和有效性一直没有得到肯定。 近代的结束年月并无法详细划定,不过我将其定为2001年9月。因为此时出现了一种混合型的病毒,结合了蠕虫,后门,病毒的特征。此后的有害代码正向混合化的方向发展。

Jul 13, 2005 - 1 minute read - Comments

windows系统一

一,启动 任何一个系统,一般都从启动讲起的。这里讲启动本来从NTLDR讲就好,可是怕有人不懂,所以简略概述加电后系统的启动流程。 系统加电后,会将CS:IP(注意不是EIP)设定为FFFF:0000。然后开始BIOS自检流程(Power-On Self Test,POST),最后初始化0地址的中断向量表,将引导盘CHS(0,0,1)读入系统0000:7C00开始执行。我们假定这是硬盘(软盘的没有MBR这步),并且没有安装LILO到MBR(否则流程不大一样)。于是MBR会先读取分区表(Disk Partition Table,DPT),寻找活动分区并且载入其第一扇区到000:7C00位置执行。这样MBR等于一个透明层,无论哪个分区(逻辑磁盘不行哦)获得了活动分区,其引导区(OS Boot Record,OBR)都可以当做自己是被BIOS读取执行的。而后如果是9X系统,引导区会读取系统文件(FAT32)头部来执行。这个就是我们非常熟悉的DOS启动流程。同时插句话,如果您无法format一个DOS系统盘出来。那么先彻底格式化(注意彻底,否则FAT遗留信息会让你失败)磁盘,然后COPY IO.SYS上去。照样可以产生系统盘,当然这种BT非常规手法只有了解系统才干的出来…… 如果是NT系统嘛,就会按照某种方法载入NTLDR这个文件。具体方法我也不清楚。因为NTLDR文件没有位置要求支持NTFS和FAT两种格式。按理这么一来引导代码会超过引导区的容量。根据分析NT系统的引导区内容总共有六个连续扇区,分布在头六扇区中。当然第一个扇区还包含了文件系统相关信息BPB(BIOS Parameter Block,研究MFT的还有一个Extend)。这样的大小还是无法容纳整个文件系统的支持阿?要解决除非我愿意反向引导代码,不过为了这么一个问题反向引导代码……等我有空再说吧。 下面NTLDR会进入保护模式,设置了GDT,LDT等等东西,并且彻底支持了NTFS和FAT的读取(引导区只要能从两个格式盘上马找到一个文件就好)。然后会根据BOOT.ini中内容决定如何进行引导,如果出现文字,还可能需要bootfont.bin字体文件。一般来说,会直接调用NTDETECT.COM来检测硬件变化,继续系统加载过程。这个就是我们经常看到的黑色屏幕上有东西从左到右闪的那个…… 后面的东西就是微软内部的资料,众人根据推理分析得来,所以不是很准确。不过可以肯定,后面的东西全在system32中打转。根据分析,首先加载的是NTOSKRNL.EXE(单处理器)或者NTKRNLPA.EXE(SMP,对称多处理器)。这个东西就是windows的微内核,由它导出了windows全部NativeAPI的实现。然后是SMSS.EXE,这是进程管理器,也可以说是头个系统派生的进程。后续所有进程可以视为它的子例。由它派生了CSRSS.EXE和WINLOGON.EXE。后者接管了系统的很多部分,例如GINA。它派生了SERVICES.EXE进程,系统开始加载各种服务。最后在登陆后由GINA启动EXPLORER.EXE。出现桌面等操作界面,启动基本完成。按照上述分析,多数服务的宿主进程都是SERVICES.EXE的派生进程(有特例,例如贝壳手里的RaidenFTPD守护进程就是先由SERVICES.EXE派生,再两次派生所成的)。而多数应用程序的进程都是EXPLORER.EXE的派生进程(当然,或者再派生进程)。EXPLORER.EXE负责的内容包括了开始菜单等等,所以除非你通过某个服务去启动程序,否则都是它的子孙。(特例包括Process Explorer工具作为Ctrl+Atl+Del启动时,是WINLOGON.EXE的子例。所以在上面启动一个CMD就成了服务派生,无服务身份。还有MSN弹出的邮件或者Space都是作为某个服务的派生的,所以也不是EXPLORER.EXE的子例。)

Jul 13, 2005 - 1 minute read - Comments

Windows系统引论

最近在开linux系统,找找发现资料那个叫……哎。到不是说少,linux号称开放源码,想要什么没有阿。问题是精论系统结构和意义的很少,一般都是讨论某个技术点如何如何的。没有大略的瞻观(当然,也有可能是英文,贝壳的E文水平看了等于没看到)。而一般系统中要做某个应用,除了经验,就是根据系统的运作方法、构架、原理等等去模拟。例如了解了file HANDLE这种东西后,自然会就如何将一个HiddenConsole的Output转Dump到一个windows的text中产生想法。或者了解了[\.]()系列文件后,自然会想到如何制作的ISO。当然,其实还有ATAPI的方法。如果了解了winsock的层实现流程,自然会知道防火墙如何实现。所以了解一个系统,无须了解内核的每句代码(对于windows,根本无法了解。即使是linux,了解了全部也要数年。届时你了解的也该淘汰了。)。系统主要了解其构架和思想,关键部分才了解实现。 现在看linux系统,犹如隔纱而望。当然,系统的命令我了解了不少(其实了解了ls和man已经差不多了)。但是每个命令是哪里的?系统的目录如何设置?什么配置应该看什么地方。linux载入进程是如何实现的。(估计这个是ELF的范畴,不过肯定要先啃过内核在看的懂。否则就如同我当年不知道NativeAPI的时候看NE和PE一样) 所以现在写一个windows系统引论,希望抛砖引玉。毕竟windows的资料全,了解时间长。所以难保还有哪位大大也写过类似文章,大家姑且看之吧。

Jul 12, 2005 - 1 minute read - Comments

史上最倒霉的一天

今天是俺历史上最倒霉的一天。先是上午,老师打电话过来,说毕设里面至少要有篇翻译。当场我大惊失色,不是原来说不需要吗?赶快提枪上马,抓篇文章过来翻译,五个钟头翻译了五千字中文。连带周岚一起上马,晕头转向外加金山快译,总算即时翻译完成。然后赶快打印把。结果打印机突然没墨水了……我Ft。干脆不打,跑到学校再说。 跑学校的时候,天气非常凉爽。嗯,如何凉爽呢?我这么说吧,我下车的时候已经开始下冷雨了……幸好带了伞。不过刚刚庆幸完就给偶换成滂沱大雨了,我哭。在这么赶的时候,要是碰不到老师毕设就算完蛋了。所以冒雨前进,衣服完好,鞋子报废了…… 然后到了老师办公室,拿原来论文,要我拆封重装订。Oh My God,我的论文封面已经给我搬家的时候弄的不成人型了,重装的结果可不比计算机,估计是要废了。(结果果然破了……)不过事情还没有结束,装订好了跑过来,发现我给出去的四张经装进去一张。装订业的先生们,让我说什么呢?我可以保证我放了四张进去。算了,直接用胶水粘上去吧,否则书真的散架了。 装订好书,我倒霉的一天还没有结束。我懒的慢慢晃公交,所以直接去交大番禹门口拉Texi。其中变态的是,七辆空车从我面前飞驰而过,其中还有两个司机和我招手。我说大哥,我招手是要上车。您招手干吗?换我开车您下来?您闹肚子?还有三部车,在我面前停好后,重新启动,跑到别人面前……几位,我没得罪出租车公司吧。最倒霉的是,拦了部车,然后跑来一个MM,说那里有个大肚子。你说我有脸和孕妇抢车吗? 总算抢了部车子,开回来的时候一路红灯。当时让我想起交通模型的绿浪理论,其中的倒霉状况就让我碰上了。当时脑子里面就高唱“一路狂奔不回头”,而且是经过变形的“一路红灯不能走”。停车算车费,结果发票开不出来了……邪门吧。回来装好容易下完的冷门游戏发现需要特定软件,软件比游戏更难找。给人CopyMp3的时候发现差点Copy上了XX歌曲……呃,具体内容省略。最倒霉的是,写这个最倒霉的一天文章的时候,居然碰上了三次软件异常关闭和一次软件错手点关闭…… 赶快上床睡觉吧……

Jul 10, 2005 - 1 minute read - Comments

惊叹某MM大大的……

原文如下: 但是…由于生理结构的先天性不同…有经验的厨师都知道….洗干净一条黄瓜远远比洗干净一只鲍鱼来的容易上百倍。 就是“下馆子”,最多也就吃个凉菜,鲍鱼、象拔蚌之类的大菜就不用上了。 躲避吃“热菜”的可能性,先自己塞了两大包子,估计啥啥鲍鱼在几小时之内很难引起食欲了。 如果您正在吃饭,那么非常抱歉,您吐出去的东西我不负责。如果您已经年满18但还是看不懂,我更抱歉了,您将来的另一半想必是要活在黑暗中。如果您年满18,本来看不懂,看了这段文字还没看懂。然后去google上面找了半天,最后抓下N多菜谱开始做菜……我为您远弗无界的无知和千锤百炼的粗线条神经而悲哀。 引用: http://www.blogcn.com/User2/lome/blog/22539888.html

Jul 9, 2005 - 1 minute read - Comments

代码和数据

从某种意义上说,代码即数据,数据即代码。不仅仅是因为无论何种代码,何种系统,什么格式,什么CPU,代码都是以数据方式存储的。更重要的是,设计良好的数据会自动驱动程序的运行。使得精简的代码发挥意外的功能。最出名的例子有XML,MFC的MessageRoute。或者从某个意义讲,所以代码都是数据驱动的。 现在的所有数据结构都是基于三个内容,数据,列表,指针。数据,即内容本身,也可以认为是某个数字。毕竟电脑是按数字方式编码所有数据的。列表,指某个定长数据区域。指针,即使用某种方式指向的另外一个数据。例如寻址编码。按这三种内容,可以构建出多数的结构来。例如树,图,列表,等等。 如果基于另外的数据方式,是否能构建出另外的数据结构呢?这种结构是否能更好的驱动程序的运行,或者使得程序更智能化的运行呢?我不知道,不过按照我的预感,遗传算法可能是其中的突破口。

Jul 7, 2005 - 1 minute read - Comments

毕设答辩

好久没写blog了。其实不是没写,而是都更新堆在了一个项下面。就是那个NTFS格式解析那个,回头还要继续看,新出一个项吧。 今天下午三点答辩,目前还有两个半小时(注意,不是两个“半小时”)。我不知道别人在答辩前面干些啥,不过我觉得很无聊。资料准备好了,演示和示例代码做好了,文档写的差不多了,就差N臭N长N烦琐的引用列表。我还特定找了个秒表(杀鸡用牛刀?)测了PPT的讲解时间,预期是十分钟。如果加上支线和突发,可以到十五到二十分钟。很好,偶很满意,然后呢? 突然发现,同学一个个都已经有确定的将来,只有偶还在这里迷茫。今天下午的答辩应该是过的去了(至少我没有听说答辩做了还过不去的……),补考也都合格了(嘿嘿,特别感谢马师姐)。还有呢?我的毕业手续也应该要办了。虽然烦琐点,但是总是要过去的。然后呢? 我不知道我将来准备干吗?读研和出国肯定不考虑的了。我不喜欢本系相关的研究生,出国到是可以读计算机,可惜我的英文差到在国外生存都是一个奇迹。这样的英文还在玩电脑,想必是一个更了不得的奇迹吧。那么我准备找工作吗?北京上海?什么类型?怎么发展?我统统不知道。 目前我的生活就是做一天和尚撞一天钟。如果这个和尚突然发现钟被偷了呢?他是找个木鱼来敲?找人重新弄个钟出来?还是还俗?我也不知道。不过我知道,我做和尚的岁月永远的过去了。那不闻窗外事,只读圣贤书的岁月过去了。那单纯无忧,自由自在的时光过去了。我们都要还俗,投身到俗世浊流中,直到死亡将我们带出。

Jul 3, 2005 - 2 minute read - Comments

实践NTFS格式解析

刚刚在想NTFS格式的问题,感叹没有个实例拿来看看。然后在看小说的时候不知道怎么回事,想到点子上了。不由骂自己白痴,这个问题其实早就解决了阿。直接用CreateFile去读[\.c]():文件不就好了…… OK,明天写个程序看看NTFS的实质……也许还有别的用途,再说了。 另外写个想法,也许NTFS中很多MFT表项没有被某个目录引用成为文件,而其引用计数大于一(这样会被chkdsk查出来吗?等于0会吗?会删除吗?表问咯,偶都不知道……)。这样就会造成系统空间的神秘减少。例如上次系统文件复制时候空出来的硬盘,上面全空,但是使用了400M多的空间。估计就是这么搞出来的。具体要察看chkdsk的机理才知道,因为偶的硬盘经常chkdsk的。如果是属于能查的出来的错误,肯定就不会延迟到换硬盘才发现。可能是chkdsk不检查这个…… 另外回头准备看看内核的机制,试试记录或者反木马能不能提前挂在内核态上……嘿嘿,里席必争,咏春的要诀…… 这次仔细看了MFT的格式。有点心得,先写下来。 首先是从MBR定位到每个BOOT区的BPB,这样才可以获得BPB中的\$MFT和\$MFTMirr的LCN。并且会获得卷因子(多数都是0x08吧,4k的簇)。\$MFT的LCN多数是4,定位就是32(0x20)。而后就会定位到MFT表上去。 MFT的表项分析起来是遵循链式结构的,不过为什么有那么好的性能和抗崩溃能力呢?可能在于USN和LSN吧。每个表项有个头部(详细看linux的ntfs/layout.h去),指明了大小,关联了相关MFT表项和上下MFT表项,以及这个MFT表项的全局属性。由其中可以引出首个属性的相对偏移。 每个属性都有个公用的属性头部,这个头部说明了属性的类型和大小,还有属性是否直接存储,如何存储等等信息。由上个属性可以推知下个属性偏移,所以属性应该是链式存储的。不知道这里是否具有超长链溢出的问题(长度超过最大值的一半)。 另外,在文件名称属性中具有引用目录项目,所以上面猜测的可能无法成立。不过引用目录和硬连接是违背的阿……下次再分析好了,困了困了…… OK,继续分析。根据刚刚的阅读,一个文件可以分散在多个MFT中,而后就会引入一个叫attribute list的属性。这个属性指明了每个属性属于那个MFT引用中。其中VCN的换算关系比较特别,基本MFT算-1,下面依次排开,扩展MFT也算进去的。似乎一个MFT就算一簇。不过VCN和LCN的映射关系让我头痛了半个钟头,最后也没有在linux的头文件中找到。到是在NTFS.com中文件恢复上找到了说明。原文如下: 00012580 2E 00 70 00 70 00 74 00 80 00 00 00 48 00 00 00 ..p.p.t.Ђ...H... 00012590 01 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 ................ 000125A0 6D 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 m.......@....... 000125B0 00 DC 00 00 00 00 00 00 00 DC 00 00 00 00 00 00 .