查看文章 |
DOS时代,所有程序都运行在640k常规内存空间,也包括操作系统本身,全部1M内存空间向大家开放,要靠程序员的自律来保证你不去找操作系统和别人的麻烦,可算是“上古竞于道德”,内存随便可以访问所以你就不能制止对内存的恶意存取,DOS连自身都难保,更别说要和谐其他程序之间的关系了(也不用和谐,因为这640k就是为一个程序所拥有的,你方唱罢我登场,大家只能轮流上台,你想编辑着word听听音乐,那是做梦)。这时候出现的病毒也比较简单,文件型病毒一般是修改大家公用的DOS或BIOS中断,把原有中断地址改为自己的地址,自己干完一些勾当后,提上裤子再将控制权转交给操作系统,就像文强一样,大家需要法律援助时,以为找到他就算找到政府了,其实他是在处理完自己的一些事情后,才再按章办事。那时中断向量地址在最低位的1024的字节,随便改。256个向量空间就像为我们提供服务的自来水厂,超市,电信局... windows95时代,借助386以来强大的保护模式,操作系统开始有了特权,程序开始有了贵贱等级。内存中出现了阶级。普通用户程序如果做了不该做的事情,操作系统会提示“你执行了非法操作”,非法操作其实是有可能你去访问了操作系统的内存。现在内存的地址容量可以说是鸟枪换炮,从640k变成了4G,4G只是虚拟的,是你的可访问地址可以达到的一个界限,俗话说,心有多大,天地就有多大。4G也是这意思。现在人类可以到达月球,但你出不了银河系,那么地球周边就是这4G空间,你还得有钱折腾才能到月球。 windows自身得到了保护之后,又肩负起了美国的责任,那就是维护世界和平——避免程序之间自相残杀。现在我们可以听着音乐编辑word了。 顺便也可以种种菜啥的。 现在的病毒开发也就没那么简单了,你需要了解内核编程。但总得来说,还是中断那一套,只不过所有中断都存放在一个叫做IDT(interrupt Descriptor Table)的表里面了。原来DOS时代叫做“向量”,其实就是一个段地址(16位):偏移量地址(16位)的4字节数据,现在要使用IDT先要获得一个索引,索引后面不但包括地址,还包括一系列安全特性,比如优先级等。这就像古代大家的人际关系只限制在一个方圆十来里的范围,大家都清楚自己的亲朋好友住在什么地方,现在社会发展了,大家手里只能攥着一个手机号了。当然,也会有些人你觉得和她挺熟的,但连QQ号也不会告诉你。 道高一尺魔高一丈,病毒总是越抓越多。 有点像庄子说的,圣人不死,大盗不止吧 (我在97年windows95已经比较普及的时候,还买了一本大厚书:dos中断大全,其实不过是本dos文档的解读罢了,当时真傻,也许注定就是该out的吧,操作系统比较熟悉了,大家又开始做网站了,Java EE的模式,从strut到spring再到JSF,也许只有程序员才会在我这个年龄体会暴风骤雨和山乡巨变的吧~) |