关于王江民先生几点

前几天惊闻王江民先生离世,我说不上是高兴还是难过。按理说,逝者已矣,种种是非也应当随风而去。然而一个人存在过,就必然有存在过的痕迹。我仅从我个人的观点,追述一下江民杀毒的印象。
我是谁?平凡的电脑用户,95年接触电脑,97-98年刚好赶上KV300L++。然后换用了金山毒霸,04-05年换用Avast。08年换用Linux,因此裸奔到现在。
在DOS时代和前Windows时代,江民杀毒是杀毒软件中的佼佼者。最初的时候,最流行的杀毒产品是防毒卡。好像当时做电脑的人有硬卡情节,什么产品都搭配卡。汉字系统有汉卡,杀毒系统有防毒卡,就是放个VCD,也有解压卡。Whatever,防毒卡一路很牛,直到DIRII病毒出现。这个病毒直接将自己挂入了DOS的设备驱动链,从而直接修改了系统,这个方法很像现在的Rootkit技术。这个思路直接导致了防毒卡的失效,而KV系列,就是这个时候涌现出来的佼佼者。KV系列的成功,一在于他强大的杀毒能力,二则在于强大的抗盗版能力。当时我也有玩汇编/反汇编,底层编程一类东西。因此很是惊艳王江民先生强大的代码能力。KV系列当时可以查杀几乎所有的病毒,电脑报纸上几乎每期都有专栏,说最近出了什么病毒,大家要扩充防毒码。现在的用户可以想象这种情况么?
在97-98年的时候,我碰到了KV300L++事件。简单来说,江民公司在KV300L++版本中加入了主动逻辑锁,当满足某些条件的时候自动触发,锁定用户的电脑。无法重装,也无法解除。具体的手法是通过修改硬盘的分区表链,做出一个循环的分区表,导致DOS系统识别失常。必须使用特殊的方法进行解锁,或者联系江民公司,进行书面的原因说明(其实就是盗版举证)。这篇文章(http://hi.baidu.com/inetpm/blog/item/9e7bea0f02e0e9266059f33a.html )中,将此事描述成正版软件商对盗版的战争。对此我表示强烈的抗议,这根本不是事实,而且我强烈怀疑此人是个枪手。我是一个KV300的受害用户,自然很清楚当时是什么情况。上文中有一段文字,我引述如下:

L++事件出来以后,王江民受到围攻。网上各种言论都有,但就是找不到L++事件的真实受害者用户。这一方面是因为L++网络升级版只在网上放了六天,二 是因为正版用户和使用没授权的解密版KV300的用户绝不会受伤害,被锁住机器的是那些在大量生产假冒KV300的盗版商。王江民自信“这个逻辑锁就是这 样准确!“

KV300L++在判断用户当前插入的盘片不是江民的原始加密盘之后,会释放主动逻辑锁。这就是上文说不会波及正常用户的理由。然而,当时有大量正版用户受到伤害。至少我当时去抗议的时候,看到某个大叔拿着一堆正版包装在那里骂人,全公司都买了正版,为什么锁他电脑。为什么出现异常波及呢?因为KV300L++释放逻辑锁的条件并不是“插入的盘片有某个盗版加密盘特征”,而是“插入的盘片不具有正版加密盘特征”。这两点看似一样,但是实际上天差地别。前者逻辑炸弹很难释放,也很难奏效,而后者就很容易伤及无辜。我中标的原因就是因为搞不清哪张盘是正版的KV300加密盘,把一张游戏盘片插了进去。我相信大多数中标的人也是基于类似原因。
从更深的层次来说,软件公司有权对盗版用户做出惩罚么?可以,但只能走司法途径。如果允许软件公司私下对盗版用户进行惩处,这就等于赋予软件公司权力来伤害任意个人。因此当年,公安部对江民公司罚款3000元,不再追究。与其说是惩罚,不如说是保护。如果没有这个处罚,我相信江民公司会面临遍地开花的侵权诉讼官司——按照法理,即使盗版用户都可以起诉。因为逻辑锁是未经认定的,因此从法理上说,被逻辑锁锁定的人并不能认定就是盗版用户,更何况这个认定机制根本不准确。只要不去解锁并承认错误,江民公司就无法举证受害者一定使用了盗版。江民公司锁定用户电脑是事实,很容易举证确认,而反过来举证用户使用盗版却很困难。前者是侵权官司,证据全面,法律完善。后者则是版权官司,没有什么确凿的证据,更何况当年连版权法都没有——如果有版权法江民公司更倒霉,版权法规定基于学习目地可以合法使用24小时,这下更难举证。
何况其中大量的无辜正版用户,其中有很多人被无辜波及。至于后来Windows时代的没落,也不能说和这个无关。上文我看到的大叔,直接赌咒发誓,他这辈子不会用任何江民公司的产品。而江民的KV系列软件为了保持加密优势,在Windows时代还继续使用底层的软驱设备直接编程。先不说稳定不稳定的问题,我01年配的电脑连软驱都没有,用个P啊。直到很后来,江民公司才改掉了这个做法。更严重的问题是,由于后Windows时代,尤其是2000以后,对用户权限进行了严密保护,加上系统API的更新换代。导致杀毒软件技术推翻从头再来,杀毒软件商大洗牌,江民公司从此一蹶不振。现在的新用户也许听说过卡巴斯基,也许听说过瑞星,也许听说过金山,但是有多少听说过江民杀毒的?给别人推荐软件的人自己想想,你推荐过么?
当然,就我个人感觉而言,王江民是强力的程序员。做事踏实,技术高超。然而任何人都只是人而不是神。他是个好程序员,但不是好的商人。当技术上的领先没有被放到正确的方向,而是向着错误的方向发展的时候,一个伟大公司的没落就无法避免了。

手机病毒的真相

转载自http://blog.wangyingqi.com/2009/04/03/137/,以下为内容。


防止被骗,帮我宣传,随便转载,不用署我的名字都行。

作为一个软件从业者,我有很多其他领域的知识盲点,当我看到有人揭露私人豆腐坊的生产过程之后,我就再也不敢到小市场买豆腐吃了。当我了解到药品销 售者和医生勾结向病人推销过量药品这个事实后,到医院买药我都要仔细查看药品的名字和功效。没有人是全能的专家,我很有自信不会在计算机和软件上受骗,但 是难保 其他人不被骗。写这个文章应该算是社会责任,于是,我这次充当内部人士揭秘,来看看手机病毒的真相。
普通用户对手机的了解还是太少,能分清智能手机和非智能手机的人就更少了。能知道所谓Symbian和Windows Mobile系统的区别,知道iPhone和RIM这些单词的人算是很高端用户了。不单单普通用户不知道这些概念,连同样是作软件但是不做手机软件的技术 人员,也都不清楚这些操作系统的最基本的知识。于是,目前大家能见到铺天盖地的手机病毒爆发,3G来了要装手机杀毒软件,手机中毒后隐私外泄等等如此骇人 的广告和说辞。那手机病毒很多嘛?我的手机很慢是中毒了嘛?到哪里装手机杀毒软件?哪个手机杀毒软件最好?一个月多少钱?如果你心中有以上那些问题,那么 很荣幸的告诉你,你已经被骗了,你忽略了一个最重要的问题。

手机病毒真的有嘛?

首先我们来区别一下智能手机和非智能手机,目前的数据是国内已售的智能手机占整体手机市场20%,虽然我坚信这个数据会越来越高,但是就目前来看, 如果你 的手机不是诺基亚,三星,摩托罗拉,苹果iPhone,黑莓,Palm,多普达,HTC等这些稍高端品牌的话,就基本不用担心手机中毒的事了,也许有人说 手机品牌不就是这些嘛,其实能看到这篇文章的人也算是互联网信息圈内的人了,外面有大把的普通用户在用着低端手机,而他们才是最容易受惊吓,最容易以讹传 讹的不明真相的群众,传播正确的理念都靠我们了。如果问具体哪个型号的手机是不是智能手机怎么办呢?很简单的方法是到淘宝上搜索该手机,然后找一个信誉最 高的商家,产品介绍里面就有是否智能手机这一栏。在知道自己的手机是否是智能手机后,一个最浅显的结论是,如果你的手机不是智能手机,那么手机病毒和你无 缘。放心睡大觉吧,别为这事儿烦心了。

糟了,我的是智能手机哦。

别怕,继续往下看。软件病毒实际上是一种对系统有害,更改用户数据,给用户造成经济或名誉损失并能够自我复制自动传播的软 件。这个定义里面的一个很关键的词是”自我复制自动传播”,也就是我们常说的感染。智能手机都可以安装很多软件的,看起来就像普通的电脑一样,智能手机好 像具备了被感染的能力,也就有中毒的风险。那怎么才会被感染呢?又一个重要的概念出现了,一种智能手机操作系统的软件不可能安装在另外一种智能手机操作系 统上(这个说法有一个小漏洞,后面再补上)。如果不理解这句话的话,我来举个例子:棉铃虫是是棉花种植中的一种很严重的病虫灾害,在棉花的主产区很容易传 播和互相感染。但是,人是不会长棉铃虫的。我们不用担心去收棉花的时候染上棉铃虫。智能手机操作系统也是一样,塞班(Symbian,诺基亚智能手机的主 打操作系统)的软件只能在塞班的手机上运行,绝不可能在用微软移动操作系统(Windows Mobile)的手机上运行。拿iPhone的软件跑到诺基亚的手机上运行也是天方夜谭。结论就是,你只能被使用同样智能手机操作系统的手机感染。目前能 找到的智能手机平台大概是Symbian,Windows Mobile,Blackberry,iPhone,Andriod,Linux,Palm,还是一样,到淘宝上搜索自己的手机,查一下看看自己属于哪个 帮派?接下来我挨个介绍。

我知道我的系统是什么了,那哪个系统最容易中毒呢?

先说iPhone吧,这个最容易讲,一个正常的iPhone想要装软件只能到苹果官方的软件店上找,而苹果对软件的功能和安全性审查的极其严格,虽然有人 对这种封闭垄断行为很是不满,但是对最广大的普通用户来说,至少在安全这个问题上,用iPhone的根本不用操心。Google推出的Andriod智能手机操作系统,目前也是沿用这个策略,你只能装官方的软件店上的软件。用这个系统的朋友也可以放心大胆的用了。
Symbian是一个比较复杂的系统,市面上能见到的有Symbian s40,s60第一,二,三,五版,UIQ等。先找个简单的来说,Symbian s60 的第三版以及之后的所有版本,包括UIQ,在上面正常安装的所有软件都必须通过Symbian官方进行安全认证。或是用户自己给软件打数字签名作认证(这 个不讲了,普通用户不会这么干的)。Symbian虽然没有官方的软件店限制,但是签名认证这一点就已经给s60高端智能机一个很好的安全保证。不用 说做一个病毒传播出去,就连作一个正常的软件想要发布都会有很多门槛,必须买一个$200一年的开发者资格,每次发行一个版本都要付给官方$20认证后才 能大范围的安装使用。要想写一个恶意软件很容易,但是要装到很多手机上用并传播,基本上不可能。至于s60的第一,二版本,诺基亚在2005年的机型 N90以后就再也没出过这两个版本的智能手机了。他们的安全认证等级确实比较低,但是市面上已经没有这些产品卖了。大家也不用为古人担忧了。
Palm大家可以忽略了,已经很久没有Palm系统的新机出现了,近来要推出的Palm Pre会搭载新的操作系统WebOS。目前没有真机,但我相信这种现代的操作系统,都会十分注重安全性的。也先不用为未来担心。
至于Linux,其实手机上用的很少,摩托罗拉的A系列一直在折腾,单从血统来看,Linux的手机安全性肯定不必担心。另外,像这种比较偏门的机型,现在占有率不高,未来发展方向也不好。不用说病毒,就是正常的软件开发商都不想为他作软件。所以用这一系列的商务人士们也可以无忧了。
Balckberry的软件安装目前未见到安全认证机制,同上面未说完的Symbian s40一样,是市场上占有率较高且有中毒风险的系统。但是很有意思的是,基本上没有病毒爆发的迹象。而Windows Mobile也继承了Windows一贯的光荣传统,安全认证机制基本为零, 属于高危范围。而为什么目前没有很多手机病毒呢?其实,目前在电脑上,单纯 的病毒已经无利可图了,写病毒已经不再是一种技术炫耀,病毒作者已是无利不起早的经济利益偷窃者,电脑上的网游盗号,网银盗号才是他们要关心 的。手机上没有他们想要的,我们的认为重要的亲密短信,隐私图片,对犯罪者是没有吸引力的。这也是目前在这些相对危险的操作系统上也没有手机病毒爆发的重 要原因。
如果说要窃取利益,装了软件后在后台偷偷的发订阅服务的短信应该是最常见的方式了。但是为什么目前也不泛滥呢?这个和几年来整治SP提供商有关系,短信特 服号和厂商直接关联,SP资质非常的难拿到,敢作坏事就再别想作SP了。他们想赚钱倒是真的,但是没必要作这个犯罪风险这么高的事情。这也就是大环境好, 立法好会很好的杜绝犯罪,也会很好的杜绝软件病毒。电脑上也是一样,如果能有好的立法保护每个人的虚拟财产,目前的盗号木马绝对不会这么猖狂,说远了,不 要跑题。
差不多都说完了,再补一下刚才的那个漏洞,实际上一些Java的程序是有可能在各种不同的智能手机平台上传播的。但是有一个前提要说的是,Java的程序 能作的事情很有限,访问网络,访问手机上的文件,发送短信这些都会有十分明显的提示,让用户确认后才会进行。这个安全限制是在Java这一层次就已经解决 了。所以基本不会对大家造成什么风险。

可是手机病毒这么多人在说,他们都是骗人的嘛?为啥你说没有就没有阿?有人说有阿?到底有还是没有阿?

其实是真的有过手机病毒,当然目前都是恶作剧形式的,我看到的都是s40,s60第一,二版本,和Windows Mobile的早期版本的几个样本,为什么会中毒的原因,想必大家也有概念了,就是操作系统的安全性差造成的,但是大家不用担心,目前这些样本都不再活 跃,也基本没有啥传播能力了。算是一些待在实验室里面的样本而已。和广大普通用户没关系。就当前的流行手机操作系统看,我没见到任何可以称作病毒的东西。

那现在手机杀毒软件都是骗人的?

关于这个问题,我来分析一下目前国内一个卖的比较好的手机杀毒产品,网X。他在官方网站上放出了所有他可以查杀的病毒名, 一共216种。里面大部分的病毒样本是没有标明可运行的平台的,看了我上面写过的都应该知道。平台不吻合根本没法运行,还谈什么病毒行为?另外,他的产品 承诺每月升级4次病毒库,每次升级2块,或是8块钱包月,包年98(您没看错,就是比按月买还贵),两年的卡188元。从第一个有时间标注的病毒2008 年4月17日到2009年4月2日,一共有病毒53个,想起来也还不错。刚好平均每月4到5个,有这么巧嘛?接下来我们再看一下所谓的病毒是什么,最近的 一个病毒样本是一个Python脚本,我来解释一下这个东西要怎么才能运行,首先你要在诺基亚的s60手机上装一个目前只有程序员才关心的Python脚 本解释器,然后又碰巧别人传了这个脚本给你,而且你还要跑到系统中找到这个脚本并手动运行,OK,病毒爆发了,不断发短信了。听不明白吧?不知道 Python是干嘛的吧?运行这个病毒有难度吧?怎么可能中这个病毒阿,我真的是佩服这个厂商的智慧。”医之好治不病以为功”这句话在这里表现的淋漓尽 致,也真的是给安全软件行业丢脸。某个很有名的安全厂商卡X出租车司机也在做手机杀毒软件,10块钱一个月,作的事情没有比网X强多少。综上,骗不骗人各 位自己判断吧。

那手机很安全拉,不用管病毒这些事情了?

事情都要往前看,现在装手机杀毒软件很像给一个婴儿吃抗癌药,看似有用,但完全是庸人自扰。如果几个相对比较危险 的系统能改进安全措施,基本上手机病毒就没有出头之日了。但是难保将来不会有死不悔改的厂商继续漏洞一大堆还发行产品,不过我觉得那是未来的事情,手机基 本一到两年一换,有必要为自己明年的手机安全先买单么?其实说到漏洞,目前的几个操作系统都会不定期的发布一些官方的漏洞补丁,当然发放的频率很小,几个 月也见不到一个。前段时间诺基亚发布了一个Symbian s60第三版的短信补丁,不打这个补丁的话,有可能被一条特殊格式的短信将手机的短信功能破坏掉。安装也很简单,到诺基亚官方网站下一个就可以了。装上去 就万事大吉。其实个人认为不装也无所谓,我周围用诺基亚手机的人可以用一火车皮来形容,没见一个人中招的。

3G来了手机病毒是不是快要爆发泛滥了?

我的答复是3G和手机病毒一毛钱关系都没有。3G来了只会将智能手机推广到更多的用户那里,而安全的系统用的再多也不会有中毒的风险。我反而认为, 如过能监控一些软件的行为,比如能告诉用户有软件将要发短信,将要联网,将要访问文件,在适当的时候有一个提醒,就已经足够了。这也就是为什么电脑上的杀 毒软件越来越走下坡路,而360卫士这样的软件被更多人接受的原因。

那为什么有的时候我的手机会变慢,有时候会死机呢?

其实99.9999%是因为短信息太多了,或是同时运行的软件太多了,而手机的硬件性能会使得其不可能承载太多应用。解决方案是删除一些短信,关闭一些程序,或是直接重启一下手机基本就能解决了。

说了这么多,一句话概括一下吧。

目前手机根本就没有真正的病毒,忘记这件事情吧!

再听到有人提起手机病毒的时候请用这句话答复他,也请大家记住那两个公司的名字,不要轻易的相信他们那骇人的说辞。经济危机了,要捂紧自己的口袋。

防止被骗,帮我宣传,随便转载,不用署我的名字都行。

新种病毒出现

有新种病毒出现,大家当心。
病毒症状如下:
有MSN好友给你传一个网址,如同http://[用户名].imagecroco.info/。(贝壳注:现在已经被Mozilla列为欺诈网址)当浏览后中毒,会继续给好友发送网址。发送网址时用户离线,发消息用户不回复。中毒用户提示已经在另外一个地址上登录。
机理估计如下:
当你访问网站时,会被要求输入用户名或密码。或者被挂上马,等登录时被套出用户名和密码。当你不使用时,服务器会自动使用你的用户名登录,给你的好友发送病毒。如果不修改密码,即使本机清理病毒或者设置名称提醒也未必有用。

windows系统二、三

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

病毒编年史-当代

现代病毒的最大特征是混合化,商业化。可能同时具备文件病毒,木马,蠕虫的特征,很难界定其归属。也可能具备多种传播途径,在多方向传播。同时可能具备多个部分分别载入。病毒的意义也渐渐从无明确的多种意义渐渐转向商业化。
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.后记,病毒编年史的更新曾经一度中断。最后贝壳偶尔想起是否是文字中的某些病毒特征码导致的呢?结果果然如此,哎……此天意也(旁:又开始打太极了)。