Shell's Home

Jul 3, 2005 - 1 minute read - Comments

COM运作机理初探

今天偶看本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。好你个鸡,回头我碰得到电脑了,整死你……!@#¥%^&×(。罢也罢也,就凑合坐个徐闵线吧。最后和顾功坤李白璐杨卿边聊边晃到车站,坐车回家。发现两个广电的都不知道我认识甄小璐……明明路上都会打招呼的说。真是……怪事天天有,毕业特别多。算了,不计较这个问题了,赶快上地铁吧,我热死了。哎,今天还真有意思,不过还是家里舒服。 最后地铁上,小方个家伙打过来问我要不要去养思亭。本来挺好的,我四年都没有去过说。(记得找个时间去次,否则抱憾终身,初中就没有去过,都十年了)但是很遗憾,我都在地铁上了。还因为把这个答案吼回给小方差点没有下车。我!@#$%^&*()_+}{”:?

Jun 23, 2005 - 1 minute read - Comments

KaKa的家

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

Jun 19, 2005 - 1 minute read - Comments

大教堂

很久以前就听过巴利奥斯的大教堂,不过一直都不知道叫什么。(相信大家也听过吧,尤其是男生,CS中某关在教堂附近的音乐……)然后,我学了吉他,知道了名字。不过很抱歉也很遗憾,我弹不来。嘿嘿,好像我有点懒…… 不过大教堂的却也够难……不但技术上要求技巧高,弹奏速度快,而且持续时间超长。技术差点,不是弹不出来,就是断断续续,或者根本弹不完。开始的时候就要用拇指食指中指交替快速弹奏,我现在连这段都无法连贯弹出来。看来弹完它这个梦想是终身无望了…… 大教堂给人的感觉有点庄严不是那么特别的庄严。每次烦躁的时候听,心里面都会平静下来。但是静心仔细听,又给我一种蠢蠢欲动的感觉。上跳下窜的音符引发隐约的躁动,仿佛要发生什么,又什么都不会发生。每个走向都非常出人意料,就像人生,你永远不知道下一刻你会得到什么。

Jun 18, 2005 - 1 minute read - Comments

blogs

今天觉得MSNSpace还不错,呃,我没有在做广告。刚刚发现上面可以加入音乐列表和图书列表……虽然这些都需要外置空间的支持,不过,it’s better then nothing。今天加了五首动漫曲和六首吉他曲。回头再改。我实在无法在更改IP的时候更换太多的URL的IP。也许我真的应该申请一个虚拟域名了。 OK,最近还不错,除了昨天晚上发神经的和real抱怨了通中国的软件业,还有和Gigi抱怨了通女人和结婚。其余一切OK,在此谢谢Gigi和real。 另外,最近开始分析NTFS格式了,看了MFT的说明,不过好头晕。现在下了一个linux内核中附带的NTFS解析部分在看。呵呵,也许我应该先吧前面的想法搞定,不是吗?不过现在不管这些了。反正我只是在玩电脑,快乐就好。也许几年后,连我自己都会忘记曾经有这么天,我在小小的房间里面,独自研究着NTFS。不过谁在意呢,千百年后,我们中的多少还能留下名字?与其将生命浪费在无谓的虚妄中,我更宁可做点现在就可以快乐的事情。而电脑,就是其中之一。 今天下了BitComet0.59用,终于支持用户列表交换和DHT了。感觉真好。不能不说,BC是目前国产软件中最有活力的一个。不是说推出的速度和宣传,而是各个软件的方面。例如支持XML,支持多语言扩展,各种新技术(像UDP内网穿越),广告,内嵌浏览器,内核定制和重用。让我想起以前的netant,winamp等等软件,充满了活力。也许软件维持活力和生命的关键,在于不断引入新鲜血液,并且加入市场来活化它。可能在几年后,现在BC的缔造者会成为将来的网络新贵。不过现在一切都还未知。

Jun 13, 2005 - 1 minute read - Comments

抱怨

吃了人家的免费午餐,照例应该专程为人做做广告,致致贺词。不济也不应该抱怨连连。不过MSN的空间的却引我腹诽。过去的文章找不到……不知道是我方法不对还是什么。如果真的如此我干脆另觅它处,好过我珍贵的文章白白无人看…… OK,先放下MSN空间的问题吧。本周我分析了UPX的压缩原理分析结果亦不外如是。不过话说回来UPX毕竟不是专业的防跟踪壳,仅仅是资源压缩程序而已。好分析也没有什么值得意外的。 源程序如下,是最最出名的Hello,World.: #include "stdafx.h" #include <windows.h> #pragma comment(linker, "/ENTRY:main") //#pragma comment(linker, "/ALIGN:0x1000")//这厮一上程序就变成3k党了,然后UPX就死气活样的不肯工作 #define put(x) WriteFile(hOutput, (x), sizeof(x), &amp;NumOfBytes, NULL) #define get(x) ReadFile(hInput, (x), sizeof(x), &amp;NumOfBytes, NULL) HANDLE hOutput, hInput; DWORD NumOfBytes; void main(){ char tmp[1]; hOutput=GetStdHandle(STD_OUTPUT_HANDLE); hInput=GetStdHandle(STD_INPUT_HANDLE); put("Hello,World.n"); get(tmp); return ; } UPX压缩下来的程序,section会变成三个。UPX0,UPX1,UPX2。其中UPX0是虚段,具备实际的段名称和段地址,但是RawDateSize是0。所以这个段在载入后是全0数据。数据和解压代码合并在了UPX1段中,由UPX1的解压代码注入UPX0的段中。看样子解压代码是附在了最后,从入口点到段实际内容结束点之间的范围。而UPX3的段最是搞笑,是一个单独的ImportTable,仅仅导入了Kernel32.dll中ExitProcess,LoadLibrary和GetProcessAddr三个函数。UPX1在解压并且注入UPX0后,会调用这三个函数来分析和获得每个导入表项的地址,然后完成导入表的动作。 换言,程序在从UPX1段JMP入UPX0段的瞬间,从UPX0段DUMP出来的数据就是正常的数据,除了要重建Section,并且重建所有DateDirectory外。 OK,下面说说压缩算法的问题。上面可以看出,压缩动作不难,但是算法我可没有能力分析和实现。所以我脑筋就动到了zip算法上去。可是根据我以前看zip文档得到的经验,zip内部分多种格式。貌似rar也分多种格式。所以我不打算挑战极限,自行写出每种算法的代码。不过我打算做一个标准的扩展接口,可以让所有的压缩算法都容纳在这一个框架内。并且可以支持多种压缩文件的格式。对上可以封装成标准的文件读写函数,然后再写一个COM组件,让所有的人都可以任意的运用(嘿嘿,写网页的人估计最需要)。至于后面要不要写一个什么东西让整个windows可以把压缩文件无缝的当成文件夹处理,那就再说了。

Jun 8, 2005 - 1 minute read - Comments

babylon

真TMD麻烦,从网络上下了一个babylon。上了破解补丁,然后发现不能安装词库。安装词库就会出现授权无效,然后八天一过就用不了了。毛主席说,自己动手,丰衣足食。拿出OllyDbg拆开研究看看。反正补丁的类型是文件改写型,不用担心太麻烦。 不过我还是低估了babylon的难度,从昨天晚上到今天下午,经过将近一天的努力,我还是绕在babylon里面出不来。关键是我找到了显示判别无效的代码,但是在附近没有找到判别代码。NND原来他的判别代码在很久以前执行的,然后放在全局变量里面。害的我好找。然后发现判别代码分了两部分,一个是判断是否有效,一个是判断是否过期。经过一天的修改,还是没有发现过期代码的识别。不过幸好后来想到有一个现成的key,只是因为词典安装太多给识别成无效。这个好解决的很,前面的判别自动判断为有效就好了。然后跟踪后发现修改一个字节就可以暂时解决这个问题。不错不错。 然后是写补丁的问题,我上了一个原来的补丁壳子。发现这个补丁壳子实在奇怪,明明写的是8,却按照B去编译,结果修改地址错误了,导致破解失败。更倒霉的是程序把备份文件的名字起的和网络上的补丁一样,结果按照补丁规则默认覆盖了。闹的我连原始文件都没有了……不得以只好将现在的程序备份重新安装,然后提取出一个主文件来。看来不重新写一个补丁壳子不行了,这次写的完美点……

Jun 6, 2005 - 1 minute read - Comments

郁闷,发不了了……

病毒编年史已经写好了,不过奇怪的是空间不能用。怎么都发不上来。莫非是我东西太大,导致微软对我的抵制? 今天去参加讨论,得知毕设答辩如果在七月进行肯定没好分数。而且答辩如果过了七月中旬没有结束就直接结业没有毕业。老师还不紧不慢的和我说你不用着急……我快崩溃了。软件写好了就在家天天呆着闲闲没事干,这样如何能不着急。 算了算了,还是不说了。昨天破解了CCProxy6.0,很好的一个软件。不准备发出去,毕竟人家是软件公司,不能坏人家生意。不过挺高兴,软件破解技术终于可以搞点实际的东西了。破解的时候挺痛苦的,重起N次。 然后还发现一个木马蠕虫。通过LSASS的某个后门运行tftp下载代码,结果给天网截获了。然后用ProcessExplorer查出来,下载文件来分析。貌似被压缩过分析不出来,司机的在线引擎给的结果是Rbot。反正我不管这么多了,能下载就让我一身冷汗,本来还以为系统挺安全的。赶快下LSASS的补丁打上,然后又下了一个SSS扫描本身的系统。发现了五个严重漏洞,一个中等漏洞。那个中等是匿名ftp,不用理他。一个是winamp漏洞,要升级到最新。去,最新的winamp又大又难用,我才不干。还有一个是jet漏洞,上补丁后解决了。最后三个FTP绕回漏洞,现在在想办法…… 真的是好久不玩安全技术了,居然被人打到家门口才发现。要不是这个服务器配置比较严格,就会被入侵了。我在想能不能开个公司,专门写程序检验你的系统和上面的软件,软件的版本。发现某个版本的软件就查漏洞数据库,找漏洞检验程序。然后扫描没有打的补丁,再专门下载补丁打。这样可以分担网管大部分的工作。不过在中国是否可行还是未知,毕竟中国的网管观念里面,出了问题再解决才能显得自己的重要。漏洞全让你自动打光了,我吃什么?

Jun 4, 2005 - 1 minute read - Comments

病毒编年史-近古

近古时代是以win9X的兴起为代表的,这个时期后,人们对于保护模式编程有了相当的积累。更换系统变化的是系统结构,而保护模式的各个易于错漏之处一直保留到现在。同时病毒也开始向跨平台和多样化发展了。难倒病毒编写者也感受到了平台变换的阵痛? AD 1995,宏病毒出现,代表作 Word Concept,作者未知。 贝壳评论: 这个病毒的意义是打破了人们对于非可执行文件不会中毒的认识。使得非可执行文件也成为了病毒的媒介。并且降低了病毒的技术门槛,使得病毒技术从生僻技术变成了人人都可以接受和理解的技术。制作者从必须懂得各种计算机内部机理变成只需要了解Word宏的编写,从客观上加速了病毒制造的普及。 同时这个也是典型的一个概念型病毒,病毒并不具备破坏性。更多程度上是和Fred Cohen一样为了证明自己的观点而做的。其症状是Word的Normal模板中会出现两个名字为AAAZAO和AAAZFS 的宏命令。另外还有一个PayLoad宏,该宏只包含一句话“这足以证明我的观点(That’s enough to prove my point.)”,而不做其他事情。 AD 1997.6.24,KV300L++事件。某种意义上说,KV300L++事件不是病毒。不过,这个事件在病毒技术,反病毒理念,反盗版理念上造成极大冲击。关于事件我摘录如下: 1997年6月24日王江民先生在其主页上发布了kv300l++版,内含逻辑炸弹。凡是在mk300v4制作的仿真盘(盗版盘)上执行kv300l++的用户硬盘数据均被破坏,同时硬盘被锁,软硬盘皆不能启动。从网上的求救信息可以看到,包括在校大学生的毕业论文被破坏,kv300的代理商的电脑遭到破坏,求救的人不计其数(网上的求救信息并不能作为证据,因为不能排除有人误判断及有假消息)。从常规上可做推断:kv300当时至少有几十万正版用户,盗版用户可能远远大于这一数字,可见此逻辑炸弹的影响之大。首先王江民不是执法者,无权对盗版用户进行打击,另外,被打击对象也不应该是用户,而应该是制作盗版的厂商。1997年9月8日,公安部门认定kv300L++事件违反计算机安全保护条例之23条,对其做出罚款3000元的决定! 另外还有这个事件的一个评论:http://www.chinabyte.com/20011224/1428573.shtml 贝壳评论: 原理上说,KV300L++逻辑炸弹是通过修改硬盘MBR区中分区表导致逻辑死锁所致。属于系统漏洞的一种应用,解法可以使用修改过的IO.sys等等,在此不赘言。就理论上说,KV300L++是严格的恶意代码,关于逻辑锁的解释根本不能成立。假如逻辑炸弹造成损失可以通过技术途径修复,那么就都不叫逻辑炸弹了?并且就行为上说。中国计算机保护条例中打击的范围是制作,传播,销售盗版。江民公司通过打击用户的方式制衡盗版。无论有无效果,客观上打击了客户。就角色上说就更离谱了,江民公司根本不是执法者,连直接打击盗版商的权利都没有,充其量就是能够起诉盗版商而已。最恶心人的是,江民公司在事先一字未提,其原因为何不说,本身绝对侵犯了消费者知情权。后期的很多评论各有偏向,不排除江民公司和对手在做商业宣传的可能。在此引出的问题是,软件保护究竟如何做? AD 1998,java病毒出现,代表作 StrangeBrew,作者未知。 贝壳评论: 此种病毒代表病毒编写由平台相关迈向了平台无关。从某种意义上说,此种病毒和上面的宏病毒都属于源码病毒,更严格来说是脚本病毒。依靠脚本来传播,因此编写非常简单。当今流行的多数病毒都多少带有这种特征。 AD 1998.6,9X时代巅峰之作 CIH,作者 台湾大同工学院 陈盈豪。 贝壳评论: 说起此君真当是病毒史上又一传奇人物。CIH小小一个病毒,大小约1K,连续创下四个世界之最。最早的大规模硬件破坏病毒,最早的windows核心态感染病毒,流行事件最长,破坏最强。而且这个病毒本身不变形不加密,仅仅通过windows的段机制拆分重组来破坏特征扫描。堪称病毒史上的经典作品。其源码公开,有兴趣做windows核心研究的一定要下一个来看看。不过这个病毒的设定还有点搞笑,CIH取自作者的姓名台湾拼音,病毒发作的时间之所以定在4月26日,因为那是他的高中座号,也是他的绰号。 同时此病毒的解毒方法也成传奇了,五花八门的解毒方法另人瞠目结舌。因为病毒破坏了硬件,所以所有软件解毒方案全成了空话一句,反到是各种偏方效用非常。例如热插拔法就是在此时风行的。很多用户也首次接触了编程器和刷新BIOS的概念。BIOS刷新中的防刷死(BlackBlock方法)成为必备条件。硬盘数据恢复中常用的种种数据修复工具和数据修复方法也是从此时开始流行的。 就贝壳查找的资料显示,作者陈盈豪在99年4月曾经入狱,2000年被发展Linux操作系统的美商网虎公司聘请为工程师,负责硬件事业部门的研究工作。 近古时代就此终结,就传统意义上的种种病毒来说。至今尚无超过CIH的。