微硬软件平台有销售网络,利润也很惊人。在软件开发者看来,这家微硬软件能放弃垄断利润,向软件开发者敞开怀抱,鼓励他们开发出更好用的、符合用户要求的软件,真的是一件双赢的大好事。
随之而来的,大量的软件开发者,向微硬软件平台公布的电子邮箱,发送自己开发的软件,源码和软件开发框图。
张毅呆在粤州的十几天时间,除了偶尔陪陪骆冰云逛街、吃饭外,基本所有时间都用来检测这些发送过来的软件。
软件涉及的领域很多,不下上百个。尽管质量方面良莠不齐,但也是一个好的开始。
好用,无BUG的软件,他先收录进去。
想法不错,但软件有明显BUG的,他会给开发者发出更正邮件和一些建议,让对方修改后,再次发送过来审核。
至于那些玩笑性质的软件,他也给发出了感谢信,并提出中肯建议。
得益于脑域的开发程度,以及后世积累的测试经验。张毅为了偷懒,做出了一款测试软件,包括功能、稳定性、漏洞等等的选项,所有测试基本全部自动化完成。目前来说,这款测试软件可以说是他花费功夫最多,集成功能最多的一款软件。
作为软件开发者来说,懒惰才是前进的源动力。
收到电子邮件的开发者们,看着上面密密麻麻列出来的BUG说明,和合理化建议,感觉受到了莫大的尊重和鼓舞。
最重要的是,提出的优化后的软件框图,比自己之前的框图更合理,更简单,代码量更少。
张毅的认真回复和建议,在软件开发者的圈子里,引起了轰动。
对于软件开发者来说,测试软件,是远远比开发软件更困难的事,没想到通过向微硬软件平台投稿,测试过程和合理化建议都完成了。
在开发者们看来,这家微硬软件,肯定集中了一大批的软件测试人员,不然,完成不了这么大的工作量。
微硬软件平台的积极回复,在软件开发者圈子里兴起了波澜,传播的范围也越来越广,不断的,有新的软件被发送过来,哪怕不被收录,也能得到宝贵的建议和测试机会。
个人开发者和小公司,可没有富裕的资金,来供养一大批专业的测试人员。
正在积极忙碌的时候,脑海中又传来了久违的提示音,脑域开发度26%。随着审核软件越来越多,提示音也随之越来越频繁,27%,28%,一直到30%。
随着30%的提示音响起,脑海中源源不断被塞入了大量的汇编语言知识,有IBM—PC汇编,也有AT&T汇编,这个收获让张毅惊喜不已。
汇编语言以晦涩难懂著称,各种专有的寄存器,以及寄存器之间使用的八进制,或者十六进制的计算方式。
当然,最让人头疼的还是直接操作内存地址的方式,简单粗暴,这也是最折磨人的。
汇编语言是除机器语言外,最接近底层硬件的语言,语法简洁,功能强大。C语言和C++还有很多其它的高级语言,就是编译成汇编语言后才在计算机内运行的。其直接操作内存的强大功能,也最让人迷醉。
想想一年后,也就是1998年的6月份,原宝岛技嘉子公司旗下的员工陈盈豪,将会制做出世界上影响最大的,造成最大损失的CIH病毒。
这个病毒就是用汇编语言制做出来的,其最早的病毒版本才900多字节,但却会破坏电脑主板的BIOS系统,让基本输入输出系统彻底瘫痪。
最让人郁闷的是,这个病毒会破坏电脑的硬盘,不断的给用户电脑的硬盘引导扇区,写入垃圾信息,导致全球上百万台电脑,在4月26号这一天,主板损坏,硬盘数据丢失。
其最后一个版本V1.4,会在每月的26号发作。
从最早版本的CIH V1.0,900多字节,到最终版本的v1.4,才1200多字节,可见汇编语言直接操作内存和中断的能力有多强了。
除了众多的汇编语言的知识外,张毅的脑海中也闪现出了CIH病毒的源代码,代码简洁得美丽至极,他怀着崇敬的心情研究了很久。
代码其中一段如下:
push esi
mov esi, eax ;esi指向病毒开始处
LeAllVirusCodeSe:
mov ecx, [eax-04h]
rep mov s b ;拷贝病毒代码到分配好的系统内存首址
sub eax, 08h
mov esi, [eax]
or esi, esi
jz QuitLeAllVirusCodeSe ; ZF = 1 ;拷贝结束
jmp LeAllVirusCodeSe ;拷贝下一段
QuitLeAllVirusCodeSe:
pop esi
现在是1997年,也就是说,明年开始,CIH病毒将会随着盗版光盘销售的链条,泛滥成灾。
看来,要尽快研发一款免疫软件,让使用微硬软件合辑的用户免受损失了。
软件开发者制做的软件,全部处于操作系统RING 3应用层级别,而CIH病毒是运用windows系统的VXD虚拟设备驱动技术,通过巧妙的方式,获取了驱动层中的RING 0层权限,从而获得了调用INTEL CPU的80386的DR0寄存器的权力。
免疫软件很简单,就是抢先从CIH病毒手里,抢夺DR0地址寄存器的权力,没有DR0寄存器的权限,CIH病毒就无法向电脑主板和硬盘写入垃圾信息来大搞破坏了。
将制做好的免疫软件写入到最新一期微硬软件合辑中,当然不能取名字是CIH免疫软件,只能说是微硬病毒免疫软件,至于用户愿意不愿意运行,他就管不到了。