Shell's Home

Windows系统引论

Jul 13, 2005 - 1 minute read - Comments

最近在开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歌曲……呃,具体内容省略。最倒霉的是,写这个最倒霉的一天文章的时候,居然碰上了三次软件异常关闭和一次软件错手点关闭…… 赶快上床睡觉吧……

惊叹某MM大大的……

Jul 10, 2005 - 1 minute read - Comments

原文如下: 但是…由于生理结构的先天性不同…有经验的厨师都知道….洗干净一条黄瓜远远比洗干净一只鲍鱼来的容易上百倍。 就是“下馆子”,最多也就吃个凉菜,鲍鱼、象拔蚌之类的大菜就不用上了。 躲避吃“热菜”的可能性,先自己塞了两大包子,估计啥啥鲍鱼在几小时之内很难引起食欲了。 如果您正在吃饭,那么非常抱歉,您吐出去的东西我不负责。如果您已经年满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的讲解时间,预期是十分钟。如果加上支线和突发,可以到十五到二十分钟。很好,偶很满意,然后呢? 突然发现,同学一个个都已经有确定的将来,只有偶还在这里迷茫。今天下午的答辩应该是过的去了(至少我没有听说答辩做了还过不去的……),补考也都合格了(嘿嘿,特别感谢马师姐)。还有呢?我的毕业手续也应该要办了。虽然烦琐点,但是总是要过去的。然后呢? 我不知道我将来准备干吗?读研和出国肯定不考虑的了。我不喜欢本系相关的研究生,出国到是可以读计算机,可惜我的英文差到在国外生存都是一个奇迹。这样的英文还在玩电脑,想必是一个更了不得的奇迹吧。那么我准备找工作吗?北京上海?什么类型?怎么发展?我统统不知道。 目前我的生活就是做一天和尚撞一天钟。如果这个和尚突然发现钟被偷了呢?他是找个木鱼来敲?找人重新弄个钟出来?还是还俗?我也不知道。不过我知道,我做和尚的岁月永远的过去了。那不闻窗外事,只读圣贤书的岁月过去了。那单纯无忧,自由自在的时光过去了。我们都要还俗,投身到俗世浊流中,直到死亡将我们带出。

实践NTFS格式解析

Jul 3, 2005 - 2 minute read - Comments

刚刚在想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 .U.......U......

COM运作机理初探

Jul 3, 2005 - 1 minute read - Comments

今天偶看本COM的书,七搞八搞还是没有太搞明白COM的机理。先把看的差不多的写出来好了,省得下次忘记了。也不一定对,整理整理思路继续学…… COM在运行的时候有一个GetClassObject的导出函数,由这个函数负责生成对象实例并且返回合适的接口。所谓接口,就是派生于一些特定的基类的纯虚类。GetClassObject先构造某个类的实例(根据UUID),然后再获得这个类中的某个IUnknown派生接口,再向这个接口查询其他接口实例(又是根据UUID),这个查询函数名字就是QueryInterface。 根据MSDN的资料显示,QueryInterface具备三个理由。一个是每个接口都要 **** Identity,二是在对象实例中的接口集必须静态,三是每个接口都要能够查询到别的在同个对象实例中的接口。三还跟了很多例子,必须成功等等的。 同样从IUnknown中继承的还有Release和AddRef。每次引用一个接口都会有计数变化,这形成了接口的创立和析构。感觉上这个很类似于iNode和MFT中的引用计数,以及dll载入中的使用计数。 简单来说COM的机理上大致就是。通过GetClassObject寻找并且产生合适的对象实例。通过GetClassObject给出的接口QueryInterface返回其他接口。由于每个对象实例中QueryInterface都是自行编写的,所以可以轻易返回其他所有对象接口。于是通过一对UUID可以定位到某个特定的Interface,用C++术语说就是纯虚基类。

纪念偶可怜的硬盘

Jun 27, 2005 - 1 minute read - Comments

今天偶的硬盘坏了,感觉是……终于坏了阿。嘿嘿…… 偶的硬盘从两年前就开始不好了。其实也没啥好奇怪的,一天二十四小时工作,工作量奇大,天天拖BT。而且还没有好位置,都是用电源线悬挂利于散热(偶用双硬盘的)。能好的了才奇怪了。 不过这个硬盘也算比较奇怪的了,我在服务器上工作的硬盘还没有坏,他先去了。按说服务器上的硬盘无论工时还是工量都比较大,但是却坚持不坏。工作站养护的还算不错,但是又死机又坏硬盘的……看来下次这家DIY公司不能去。(还去啥,都关门了) 两年前,偶的硬盘经常可以听到敲击声,伴随服务器假死状态(整体挂在这个点状态上了)。同时某些部分的数据有CRC错误,读取这个数据时就会引发上述状态。于是偶按照坏区处理,先将整个硬盘格FAT32,重格NTFS,然后重分。将最容易引发的地方分离,然后Copy中等文件,将引发错误的文件保留。于是整理出一个还可以用的硬盘,勉强度日两年。 就在前些日子,偶机器从学校永久的带回家来。由于容易引发死机,所以整个机器经常就裸露在外,利于散热。恐怕加速了硬盘的老化。在一次Copy了大量的ED数据上去准备做压缩的时候(偶好容易从ED上拖下来的阿),硬盘突然狂响。重起后继续响,并且兰屏,再重起……没有了。硬盘整个从系统里面消失了,BIOS都找不到硬盘。看来是硬件电路一起废物了,彻底没救了。 算了算了,反正最近下ED+BT,下的我的硬盘小的要死,正想换个新的。新买个120G的得了。原来我是两个40G分别在两个电脑上,后来貌似就因为这个硬盘不稳定,所以买了个新的硬盘放在WorkStation上。然后Server为了扩容,又添加了一个80G。于是形成了惊人的双电脑双硬盘。然后今天在WorkStation上报废了一个SecondaryDisk40G。所以我买了一个希捷120G放到了Server上面,将原来最初40G的SecondaryDisk(最初是Server的PrimeryDisk)上面的数据移动过去,重新组织了下。和新的80G组成200G服务器双硬盘组,两个都是新的。WorkStation上面换上一个原来的40G作为SecondaryDisk,重新形成80G双硬盘。这样两边都比较稳定,没有大变动。 然后两边都是数据狂移动(40G的数据换位花了我两个钟头,平均数据传输速度是6M/s,实在慢了点,用我自己写的高速移动程序又不放心,嘿嘿,还没有测试完呢)。又重新整理所有硬盘(总算有空间了),打系统补丁(老死机),升级杀毒,整理系统。整整忙了一个晚上,总算将整个系统稳定了下来。 哎,好久没做系统维护的动作了,真的很不适应。八百伴电脑商场搬地方了,新的商家愣是没找到。维护上也头痛的要死……都记不起来了。最头痛的是我多了700的外债,目前已经达到2200,足足是将来三个月的薪水(当然,要吃饭先的)。不过无论怎么叹,硬盘也是回不来了,就像过去一般。所谓永恒和稳定只是虚无的东西,谨以此文纪念我的硬盘。 呜呼,尚觞。

撑死我了……

Jun 25, 2005 - 1 minute read - Comments

今天真是忙碌,闵行到处跑。 先是答应了参加初中同学聚会,然后早上匆匆爬起来,坐两钟头车跑到闵行。结果据说中午不聚会了,我哭…… 幸好班上同学正好有聚会,四个还没有请客的集体请客,去“小尾羊”撮顿好的。前几天在学院里面撮的够厉害的了,后来又跑KaKa家,实在撑的厉害。幸好在家一天消化了不少,撮就撮。于是跑到小尾羊去撮了顿赞的。然后席间小方跑过来问我有个师姐要请教问题(嘿嘿嘿嘿……我伟大吧),他已经同意了,问有时间吗?我说可以啊。后来小方说我运筹补考就是这个师姐代替监考和批阅,所以直接替我答应了,希望不要生气云云…… 靠,我生啥气啊。简直是拯救我于危难中。哈哈,谢谢小方,谢谢陈峰,谢谢蒋祖华。马师姐,您爱问啥就问啥。保证知无不言,言无不尽,不知道的回去给你查。请教绝对不感当,只要你不当我就行……So两点多撮完后,跑到东食,解答师姐的问题。实在很简单哎,只是如何使用的问题。不过模型建不上去让我比较糗,有功夫问问KaKa好了。 解答完毕已经快四点了。打电话问过同学,他们跑到了兰坪路上一家叫自由港的KTV去K歌了。赶快从校门口拉了部QQ去那里。过去一看,结果还没有开始唱呢……嘿嘿,赶上去猥琐了番(不过没有贱人和老大两个猥琐),喝了点饮料(失误……),然后五点多接到荷马的短信,说要初中同学聚会,改在了晚上。嗯,地点在……还是“小尾羊”! 靠,我过去的时候,眼睛都不知道往哪里看。总觉得很尴尬。中午刚刚撮完,晚上又跑过去……有没有搞错?然后席上吃了点就over了,都不知道该怎么吃,中午实在吃的太饱了。不过吃东西的前段时间是大家抢啊,后面就是……谁吃啊,谁吃啊……看来大家近几天吃的都很辛苦。 聊了聊,发现有三个要出国的,N多准备出国的,还有e的N方多已经在国外的我认识不认识的大牛。怎么大家都往外跑啊……GiGi也是……小姚也是……老鼠也是……靠……都知道我外语不好。算了,自立自强,坚持自学计算机…… 对了对了,先记录下来。鸡问了一个DB的问题,如何放置大规模二进制数据。现在估计下来是读写不正确,回头问问他加没有效验返回值和错误状态。还有要了所有同学的手机号码(嘿嘿……),可怜了我的手机卡。希望所有我加了MSN的friends看到本页的时候不要生气,不要惊讶,嘿嘿。 最后本来准备去物理王老师家玩的,结果发现不在家。然后商量怎么回去。鸡说他有车,我们大喜过望。然后他悠闲的补了句……不过要半个钟头……吐血ing。好你个鸡,回头我碰得到电脑了,整死你……!@#¥%^&×(。罢也罢也,就凑合坐个徐闵线吧。最后和顾功坤李白璐杨卿边聊边晃到车站,坐车回家。发现两个广电的都不知道我认识甄小璐……明明路上都会打招呼的说。真是……怪事天天有,毕业特别多。算了,不计较这个问题了,赶快上地铁吧,我热死了。哎,今天还真有意思,不过还是家里舒服。 最后地铁上,小方个家伙打过来问我要不要去养思亭。本来挺好的,我四年都没有去过说。(记得找个时间去次,否则抱憾终身,初中就没有去过,都十年了)但是很遗憾,我都在地铁上了。还因为把这个答案吼回给小方差点没有下车。我!@#$%^&*()_+}{”:?

KaKa的家

Jun 23, 2005 - 1 minute read - Comments

昨天KaKa带我们去了她的家,我们终于见到了传说中的KaKa的父亲。果然能喝,居然要求男生两杯女生一杯,点名要求我三杯。幸好后来有事,把这个事情给揭了过去,否则我就回不来了…… 对KaKa家的第三印象,好大,第二印象,环境好漂亮,第一印象,蚊子好多……晚上睡觉的时候没有被子也没有枕头,放我们在外面就是喂蚊子的。幸好小费买了瓶蚊补丁,打上后果然稳定多了……不是不是……是蚊子少多了。早上给大班叫起来,发现三个女生通宵到七点半。汗……好恐怖的精力,贝壳是困了就要睡觉了。 孙大班的家啥都好,就是路远了点(当然,蚊子也多了点……)。从学校过去是两个多钟头,偶跑回自己家又用了两个钟头,加上去学校的两个钟头,可以证明,三者形成等边三角型。贝壳出来的时候,孙大班还特意嘱咐在对面乘车。结果贝壳是属蚂蚁的,先爬会熟悉的地头,再走熟悉的路线。特意开回南汇,然后一部班车到家。省却不少麻烦,就是乘车时间稍微长了点。 昨天晚上喝酒当中不知道怎么提到的(好像是杨文卓喝酒不喝酒弄出来的),袁乐突然发神经,要在毕业一周内结婚,预定时间是七月一号,因为是党的生日。各位各位,如果我们全班没有被耍的话,七一贝壳就要去重庆玩两天了。虽然临近答辩,老师催的很紧的说。这些都不重要,但是……但是……但是我的钱包啊……负债已经一千五百了,再下去毕业前就要预支一个月的薪水了。