我现在只想骂设计3721的祖宗18代,还想问候他们家的所有女性!!!
设计这种变态病毒,让我极度不爽。还有一个CDAC00BA.EXE文件,居然在dos下面都删不掉。
赚钱也要走正道,这样下去肯定玩完,走着瞧!!!
Programming My Life, Programming Everything…
我现在只想骂设计3721的祖宗18代,还想问候他们家的所有女性!!!
设计这种变态病毒,让我极度不爽。还有一个CDAC00BA.EXE文件,居然在dos下面都删不掉。
赚钱也要走正道,这样下去肯定玩完,走着瞧!!!
虚拟启动软盘VFloppy对于安装了Windows 2000/Windows XP(或多系统),又没有软驱的笔记本电脑用户来说确实很有用。但是笔者发现有一点不足之处,就是在DOS环境下无法直接访问各NTFS分区。笔者经过几番实践摸索,设法在此DOS环境中集成了一个访问NTFS分区的功能,在这里与大家共同分享。
首先需要如下软件(能实现相同功能其它软件也可以): RAMDisk NTV1.5 NTFSDOS Pro Win Image 6.1 VFloppy 好了,下面要开始实践操作啦,Let’s Go! 第一步 利用RAMDiskNT创建一个DOS启动盘的映像文件和虚拟软驱。 运行RAMDiskNT,按以下设置: 1.Disk Type(磁盘类型),请选择2.88MB Floppy; 2.Drive Letter(驱动器盘符),可以任意选择,但是不要与已有盘符相冲突!如果你的电脑没有软驱,不妨设为A;并勾选Start driver at boot; 3.Boot Sector Settings(启动扇区设置),请勾选DOS Boot sector; 4.Save Image Settings(保存映像设置),勾选Save Image on Save Image on Shutdown,至于Save Filemname可以自行更改,如E:\MSDOS\RAMDiskNT.img等; 5.Load Image Settings(载入映像设置),勾选Load Disk Image on Startup;Load Filename可以设成与Save Filename一样,这里设为E:\DOS\RAMDiskNT.img; 6.点击Start,然后用Save Disk Image保存磁盘映像,最后Save Settings,OK退出。这时你会发现“我的电脑”中已经多了一个驱动器,就是虚拟软驱啦! 这样我们就创建了一个DOS启动盘的映像文件,还有一个“软驱”。 第二步 利用NTFSDOS Pro制作NTFSDOS启动盘。
1.执行NTFSDOS Pro启动盘制作向导,直接点击下一步,至“系统文件设置”对话框,根据提示指定一个Windows NT/2000/XP系统的安装目录,对于多系统的用户,我建议选择Windows 2000的安装目录,如C:\Win NT(这样所需的文件相对较小,否则到后面2.88 MB Floppy可能装不下)。
2.点击下一步,按提示指定你刚才创建的“软驱”。
3.点击下一步,制作向导开始自动复制NTFSDOS Pro启动盘文件到“软盘”。完成后打开你的“软盘”看一看吧,OK!我们访问NTFS分区所需的文件就在这里了。
第三步 利用Win Image“合成”DOS启动盘映像文件。
1.执行Win Image,点击打开,进入安装(解压)VFloppy的目录,选择VFloppy自带的启动盘映像文件Boot Disk.ing。打开后再将它展开到某一目录,如E:\MSDOS\boot Disk;然后关闭映像文件。
2.打开第一步中制作的映像文件E:\MSDOS\RAMDiskNT,img,点击添加目录,分别添加E:\MSDOS\boot Disk目录和“软盘”中的C_936.gz、License.bin、NTFS.gz,NTFS pro.exe和NTOSKRNL.gz这五个文件,然后存盘退出。
至此,一个具有访问NTFS分区格式之功能的DOS启动盘映像文件制作完成!
第四步 利用VFloppy创建可访问NTFS分区的纯DOS环境。
执行VFloppy,选择上面所制作的映像文件E:\MSDOS\RAMDiskNT.img。这里请特别注意:“如果C盘(系统盘)用的NTFS格式,并且使用了磁盘压缩的,请确保C:Boot目录及其下面的文件没有被压缩”。点击应用,VFloppy提示重启系统。重启后启动菜单里就有新的纯DOS选项了。
近日接到内网用户来报,在上到某些站点的时候,会被提示安装一个叫3721中文实名的插件,部分用户在不知情的情况下误点“安装”选项,导致该病毒驻留于硬盘上难以杀除。天缘虽是网络管理员,但是对Windows操作系统的确使用得不多,从来也没有用过这个名为3721的插件,但看到用户们焦急地神情,于是答应尽力而为。经过几番努力,终于将其斩于马下。
以下是杀除该病毒得经历及病毒解决方案。
天缘使用一台windowsxp机器,访问用户提供的站点,下载并执行了该插件。该插件为中文,自动安装后重新启动机器后生效,并自带卸载功能。通过安装/卸载前后的对比观察,其驻留性、自身保护性及对系统性能的大量损耗,让天缘确定了该插件确是病毒无疑!
病毒发作现象:
自动将浏览器的“搜索”功能重定向到一个叫www.3721.com的网站,该站点为中文站,且无法修改;
强行在用户ie上添加“情景聊天”、“上网加速”等几个图标;
不断刷新注册表相关键值,以达到成功驻留和大量消耗用户主机资源的目的;
每次启机加载,并自带进程保护功能,在正常地windows启动下难以杀除;
5. 带自动升级功能,每次用户上网使用ie时,该病毒会后台执行升级;
病毒自身特点:
自带卸载功能;该病毒为达到隐藏自身目的,麻痹下载插件用户的目的,提供了卸载程序。但根据天缘的使用情况发现,在卸载后,该病毒程序依然驻留,启动时仍然加载,依然监视、改写注册表;
采用网络升级方式;该病毒为了防止用户以及杀毒软件的杀除,采取定期网上升级的方式,这点与近期的其他Windows主流病毒类似,但值得一提的是该病毒建有公开的病毒升级站点www.3721.com,且站点风格酷似门户、服务类站点,具有极大的欺骗性;
以驱动模式加载;该特性可说是近段时期以来病毒编写的一次技术飞跃,采用驱动模式加载配合挂接hook的方式,在windows下极难查杀(详细技术讨论见后);
提供在浏览器地址栏中输入中文后转到其站点进行关键字查询的搜索服务。前段时间的冲击波克星病毒也曾在感染用户机器后自动连接用户的机器到update.Microsoft.com下载补丁,看来新的病毒越来越多地喜欢提供一些另类功能了;
被动方式传播:利用一些站点来进行传播,而不是主动感染其他机器,这点与当前热门的“美女图片”病毒的方式相近。从主动转向被动,可说是今年一些病毒的新特点;
病毒详细分析:
当用户访问站点的时候,弹出一个控件下载窗口提示用户下载安装,表面上称自己是提供中文实名服务,引诱用户安装;
在安装过程中多处修改用户文件及注册表;
添加文件:
在Documents and Settings\All Users\「开始」菜单\程序\网络实名\ 目录下添加
了解网络实名详细信息.url 86 字节
清理上网记录.url 100 字节
上网助手.url 99 字节
卸载网络实名.lnk 1,373 字节
修复浏览器.url 103 字节
在WINDOWS\Downloaded Program Files\ 下添加
assis.ico 5,734 字节
cns02.dat 1,652 字节
CnsHook.dll 56,320 字节
CnsMin.cab 116,520 字节
CnsMin.dll 179,712 字节
CnsMin.inf 378 字节
sms.ico” 6,526 字节
yahoomsg.ico 5,734 字节
在WINDOWS\System32\Drivers\ 目录下添加
CnsminKP.sys
添加注册表键值:
增加HKEY_LOCAL_MACHINE\SOFTWARE\3721 主键,下设多子键及属性值;
在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID 主键下增加
{B83FC273-3522-4CC6-92EC-75CC86678DA4}
{D157330A-9EF3-49F8-9A67-4141AC41ADD4}
两个子键
3.在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\主键下增加
CnsHelper.CH
CnsHelper.CH.1
CnsMinHK.CnsHook
CnsMinHK.CnsHook.1
四个子键
4. 在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\主键下增加
{1BB0ABBE-2D95-4847-B9D8-6F90DE3714C1}子键
5. 在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\主键下增加
{A5ADEAE7-A8B4-4F94-9128-BF8D8DB5E927}
{AAB6BCE3-1DF6-4930-9B14-9CA79DC8C267}
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\主键下增加
!CNS子键
在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\ 主键下增加
{00000000-0000-0001-0001-596BAEDD1289}
{0F7DE07D-BD74-4991-9D5F-ECBB8391875D}
{5D73EE86-05F1-49ed-B850-E423120EC338}
{ECF2E268-F28C-48d2-9AB7-8F69C11CCB71}
{FD00D911-7529-4084-9946-A29F1BDF4FE5} 五个子键
在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search\主键下增加
CustomizeSearch
OcustomizeSearch
SearchAssistant
OsearchAssistant 四个子键
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks\主键下增加
{D157330A-9EF3-49F8-9A67-4141AC41ADD4}子键
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\下增加
CnsMin子键
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\下增加
EK_Entry 子键 (提示,这个键将在下次启动机器的时候生效,产生最令人头疼的部分,后文会叙述)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\下增加
CnsMin 子键
HKEY_CURRENT_USER\Software\下增加
3721子键
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\下增加
CNSAutoUpdate
CNSEnable
CNSHint
CNSList
CNSMenu
CNSReset
在重新启动计算机后,上面提到的RunOnce下的EK_Entry生效,在注册表中多处生成最为邪恶的CnsMinKP键值,同时在系统盘的windows/system32/drivers目录下生成CnsMinKP.sys文件,噩梦由此开始。
由于win2k/xp在启动的时候(包括安全模式)默认会自动运行windows/system32/drivers下面的所有驱动程序,于是CnsMinKP.sys被加载,而这个驱动的作用之一,就是保证windows/ Downloaded Program Files目录下的Cnshook.dll和CnsMin.dll以及其自身不被删除;Cnshook.dll的作用则是提供中文实名功能,CnsMin.dll作用在于使其驻留在ie进程内的时候。CnsMin为了保证自己的优先级最高,用了一个定时器函数反复安装钩子,因此造成系统性能下降,在天缘测试的那台机器上,使得性能大概下降了20%左右。而且由于hook强行挂接的原因,当用户使用断点调试程序的时候将会导致频繁出错,这一点与早期版本的cih导致winzip操作和无法关机类似(关于详细的技术细节,可参看题目为《[转载]3721驻留机制简单研究》一文,地址为 http://www.nsfocus.net/index.php?act=sec_doc&do=view&doc_id=894 原作者Quaful@水木清华)
防删除特性:
该病毒虽然自带一个所谓的“卸载程序”,但事实上核心部分的程序/注册表键值依然没有删除。而且该病毒更是利用各种技术手段,具有极其强大的反删除特性。
windows系统启机(包括安全模式下)便会加载windows/system32/drivers下的CnsMinKP.sys,该驱动该驱动程序过滤了对其自身及相关重要文件和注册表的删除操作。每当试图删除3721的关键文件和注册表项时,直接返回一个TRUE,使Windows认为删除已经成功,但文件和注册表实际上还是在那里。
技术亮点:
天缘不得不承认,3721这个病毒插件可称我作为网管以来面对的最难清除的病毒。近几年来病毒有几次质的突破:cih感染可升级的bios、红色代码打开windows的共享扩大战果、meliza让我们见识了什么是看得到源程序的病毒、mssqlserver蠕虫让我们留意到计算机病毒能攻击的不光是节点还有网络设备、冲击波病毒让我们认识到大量使用同一种操作系统时在出现安全漏洞时的可怕、美女图片病毒让我们知道了将欺骗艺术与软件漏洞结合的威力、而这次3721病毒首次展现了病毒强大的反删除特性,可说是在windows环境下无法杀除的病毒。虽然这是个良性病毒,对系统并没有破坏特性,但依据病毒的发展史,可以预见,这种几近完美的反删除技术将很快被其他病毒所利用,很快将被其他病毒所利用。届时结合网络传播,局网感染带强大反删除功能的病毒或许会让目前windows平台下的杀毒软件遭遇到最大的考验。而这次经历,也让我意识到微软的windows操作系统在人性化、美观化、傻瓜化的背后的危机。作为it同行,我个人对3721病毒作者所使用的种种技术表示钦佩,但新型病毒的潘多拉魔盒,已经被他们打开:
在目前已知的病毒历史上,之前只有几种病毒利用过windows nt下的system32/drivers 下的程序会被自动加载的特性来进行传播,但那些病毒本身编写地不够完善,会导致windows nt系统频繁蓝屏死机,象3721插件病毒这样完美地加载、驻留其他进程,只消耗主机资源,监测注册表及关键文件不导致系统出错的病毒,国内外尚属首次,在技术上比以前那些病毒更为成熟;
如同天缘和大家曾经探讨过的没打sp2以上patch的win2k如何上网下载sp4再安装补丁这样的连环套问题一样。由于drivers目录下的CnsMinKP.sys启机必定加载,而欲不加载它,只有在windows启动后,进注册表改写相应的CnsMinKP键值或者删除该文件,但由于CnsMinKP.sys过滤了对其自身及相关重要文件和注册表的删除操作。每当试图删除3721的关键文件和注册表项时,直接返回一个TRUE,使Windows认为删除已经成功,但文件和注册表实际上还是在那里。使得注册表无法修改/文件无法被删除,让我们传统的杀除病毒和木马的对策无法进行。
驻留ie进程,并自动升级,保证了该病毒有极强大的生命力,想来新的杀除方法一出现,该病毒就会立即升级。Windows上虽然还有mozilla等其他浏览器,但由于微软的捆绑策略和兼容性上的考虑,绝大多数用户一般只安装有ie。上网查资料用ie,寻找杀除3721资料的时候也用ie,如此一来,3721抢在用户前面将自身升级到最新版本以防止被杀除的可能性大大增加,更加增添了杀除该病毒的难度。或许在本文发出后,病毒将会在最短时间内进行一次升级。
附带其他“实用”功能。天缘记得早年在dos下的时候曾遇到一些病毒,在发作的时候会自动运行一个可爱的屏幕保护,或者是自动替用户清理临时文件夹等有趣的功能;后来在windows平台上也曾见过在病毒发作时自动提醒“今天是xx节,xx年前的今天发生了xx历史典故”这样的带知识教育意义的病毒;而3721病毒则是提供了一个所谓的中文域名与英文域名的翻译功能。随着病毒的发展,这样带隐蔽性、趣味性和欺骗性的病毒将越来越多。例如最近的邮件病毒以微软的名义发信,或以re开始的回信格式发信,病毒编写的发展从原来的感染传播、漏洞传播、后门传播逐步向欺骗传播过渡,越来越多的病毒编写者意识到社会工程学的重要性。或许在不久的将来,就会出现以简单的网络游戏/p2p软件为掩饰的病毒/木马。
极具欺骗性:该插件在win98下也能使用,但使用其自带的卸载程序则可比较完美地卸载,而在win2k/xp平台下卸载程序则几乎没用。由此可以看出病毒编写者对社会工程学极其精通:当一个人有一只表时他知道时间;而当他有两只表时则无从判断时间。当在论坛/bbs上win2k/xp的用户提到此病毒无法删除的时候,其他win2k/xp用户会表示赞同,而win98用户则会表示其不存在任何问题属于正常程序的反对意见。两方意见的对立,影响了旁观者的判断。
商业行为的参与。据传该病毒是由某公司编写的,为的是进一步推销其产品,增加其访问量和申请用户。这点上与某些色情站点要求用户下载xx插件,之后不断利用该插件弹出窗口进行宣传的方式很象。天缘不由得想起一个典故。话说当年某公司公司工作人员(当然也有可能是不法者冒充该公司的工作人员)经常打电话恐吓大型的企业单位,无外乎说其中文域名已被xx公司抢注,如不交钱将会导致xx后果云云。兄弟学校中似乎也有受到此公司骚扰的经历:该公司员工打电话到某高校网络中心,起初是建议其申请中文域名,其主任很感兴趣但因价格原因未果。第二次打来的时候,就由劝说变成了恐吓,说该校中文名字已经被xx私人学校注册,如果该校不交钱申请就会有种种可怕后果云云。谁想该校网络中心主任吃软不吃硬,回话:“你既然打电话到此,想来你也知道在中国,xx大学就我们一所是国家承认的,而你们公司在没有任何官方证明的情况下就替申请我校中文域名的私人学校开通,就这点上就可见你们的不规范性,那么如果我私人交钱申请xxx国家领导的名字做个人站点是不是贵公司也受理?遇到类似冒用我校名义行骗及协助其行骗的公司,我们一贯的做法是寻找法律途径解决!”回答甚妙,当然此事后果是不了了之。从相关报道中不难看到,计算机犯罪逐步开始面向经济领域。侵犯私人隐私,破坏私人电脑的病毒与商业结合,是病毒编写由个人行为到商业行为的一次转变,病毒发展的历史由此翻开了新的一章。
病毒查杀方案:
由于网管专题的栏目作用主要是“授人与渔”,天缘把病毒查杀过程经历一并写下,大家共同探讨。
第一回合:
当初见此病毒的时候,感觉不过如此,普通木马而已。依照老规矩,先把注册表里相关键值删除,再把病毒文件一删,然后重新启动机器,等待万事ok。启机一看,注册表完全没改过来,该删除的文件也都在。
结局:病毒胜,天缘败
第二回合:
换了一台机器,下了个卸载帮助工具,以方便监视注册表/文件的改变。我下的是Ashampoo UnInstaller Suite这个软件,能监视注册表/文件/重要配置文件。Ok,再次安装3721插件,把对注册表的改变/文件的改变都记录下来。(值得注意,因为注册表run和runonce的键是下次启动的时候生效的,因此在重新启动后,还要对比一下文件/注册表的改变才能得到确切结果)。然后对比记录,把3721添加的键全部记下来,添加的文件也记录下来。之后我计划是用安全模式启动,删除文件和注册表,所以写了一个save.reg文件来删除注册表里的相关键值(写reg文件在网管笔记之小兵逞英雄那讲有介绍,等一下在文末我提供那个reg文件给大家参考),写了一个save.bat来删除相关文件,放到c盘根目录下。重新启动机器,进入安全模式下,我先用regedit /s save.reg 导入注册表,然后用save.bat删除相关文件。重新启动机器,却发现文件依然存在,注册表也没有修改成功。通常对付木马/病毒的方式全然无效,令我产生如临大敌之感。
结局:病毒胜,天缘败
第三回合:
重新启动机器,这次我采用手工的方式删除文件。发现了问题——对system32/drivers目录下的CnsMinKP.sys,WINDOWS\Downloaded Program Files 目录下的Cnshook.dll和CnsMin.dll都“无法删除”。这样说可能有点不妥当,准确地说法是——删除之后没有任何错误报告,但文件依然存在。于是上网用google找找线索——在绿盟科技找到了一则文章(名字及url见前文),于是明白了这一切都是CnsMinKP.sys这东西搞得鬼。那么,只要能开机不加载它不就行了??但试了一下2k和xp的安全方式下都是要加载system32/drivers下的驱动,而如果想要取消加载,则需要修改注册表,但由于在加载了CnsMinKP.sys后修改注册表相关值无效,导致无法遏制CnsMinKP.sys这个程序的加载。当然,有软驱的朋友可以利用软盘启动的方式来删除该文件,但如果跟天缘一样用的是软驱坏掉的机器怎么办呢?记得绿盟上的文章所说的是——“目前无法破解”。在这一步上,天缘也尝试了各种方法。
我尝试着改这几个文件的文件名,结果没成功;
我尝试着用重定向来取代该文件,如dir * > CnsMinKP.sys ,结果不成功;
我尝试着用copy con <文件名> 的方式来覆盖这几个文件,结果发现三个文件中Cnshook.dll可以用这样的方法覆盖成功,但是在覆盖CnsMinKP.sys和CnsMin.dll的时候,居然提示“文件未找到”!?熟悉copy con用法的朋友都该了解,无论是文件是否存在,都应该是可以创建/提示覆盖的,但居然出来这么一个提示,看来CnsMinKP.sys着实把系统都骗过了,强!!跟它拼到这里的时候,回想到了在dos下用debug直接写磁盘的时代了,或许用它才能搞定吧?
仔细一想,win2k/xp下似乎没有了debug程序了,而或许问题解决起来也不是那么复杂。再又尝试了几种方法后,终于得到了启示:既然文件不允许操作,那么我操作目录如何?
我先把windows\system32\drivers目录复制一份,取名为drivers1,并将其中的CnsMinKP.sys删除(注意,因为是drivers1中的,所以可以被成功地真正删除掉);
重新启动机器,到安全模式下;
用drivers1目录替代原来的drviers目录
cd windows\system
ren drivers drivers2
ren drivers1 drivers
之后重新启动机器,然后进到windows后先把drivers2目录删除了,然后慢慢收拾残余文件和清理注册表吧。在这里天缘提供一个reg文件,方便各位删除注册表:
Windows Registry Editor Version 5.00(用98的把这行改成regeidt4)
[-HKEY_LOCAL_MACHINE\SOFTWARE\3721]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{B83FC273-3522-4CC6-92EC-75CC86678DA4}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{D157330A-9EF3-49F8-9A67-4141AC41ADD4}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CnsHelper.CH]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CnsHelper.CH.1]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CnsMinHK.CnsHook]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CnsMinHK.CnsHook.1]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{1BB0ABBE-2D95-4847-B9D8-6F90DE3714C1}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A5ADEAE7-A8B4-4F94-9128-BF8D8DB5E927}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{AAB6BCE3-1DF6-4930-9B14-9CA79DC8C267}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\!CNS]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{00000000-0000-0001-0001-596BAEDD1289}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CnsMin]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{00000000-0000-0001-0001-596BAEDD1289}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{0F7DE07D-BD74-4991-9D5F-ECBB8391875D}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{5D73EE86-05F1-49ed-B850-E423120EC338}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{ECF2E268-F28C-48d2-9AB7-8F69C11CCB71}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{FD00D911-7529-4084-9946-A29F1BDF4FE5}]
[-HKEY_CURRENT_USER\Software\3721]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search\OCustomizeSearch]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search\OSearchAssistant]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search\CustomizeSearch]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search\SearchAssistant]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks\{D157330A-9EF3-49F8-9A67-4141AC41ADD4}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\CnsMin]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\EK_Entry]
[-HKEY_USERS\S-1-5-21-789336058-764733703-1343024091-1003\Software\Microsoft\Internet Explorer\Main\CNSAutoUpdate]
[-HKEY_USERS\S-1-5-21-789336058-764733703-1343024091-1003\Software\Microsoft\Internet Explorer\Main\CNSEnable]
[-HKEY_USERS\S-1-5-21-789336058-764733703-1343024091-1003\Software\Microsoft\Internet Explorer\Main\CNSHint]
[-HKEY_USERS\S-1-5-21-789336058-764733703-1343024091-1003\Software\Microsoft\Internet Explorer\Main\CNSList]
[-HKEY_USERS\S-1-5-21-789336058-764733703-1343024091-1003\Software\Microsoft\Internet Explorer\Main\CNSMenu]
[-HKEY_USERS\S-1-5-21-789336058-764733703-1343024091-1003\Software\Microsoft\Internet Explorer\Main\CNSReset]
结局:病毒败,天缘胜
(虽然是成功地删除了它,但是感觉赢得好险,如果该病毒加一个禁止上级文件改名的功能那么就真的没折了,为了预防类似的情形,最后还是找到了彻底一点的办法,见下)
第四回合:
聪明的读者大概已经想到,既然没有办法在硬盘启动对于c盘是fat32格式的机器,想到这里已经找到了解决办法——用win98启机软盘启动机器,然后到c盘下删除相关文件,然后启动到安全模式下用save.reg把注册表搞定就行了。问题是——大多数win2k/xp都使用的是新的ntfs格式,win98启机软盘是不支持的!怎么办?有软驱的机器可以做支持NTFS分区操作的软盘,用ntfsdos这个软件就能做到(详情请见http://www.yesky.com/20020711/1620049.shtml一文)。而跟天缘一样没有软驱的朋友,别忘记了win2k/xp开始加入的boot,不光是能够选择操作系统而已,而是跟linux下的lilo和grub一样,是一个操作系统引导管理器——换句话说,如果我们能在硬盘上做一个能读写NTFS的操作系统,再用boot进行引导,那么不是就可以在无软驱的情形下实现操作c盘的目的了么?在网络上找到vFloppy.exe 这个软件,它自带一个支持读写ntfs的镜象文件,并且使用简单,非常傻瓜化(详情见http://www.yesky.com/SoftChannel/72350068425883648/20040226/1771849.shtml 一文,顺便一提新版本的yFloppy已经自带支持ntfs读写的img文件了)。然后删除3721的相关文件,重新启动后清理注册表和删除相关文件就行了。
到此,我们终于把3721这个阴魂不散地幽灵彻底赶出了我们的硬盘!!
由于不少网站基于各种原因,在显示页面的时候都会弹出3721的下载窗口,很容易误点。在ie中就能屏蔽掉该站以及其他恶意的任何下载。具体方法可见(http://www.yesky.com/20030416/1663721.shtml 一文)。
截止发稿为止,天缘所知不少同行网管已经在网关上做了对该地址的屏蔽,防止不知情的用户无辜受害。网络安全任重道远,还要*大家的努力才能把一些害群之马斩草除根。
| 如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。 |
| 许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。 |
| 然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache.org下载源代码开放的Jakarta-ORO库。本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。 |
| 一、正则表达式基础知识 |
| 我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说: |
|
| 1.1 句点符号 |
| 假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符——句点符号“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符: |
|
| 1.2 方括号符号 |
| 为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你只能匹配单个字符: |
![]() |
| 1.3 “或”符号 |
| 如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组,具体请参见后面介绍。 |
|
| 1.4 表示匹配次数的符号 |
| 表一显示了表示匹配次数的符号,这些符号用来确定紧靠该符号左边的符号出现的次数: |
|
|
| 假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配它的正则表达式如图一所示。在正则表达式中,连字符(“-”)有着特殊的意义,它表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符“\”。 |
|
|
|
图一:匹配所有123-12-1234形式的社会安全号码 |
| 假设进行搜索的时候,你希望连字符号可以出现,也可以不出现——即,999-99-9999和999999999都属于正确的格式。这时,你可以在连字符号后面加上“?”数量限定符号,如图二所示: |
|
|
|
图二:匹配所有123-12-1234和123121234形式的社会安全号码 |
| 下面我们再来看另外一个例子。美国汽车牌照的一种格式是四个数字加上二个字母。它的正则表达式前面是数字部分“[0-9]{4}”,再加上字母部分“[A-Z]{2}”。图三显示了完整的正则表达式。 |
|
|
|
图三:匹配典型的美国汽车牌照号码,如8836KV |
| 1.5 “否”符号 |
| “^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。 |
|
|
|
图四:匹配所有单词,但“X”开头的除外 |
| 1.6 圆括号和空白符号 |
| 假设要从格式为“June 26, 1951”的生日日期中提取出月份部分,用来匹配该日期的正则表达式可以如图五所示: |
|
|
|
图五:匹配所有Moth DD,YYYY格式的日期 |
| 新出现的“\s”符号是空白符号,匹配所有的空白字符,包括Tab字符。如果字符串正确匹配,接下来如何提取出月份部分呢?只需在月份周围加上一个圆括号创建一个组,然后用ORO API(本文后面详细讨论)提取出它的值。修改后的正则表达式如图六所示: |
|
|
|
图六:匹配所有Month DD,YYYY格式的日期,定义月份值为第一个组 |
| 1.7 其它符号 |
| 为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如表二所示: |
| 表二:常用符号 |
|
|
| 例如,在前面社会安全号码的例子中,所有出现“[0-9]”的地方我们都可以使用“\d”。修改后的正则表达式如图七所示: |
|
|
|
图七:匹配所有123-12-1234格式的社会安全号码 |
| 二、Jakarta-ORO库 |
| 有许多源代码开放的正则表达式库可供Java程序员使用,而且它们中的许多支持Perl 5兼容的正则表达式语法。我在这里选用的是Jakarta-ORO正则表达式库,它是最全面的正则表达式API之一,而且它与Perl 5正则表达式完全兼容。另外,它也是优化得最好的API之一。 |
| Jakarta-ORO库以前叫做OROMatcher,Daniel Savarese大方地把它赠送给了Jakarta Project。你可以按照本文最后参考资源的说明下载它。 |
| 我首先将简要介绍使用Jakarta-ORO库时你必须创建和访问的对象,然后介绍如何使用Jakarta-ORO API。 |
| ▲ PatternCompiler对象 |
| 首先,创建一个Perl5Compiler类的实例,并把它赋值给PatternCompiler接口对象。Perl5Compiler是PatternCompiler接口的一个实现,允许你把正则表达式编译成用来匹配的Pattern对象。 |
|
| ▲ Pattern对象 |
| 要把正则表达式编译成Pattern对象,调用compiler对象的compile()方法,并在调用参数中指定正则表达式。例如,你可以按照下面这种方式编译正则表达式“t[aeio]n”: |
|
| 默认情况下,编译器创建一个大小写敏感的模式(pattern)。因此,上面代码编译得到的模式只匹配“tin”、“tan”、 “ten”和“ton”,但不匹配“Tin”和“taN”。要创建一个大小写不敏感的模式,你应该在调用编译器的时候指定一个额外的参数: |
|
| 创建好Pattern对象之后,你就可以通过PatternMatcher类用该Pattern对象进行模式匹配。 |
| ▲ PatternMatcher对象 |
| PatternMatcher对象根据Pattern对象和字符串进行匹配检查。你要实例化一个Perl5Matcher类并把结果赋值给PatternMatcher接口。Perl5Matcher类是PatternMatcher接口的一个实现,它根据Perl 5正则表达式语法进行模式匹配: |
|
| 使用PatternMatcher对象,你可以用多个方法进行匹配操作,这些方法的第一个参数都是需要根据正则表达式进行匹配的字符串: |
| · boolean matches(String input, Pattern pattern):当输入字符串和正则表达式要精确匹配时使用。换句话说,正则表达式必须完整地描述输入字符串。 |
| · boolean matchesPrefix(String input, Pattern pattern):当正则表达式匹配输入字符串起始部分时使用。 |
| · boolean contains(String input, Pattern pattern):当正则表达式要匹配输入字符串的一部分时使用(即,它必须是一个子串)。 |
| 另外,在上面三个方法调用中,你还可以用PatternMatcherInput对象作为参数替代String对象;这时,你可以从字符串中最后一次匹配的位置开始继续进行匹配。当字符串可能有多个子串匹配给定的正则表达式时,用PatternMatcherInput对象作为参数就很有用了。用PatternMatcherInput对象作为参数替代String时,上述三个方法的语法如下: |
| · boolean matches(PatternMatcherInput input, Pattern pattern) |
| · boolean matchesPrefix(PatternMatcherInput input, Pattern pattern) |
| · boolean contains(PatternMatcherInput input, Pattern pattern) |
| 三、应用实例 |
| 下面我们来看看Jakarta-ORO库的一些应用实例。 |
| 3.1 日志文件处理 |
| 任务:分析一个Web服务器日志文件,确定每一个用户花在网站上的时间。在典型的BEA WebLogic日志文件中,日志记录的格式如下: |
![]() |
| 分析这个日志记录,可以发现,要从这个日志文件提取的内容有两项:IP地址和页面访问时间。你可以用分组符号(圆括号)从日志记录提取出IP地址和时间标记。 |
| 首先我们来看看IP地址。IP地址有4个字节构成,每一个字节的值在0到255之间,各个字节通过一个句点分隔。因此,IP地址中的每一个字节有至少一个、最多三个数字。图八显示了为IP地址编写的正则表达式: |
|
|
|
图八:匹配IP地址 |
| IP地址中的句点字符必须进行转义处理(前面加上“\”),因为IP地址中的句点具有它本来的含义,而不是采用正则表达式语法中的特殊含义。句点在正则表达式中的特殊含义本文前面已经介绍。 |
| 日志记录的时间部分由一对方括号包围。你可以按照如下思路提取出方括号里面的所有内容:首先搜索起始方括号字符(“[”),提取出所有不超过结束方括号字符(“]”)的内容,向前寻找直至找到结束方括号字符。图九显示了这部分的正则表达式。 |
|
|
|
图九:匹配至少一个字符,直至找到“]” |
| 现在,把上述两个正则表达式加上分组符号(圆括号)后合并成单个表达式,这样就可以从日志记录提取出IP地址和时间。注意,为了匹配“- -”(但不提取它),正则表达式中间加入了“\s-\s-\s”。完整的正则表达式如图十所示。 |
|
|
|
图十:匹配IP地址和时间标记 |
| 现在正则表达式已经编写完毕,接下来可以编写使用正则表达式库的Java代码了。 |
| 为使用Jakarta-ORO库,首先创建正则表达式字符串和待分析的日志记录字符串: |
|
| 这里使用的正则表达式与图十的正则表达式差不多完全相同,但有一点例外:在Java中,你必须对每一个向前的斜杠(“\”)进行转义处理。图十不是Java的表示形式,所以我们要在每个“\”前面加上一个“\”以免出现编译错误。遗憾的是,转义处理过程很容易出现错误,所以应该小心谨慎。你可以首先输入未经转义处理的正则表达式,然后从左到右依次把每一个“\”替换成“\\”。如果要复检,你可以试着把它输出到屏幕上。 |
| 初始化字符串之后,实例化PatternCompiler对象,用PatternCompiler编译正则表达式创建一个Pattern对象: |
|
| 现在,创建PatternMatcher对象,调用PatternMatcher接口的contain()方法检查匹配情况: |
|
| 接下来,利用PatternMatcher接口返回的MatchResult对象,输出匹配的组。由于logEntry字符串包含匹配的内容,你可以看到类如下面的输出: |
![]() |
| 3.2 HTML处理实例一 |
| 下面一个任务是分析HTML页面内FONT标记的所有属性。HTML页面内典型的FONT标记如下所示: |
|
| 程序将按照如下形式,输出每一个FONT标记的属性: |
|
| 在这种情况下,我建议你使用两个正则表达式。第一个如图十一所示,它从字体标记提取出“”face=”Arial, Serif” size=”+2″ color=”red””。 |
|
|
|
图十一:匹配FONT标记的所有属性 |
| 第二个正则表达式如图十二所示,它把各个属性分割成名字-值对。 |
|
|
|
图十二:匹配单个属性,并把它分割成名字-值对 |
| 分割结果为: |
|
| 现在我们来看看完成这个任务的Java代码。首先创建两个正则表达式字符串,用Perl5Compiler把它们编译成Pattern对象。编译正则表达式的时候,指定Perl5Compiler.CASE_INSENSITIVE_MASK选项,使得匹配操作不区分大小写。 |
| 接下来,创建一个执行匹配操作的Perl5Matcher对象。 |
|
| 假设有一个String类型的变量html,它代表了HTML文件中的一行内容。如果html字符串包含FONT标记,匹配器将返回true。此时,你可以用匹配器对象返回的MatchResult对象获得第一个组,它包含了FONT的所有属性: |
|
| 接下来创建一个PatternMatcherInput对象。这个对象允许你从最后一次匹配的位置开始继续进行匹配操作,因此,它很适合于提取FONT标记内属性的名字-值对。创建PatternMatcherInput对象,以参数形式传入待匹配的字符串。然后,用匹配器实例提取出每一个FONT的属性。这通过指定PatternMatcherInput对象(而不是字符串对象)为参数,反复地调用PatternMatcher对象的contains()方法完成。PatternMatcherInput对象之中的每一次迭代将把它内部的指针向前移动,下一次检测将从前一次匹配位置的后面开始。 |
| 本例的输出结果如下: |
|
| 3.3 HTML处理实例二 |
| 下面我们来看看另一个处理HTML的例子。这一次,我们假定Web服务器从widgets.acme.com移到了newserver.acme.com。现在你要修改一些页面中的链接: |
|
| 执行这个搜索的正则表达式如图十三所示: |
|
|
|
图十三:匹配修改前的链接 |
| 如果能够匹配这个正则表达式,你可以用下面的内容替换图十三的链接: |
![]() |
| 注意#字符的后面加上了$1。Perl正则表达式语法用$1、$2等表示已经匹配且提取出来的组。图十三的表达式把所有作为一个组匹配和提取出来的内容附加到链接的后面。 |
现在,返回Java。就象前面我们所做的那样,你必须创建测试字符串,创建把正则表达式编译到Pattern对象所必需的对象,以及创建一个PatternMatcher对象: |
| 接下来,用com.oroinc.text.regex包Util类的substitute()静态方法进行替换,输出结果字符串: |
|
| Util.substitute()方法的语法如下: |
|
| 这个调用的前两个参数是以前创建的PatternMatcher和Pattern对象。第三个参数是一个Substiution对象,它决定了替换操作如何进行。本例使用的是Perl5Substitution对象,它能够进行Perl5风格的替换。第四个参数是想要进行替换操作的字符串,最后一个参数允许指定是否替换模式的所有匹配子串(Util.SUBSTITUTE_ALL),或只替换指定的次数。 |
| 【结束语】在这篇文章中,我为你介绍了正则表达式的强大功能。只要正确运用,正则表达式能够在字符串提取和文本修改中起到很大的作用。另外,我还介绍了如何在Java程序中通过Jakarta-ORO库利用正则表达式。至于最终采用老式的字符串处理方式(使用StringTokenizer,charAt,和substring),还是采用正则表达式,这就有待你自己决定了。 |
长期以来,谈到美工设计我们都会想到 Photoshop ,想到滤镜与蒙板。这有一定的必然性,因为它们的交互与灵活使用常常让我们的工作更专业,更得心应手。但有一点不知大家忽略没有,那就是:工具是死的,真正活跃的应该是心灵的闪光;技术是难于全面掌握的,但要获得风格的突破与灵感的迸发就更不容易;工具,最终只是我们如何表达自己的意图的手段,真正的设计者,不在于他掌握了多少种图象制作软件,而在于是否能用某种手段更为出色地表达出与众不同的,新颖的理念。
先打开一空白图像。建一个新channel.
选取一种灰白的颜色为前景色。然后用毛刷工具画一个线条。
用filter……pixelate……color halftone选项。
回到layer工作状态下,建一新layer。用select……load selections,选#4。
然后选好合适的前景颜色,进行填充。
大功告成!
下面列出一些流行的颜色及其RGB值。可以使用这些值改变背景色、文本颜色和链接颜色。这些值以十六进制表示,前两位数字代表红色值;接下来两位表示绿色;最后两位表示蓝色。每个红色、绿色或蓝色值可以在00(没有那种颜色)到FF(完全是那种颜色)之间变化
白色:FFFFFF
红色:FF0000
绿色:00FF00
蓝色:0000FF
洋红:FF00FF
墨绿:00FFFF
黄色:FFFF00
黑色:000000
爱丽丝兰:F0F8FF
碧绿:70DB93
巧克力色:5C3317
蓝紫色:9F5F9F
黄铜:B5A642
亮金:D9D919
褐色:A62AA2
青铜:8C7853
青铜2:A67D3D
藏青:5F9F9F
亮铜:D98719
铜色:B87333
珊瑚色:FF7F00
矢车菊兰:42426F
深褐色:5C4033
深绿色:2F4F2F
深铜绿色:4A766E
深橄榄绿:4F4F2F
紫色:9932CD
深紫色:871F78
深石板蓝:6B238E
深石板灰:2F4F4F
深黄褐色:97694F
深蓝玉色:7093DB
暗木色:855E42
暗灰:545454
暗玫瑰色:856363
长石色:D19275
砖红色:8E2323
草绿:238E23
金色:CD7F32
秋叶色:DBDB70
灰色:C0C0C0
铜绿色:527F76
黄绿色:93DB70
军绿:215E21
印第安红色:4E2F2F
土黄:9F9F5F
浅蓝:C0D9D9
浅灰:A8A8A8
浅铜蓝:8F8FBD
浅木色:E9C2A6
浅绿:32CD32
橙色:E47833
栗色:8E236B
中绿:32CD99
中蓝:3232CD
中草绿:6B8E23
中秋叶色:EAEAAE
中紫色:9370DB
中海绿:426F42
中石板蓝:7F00FF
中春绿:7FFF00
中蓝玉色:70DBDB
中紫红色:DB7093
中木色:A68064
夜蓝色:2F2F4F
海蓝色:23238E
氖蓝色:4D4DFF
氖粉红色:FF6EC7
新夜蓝色:00009C
新黄褐色:EBC79E
暗金色:CFB53B
橘色:FF7F00
橘红:FF2400
淡紫:DB70DB
淡绿: 8FBC8F
粉红:BC8F8F
棕色:EAADEA
石英色:D9D9F3
富兰色:5959AB
橙红色:6F4242
猩红:8C1717
海绿:238E68
半甜巧克力色:6B4226
赭色:8E6B23
银色:E6E8FA
天蓝:3299CC
石板蓝:007FFF
香粉红:FF1CAE
春绿:00FF7F
钢蓝:236B8E
夏天的天空:38B0DE
黄褐色:DB9370
蓝玉色:ADEAEA
暗褐色:5C4033
亮灰:CDCDCD
紫罗兰色:4F2F4F
紫红:CC3299
麦色:D8D8BF
暗黄:99CC32
[红色]:最强有力的色彩, 能引起肌肉的兴奋.热烈、冲动.
[橙色]:较温和, 是一种很活泼、辉煌的色彩.富足的、快乐的色彩.稍加黑则较稳重.蓝橙对比时较生动.
[黄色]:亮度最高, 尤其灿烂、辉煌.象征着智慧之光, 象征着权力、骄傲.经不起白色的冲淡.当用黑、紫、深蓝反衬时, 能加强.淡粉色能使之变柔和.
[绿色]:具中性特点.和平色, 偏向自然美.宁静、生机勃勃, 宽容色彩.可衬托多种颜色而达到和谐.
[蓝色]:永恒、博大、遥远感.
[紫色]:大面积有恐怖感, 紫红尤其明显.暗紫有灾难感.淡紫则是一种优美的活泼色.紫与黄共存时, 消极性更加显著.
[黑与白]:非常对立而又有共性, 是色彩最后的抽象.能够用来表达富有哲理性的东西.其中——
[黑色]:空、无、永恒的沉默.
[白色]:虚无, 有无尽的可能性.
此二色总时通过对方的存在显示自己的力量.
[灰色]:是色彩中最被动的颜色.受有彩色影响极大, 靠邻近的色彩获得自己的生命.近冷则暖, 近暖则冷.最有平静感(中性), 是视觉中最安静的色彩.有很强的调和对比的作用.
网页的色彩是树立网站形象的关键之一,色彩搭配却是网友们感到头疼的问题。网页的背景,文字,图标,边框,超链接…,应该采用什么样的色彩,应该搭配什么色彩才能最好的表达出预想的内涵呢?阿捷这里谈一些心得,希望对你有所启发。
首先我们先来了解一些色彩的基本知识:
1.颜色是因为光的折射而产生的。
2.红,黄,蓝是三原色,其它的色彩都可以用这三种色彩调和而成。网页html语言中的色彩表达即是用这三种颜色的数值表示例如:红色是color (255,0,0)十六进制的表示方法为(FF0000)白色为(FFFFFF), 我们经常看到的”bgColor=#FFFFFF”就是指背景色为白色。
3.颜色分非彩色和彩色两类。非彩色是指黑,白,灰系统色。彩色是指除了非彩色以外的所有色彩。
4.任何色彩都有饱和度和透明度的属性,属性的变化产生不同的色相,所以至少可以制作几百万种色彩。
网页制作用彩色还是非彩色好呢?根据专业的研究机构研究表明:彩色的记忆效果是黑白的3.5倍。也就是说,在一般情况下,彩色页面较完全黑白页面更加吸引人。
我们通常的做法是:主要内容文字用非彩色(黑色),边框,背景,图片用彩色。这样页面整体不单调,看主要内容也不会眼花。
●非彩色的搭配
黑白是最基本和最简单的搭配,白字黑底,黑底白字都非常清晰明了。灰色是万能色,可以和任何彩色搭配,也可以帮助两种对立的色彩和谐过渡。如果你实在找不出合适的色彩,那么用灰色试试,效果绝对不会太差。
●彩色的搭配
色彩千变万化,彩色的搭配是我们研究的重点。我们依然需要进一步学习一些色彩的知识。
一.色环。我们将色彩按”红->黄->绿->蓝->红”依次过度渐变,就可以得到一个色彩环。色环的两端是暖色和寒色,当中是中型色。(如下图)
红.橙.橙黄.黄.黄绿.绿.青绿.蓝绿.蓝.蓝紫.紫.紫红.红
|___________| |____| |_________| |_________|
| | | |
暖色系 中性系 寒色系 中性系
二.色彩的心理感觉。不同的颜色会给浏览者不同的心理感受。
红色—是一种激奋的色彩。刺激效果,能使人产生冲动,愤怒,热情,活力的感觉。
绿色—介于冷暖两中色彩的中间,显得和睦,宁静,健康,安全的感觉。 它和金黄,淡白搭配,可以产生优雅,舒适的气氛。
橙色—也是一种激奋的色彩,具有轻快,欢欣,热烈,温馨,时尚的效果。
黄色—具有快乐,希望,智慧和轻快的个性,它的明度最高。
蓝色—是最具凉爽,清新,专业的色彩。它和白色混合,能体现柔顺,淡雅,浪漫的气氛(象天空的色彩:)
白色—具有洁白,明快,纯真,清洁的感受。
黑色—具有深沉,神秘,寂静,悲哀,压抑的感受。
灰色—具有中庸,平凡,温和,谦让,中立和高雅的感觉。
每种色彩在饱和度,透明度上略微变化就会产生不同的感觉。以绿色为例,黄绿色有青春,旺盛的视觉意境,而蓝绿色则显得幽宁,阴深。
●网页色彩搭配的原理
1.色彩的鲜明性。网页的色彩要鲜艳,容易引人注目。
2.色彩的独特性。要有与众不同的色彩,使得大家对你的印象强烈。
3.色彩的合适性。就是说色彩和你表达的内容气氛相适合。如用粉色体现女性站点的柔性。
4.色彩的联想性。不同色彩会产生不同的联想,蓝色想到天空,黑色想到黑夜,红色想到喜事等,选择色彩要和你网页的内涵相关联。
●网页色彩掌握的过程
随着网页制作经验的积累,我们用色有这样的一个趋势:单色->五彩缤纷->标准色->单色。一开始因为技术和知识缺乏,只能制作出简单的网页,色彩单一;在有一定基础和材料后,希望制作一个漂亮的网页,将自己收集的最好的图片,最满意色彩堆砌在页面上;但是时间一长,却发现色彩杂乱,没有个性和风格;第三次重新定位自己的网站,选择好切合自己的色彩,推出的站点往往比较成功;当最后设计理念和技术达到顶峰时,则又返朴归真,用单一色彩甚至非彩色就可以设计出简洁精美的站点。
○网页色彩搭配的技巧
文章写到这里,有心急的网友要问了:“到底用什么色彩搭配好看呢?你能不能推荐几种配色方案?”别急,这里有一点技巧,可以帮助你迅速成为调色大师:)
1.用一种色彩。这里是指先选定一种色彩,然后调整透明度或者饱和度,(说得通俗些就是将 色彩变淡或则加深),产生新的色彩,用于网页。这样的页面看起来色彩统一,有层次感。
2.用两种色彩。先选定一种色彩,然后选择它的对比色(在photoshop里按ctrl+shift+I)。我的主页用蓝色和黄色就是这样确定的。整个页面色彩丰富但不花稍。
3.用一个色系。简单的说就是用一个感觉的色彩,例如淡蓝,淡黄,淡绿;或者土黄,土灰,土蓝。确定色彩的方法各人不同,我是在photoshop里按前景色方框,在跳出的拾色器窗中选择”自定义”,然后在”色库”中选就可以了:)
4.用黑色和一种彩色。比如大红的字体配黑色的边框感觉很”跳”。
在网页配色中,忌讳的是:
1.不要将所有颜色都用到,尽量控制在三种色彩以内。
2.背景和前文的对比尽量要大,(绝对不要用花纹繁复的图案作背景),以便突出主要文字内容。
在一般人眼中,“网站”几乎就代表着“互联网”。网站本身的价值正在被人们不断的发现,不断的认可。“如何设计一个成功的网站?”已成为越来越多的网页设计师所思考、关注的问题。本人从事商业网站建设已经有两年以上的经验,在此只想抛砖引玉,提出自己的一些想法,欢迎高手指点! 设计网站需要考虑的因素非常之多,从前期网站开始时的定位、设定网站框架、整理资料,到具体制作中的设计环节,再到最后的调试、发布、宣传。这是一个环环相扣的过程。在此我们仅仅从设计师的角度来整体把握我们这次想讨论的主题——如何设计成功的网站!由于篇幅有限,我们仅仅讨论设计网站时重要的两大部分:整体风格和色彩搭配。
一、确定网站的整体风格
网站的整体风格及其创意设计是最难以学习的。难就难在没有一个固定的模式可以参照和模仿。给你一个主题,任何两人都不可能设计出完全一样的网站。
风格(style)是抽象的。是指站点的整体形象给浏览者的综合感受。这个“整体形象”包括站点的CI(标志、色彩、字体、标语)、版面布局、浏览方式、交互性、文字、语气、内容价值、存在意义、站点荣誉等等诸多因素。举个例子:我们觉得网易是平易近人的,迪斯尼是生动活泼的,IBM是专业严肃的。这些都是网站给人们留下的不同感受。
在这里,我提供给大家一些参考经验:
1.将你的标志logo,尽可能的放在每个页面上最突出的位置。
2.突出你的标准色彩。
3.总结一句能反映贵站精髓的宣传标语!
4.相同类型的图像采用相同效果,比如说标题字都采用阴影效果,那么在网站中出现的所有标题字的阴影效果的设置应该是完全一致的!
二、网页色彩的搭配
无论是平面设计,还是网页设计,色彩永远是最重要的一环。当我们距离显示屏较远的时候,我们看到的不是优美的版式或者是美丽的图片,而是网页的色彩。
关于色彩的原理有许多,在此我们不可能一一阐述,大家可以看看相关设计书籍,有利于系统地理解。在此我们仅仅想告诉大家一些网页配色时的小技巧。
1.用一种色彩。这里是指先选定一种色彩,然后调整透明度或者饱和度,(产生新的色彩,用于网页。这样的页面看起来色彩统一,有层次感。
2.用两种色彩。先选定一种色彩,然后选择它的对比色。
3.用一个色系。简单的说就是用一个感觉的色彩,例如淡蓝,淡黄,淡绿;或者土黄,土灰,土蓝。
在网页配色中,还要切记一些误区:
1.不要将所有颜色都用到,尽量控制在三种色彩以内。
2.背景和前文的对比尽量要大,(绝对不要用花纹繁复的图案作背景),以便突出主要文字内容。