一种基于模型检测的恶意行为识别方法
来源:六九路网
第32卷第7期 2015年7月 计算机应用与软件 Computer Applications and Software V01.32 No.7 Ju1.2015 一种基于模型检测的恶意行为识别方法 奚 琪 曾勇军 王清贤 朱海晓 (数学工程与先进计算国家重点实验室(中国联通郑州分公司河南郑州450002) 河南郑州450002)) 摘要 针对恶意代码采用混淆技术规避安全软件检测的问题,提出一种基于模型检测的恶意行为识别方法。方法将检测恶意 行为转换为模型对属性的验证过程:利用谓词时态逻辑公式描述代码的恶意行为,从程序执行过程中的系统调用轨迹提取基于谓词 标记的Kripke结构,通过检测算法验证模型对公式的可满足性。实验结果表明以上方法可有效识别混淆后的恶意代码。 关键词 中图分类号模型检测 混淆TP309 逻辑 恶意代码 文献标识码A DOI:10.3969/j.i sn.1000-386x.2015.07.068 A MALICIoUS BEHAVIoUR DETECTIoN METHoD BASED oN MoDEL CHECKING Xi Qi Zeng Yongjun Wang Qingxian Zhu Haixiao (StateKey Laboratory ofMathematicalEngineering andAdvanced Computing,Zhengzhou 450002,ltenan,China) (China Unwom Group Zhengzhou Company Limited,Zhengzhou 450002,Henan,China) Abstract Aiming at the problem that malicious code evades security software detection by the means of code obfuscation,this paper pro— poses a model checking-based malicious behaviour identiifcation method.It conveys the detection of malicious behaviour to the validating process of model on attibute:using predircate tense logic formula to describe the malicious behaviour of code,extracting the predicate tag- based Kripke structure from system’S call traces in program execution process,and validating the satisfiability of model on formula by checking lgoraithm.Experimentl resultas demonstrate that the method mentioned abt ̄ve can effectively identify the obfuscated malicious code. Keywords Model checking Obfuscation Logic Malicious code 模型进行检测,这种以指令为单位构建模型的方式容易导致状 0引 言 恶意代码检测技术是信息安全领域的研究重点,传统的基 于特征码签名的代码检测方法检查手段单一,对于采用代码变 态空间爆炸的问题;文献[7]用线性时序逻辑描述与安全相关 的API调用,以此作为基础进行模型检测,但是这种方法只刻画 了API之间时序的先后,未能描述API之间的参数关联,因此存 在被API混淆绕过的风险。 本文提出了一种基于模型检测的恶意代码识别方法,用一 形、混淆等技术…的恶意程序漏报率较高。为此,研究人员提 出基于行为的检测方法 J,利用代码在混淆前后保持行为等价 的特性进行检测。 目前代码行为特征主要有两类表示方法:一种是基于指令 组具有依赖关系的API函数描述恶意行为,引入谓词时态逻辑 PTL(Predicate Temporal Logic)描述API调用的参数约束、数据 依赖以及时序关系等屙陛,从而构造出用于模型验证的PTL公 式;通过对API调用的监控和敏感数据的分析,构建程序的系统 调用轨迹并利用转换算法生成以谓词为标记的Kripke结构,在 序列的表示方法,如Christodorescu.M等人 将指令序列抽象 为语义模板等,此类方法对于诸如垃圾代码插入、寄存器替换等 简单的混淆手段有效,但是仍无法对抗等价指令替换等混淆技 术。另一种表示法是基于程序调用API的情况,如用API调用 序列、函数依赖关系图H 等构造行为特征,虽然提高了对指令 混淆的检测能力,但是也面临着垃圾函数插入等针对函数混淆 的挑战。 此基础上,通过模型检测算法验证PrrL公式的满足性以确定程 序是否具有恶意行为。实验结果表明本方法对于采用混淆后的 恶意代码具有较好的识别能力。 1恶意行为描述 API函数是应用程序与操作系统交互的接口,程序通过API 模型检测是一种基于时态逻辑的形式化验证技术,它通过 穷举模型的状态空间来检验系统是否满足期望的性质。在诸多 的验证方法中,模型检测凭借自动化程度高、实用性强等优点广 泛应用在硬件设计和通信协议等领域,并在漏洞挖掘、安全性检 函数的调用实现对系统资源的使用,因此用单个或一组API调 收稿日期:2013—12—26。国家高技术研究发展计划主题项目 (2012AA012902)。奚琪,博士生,主研领域:网络信息安全。曾勇军,讲 测等软件领域也有很大进展。Kinder.J等人 利用计算树谓词 逻辑公式描述恶意行为,将反汇编代码的指令序列构造为程序 师。王清贤,教授。朱海晓,工程师。 第7期 奚琪等:一种基于模型检测的恶意行为识别方法 285 用表示程序的行为是常见的行为描述方法。在代码分析与检测 过程中,我们只关注与安全相关的关键API调用(critcal API (6)EF(Loc(11)AEF(Loc(13)))A EF(Loc(12)AEF(Loc (1,)))) calls)Is]。为了将一组具有依赖关系的关键API调用描述为可 用于模型检测的逻辑公式,我们引入了谓词集合P表示API函 公式第1行中定义的变量作用于整个公式的范围,第2至4行 数、参数约束及数据依赖等原子属性。 谓词集合P={ ,P。,Po},其中PA,P ,Po分别表示函数 谓词子集、约束谓词子集和依赖谓词子集,各谓词子集定义如 下:(1)函数谓词子集 ::={syscall(p。,P ,P:,…,P )}中的谓 词syscall表示调用的关键API函数名,m为该函数的参数个数, 变量P。表示返回值,P (1≤i≤m)表示第i个参数变量;(2)约 分别定义了三个系统函数以及参数约束条件,其中第2行的IsValue 谓词说明了其对应函数的第1个输入参数的值必须等于0。第5行 限定了三个函数之间的数据依赖关系,包括规定标识为z.的函数的 参数P与标识为 的函数的参数q值相等,标识为f2的函数的参数 r与标识为屯的函数的参数t存在依赖关系。第6行说明了三个函 数之间的时序限制,表明函数GetModuleFileName与GetSystemDirec- tory之间并没有严格的时序要求,但它们都必须在函数CopyFile之 束谓词子集P :::{Loc( ),IsValue(P,c)}表示API函数的约 束条件,通常与函数谓词成对出现,其中谓词Loc表示对应函数 的调用位置,其变量Z 为函数的唯一标识,谓词IsValue表示对 应函数的参数P取值等于常量c,常量c为字符串型或整型;(3) 依赖谓词子集P。::={Taint(fl,P,z,,q),Equal( ,P,z,,q)}用于 定义关键API调用之间的数据依赖关系,其中谓词Taint表示函 数标识号为 的参数P定义的数据被函数标识号为z 的参数q 所使用;谓词Equal表示函数标识号为 的参数P与函数标识 号为z 的参数q的值相等。 在上述定义的谓词集合基础上,通过引入逻辑关系符“^, V, ”、时态算子“EF”和限定词“了V”就能够表达一组关键 API调用的内在属性及关系属性,将较为复杂的恶意行为形式 化为相应的PTL公式。下面给出 L公式的语法结构: ::=pl V ( )l j ( )I( )l( 人 2)I( V :)IEF 令 , , :为PTL公式,原子公式P∈P, 和V将变量限 定在公式的一定范围中,EF 表示“将来存在一个可达状态s 满足 ”。下面从模型 在何种条件下满足公式 的角度给 出PIL的语义解释,首先给出程序模型的定义。 定义1程序模型M:(S,R,£)是一个Kripke结构,其中S 为状态集合,尺 S×S表示状态之间的迁移关系, :s一2 为状 态标记函数。 设M=(S,R,L)是关于谓词时态逻辑的一个模型,s∈S, , , 为P,rL公式,约束变量 的定义域为 。PrL公式的语 义解释如下: (1)M,sI=p当且仅当P∈ (s); (2)M,5l_V ( ),对于所有的tE T,使得M,s[- ; (3)M,sI=j ( ),存在tE T,使得M,sI= ; (4)M,sl= 当且仅当M,引≠ ; (5)M,sI- l A 2当且仅当M,sl= l AM,sI= 2; (6)M,sI= V 2当且仅当M,s[-. 。VM,sl_ ; (7)M,S l=EFtP当且仅当存在一条以s开始的路径仃: s l_s2_÷…,存在M,S I_ 下面以病毒mydoom.bh的自我复制行为为例说明PTL公 式。该病毒通过GetModuleFileName和GetSystemDirectory函数 实现对病毒文件的路径和系统目录的获取,然后利用CopyFile 函数将自身复制到系统目录下。三个函数的参数约束及依赖关 系转化为PTL公式如下: (1)jP q r t|l】j12 13( (2) P。j P1 j P3(EF(Loc(11)AGetModuleFileName(p。,Pl, P,P3)^(IsValue(P ,O)))^ (3) jP。了P2(EF(Loc(12)^GetSystemDirectory(P。,r,P2)^ (4) 3P。 P3(EF(Loc(13)ACopyFileA(P。,q,t,P3)))A (5)Equal(11,P,13,q)ATaint(12,r,1"t)A 前调用。 2软件行为建模 为了检测验证属性的满足性,必须将目标二进制程序抽象或转 化为特定的软件模型。本文提出了一种基于系统调用轨迹的建模 方法:通过收集程序运行时的关键API调用的信息,生成程序的系 统调用轨迹,利用谓词转换算法将执行轨迹转换为Kripke结构。下 面对建模过程详细描述。 2.1系统调用轨迹的生成 首先给出系统调用轨迹的定义。 定义2系统调用轨迹是指程序运行过程中调用的关键 API函数序列,记为有向图G:(V,E)。其中 为节点集合,节 点 i∈V表示程序运行时调用的关键API函数,记为四元组口i =(1oc,syscaU,pvalue,taint),其中 表示函数的虚拟地址,s scall表示函数的名称,walue表示函数调用时各参数的具体值, 记为( = ,p = ,…,P = ),其中pI( ≤J})为第i个参数 名称, 为pl的具体值集合,taint为一个四元组( ,Pi,/oc, P。),表示虚拟地址为/oci的函数参数p 定义的数据被本函数的 参数P 所使用。E为有向边的集合,边e=( ,vi)表示 为 紧邻的下一个关键API调用。 在系统调用轨迹中,虚拟地址、函数名及具体的参数值可以 通过对系统函数的监控直接获得,但是函数问的数据依赖关系 需要对函数参数进行数据流分析才能够确定。我们为此采用了 污点分析技术 J。污点分析技术先将敏感数据标记为污点,然 后根据污点传播规则计算污点源的传播路径,以此为依据提取 系统函数之间的数据依赖关系。为了便于描述污点选择策略和 传播策略,给出如下规则: 规则1若PTL公式 存在谓词Taint(f,, ,z2,y),设Loc (f )对应的函数名称为sname,则在系统调用轨迹中所有函数名 为sname的参数 均被标记为污点。 规则2设系统函数F={P ,P },其中Pi 为输人参数, P。 为输出参数(含返回值),若P 为污点,则标记P 为Pi 的污 点。 初始污点依据规则1进行选择,当初始污点标记完成后,通 过对代码执行过程实现指令级的监控,按照污点传播规则记录 污点传播路径。污点传播规则分为指令传播规则和函数传播规 则:指令传播规则根据指令的类型进行编写,主要针对运算类型 的指令和内存操作的指令。函数传播规则针对具体的系统函数 而制定,如规则2所示。根据污点传播规则,设函数 的调用 地址为z ,函数 的调用地址为 ,若 的参数 为污点,F2 在污点 的传播路径上且被污染的数据为其参数Y时,则将依 赖信息taint(f , ,z:,Y)记录在函数F2的节点信息中。图1展 第7期 奚琪等:一种基于模型检测的恶意行为识别方法 续表2 287 而成。模型检测器以程序模型脑和 L公式 为输入,通过 标记算法进行验证,若 ,s l_ ,则返回值为真,表示检测程序 具有恶意行为且给出 代表的行为,否则为返回值为假。 样本名称 Downloader.bd 关键系统 调用总数 317 模型 状态数 121 检测结果 YES 满足公式 序号 1,2,3 3.2实验测试 为了验证MBDS检测恶意行为的准确性,我们分别安排了 三组实验。 Mydoom.bh NetSkv.ac 469 564 177 213 YES YES 1,3 l 第一组实验测试MBDS对常见恶意代码的识别能力。实验 选择的样本来自Vx Heaven¨ 提供的病毒样本库。我们以自我 复制行为作为特征对样本进行检测并对实验结果进行分析。表 1给出了三种采用不同API调用组合实现的自我复制的方法所 SalityStub.a ghost 214 549 63 157 YES N0 3 NUI工 对应的PTL公式。在模型构造过程中,为了将程序模型的状态 数量控制在有限范围内,我们设置了1O秒钟为程序运行时限, 超过时限仍在运行的程序将被主动终止。表2展示了样本对自 我复制行为的检测结果。 表1自我复制行为的PTL公式 序号 吼公式 jnlj n3 rjt3 sj u3vjw311 j12 h了14 j15( p。 pl p3(EF(Loc(11)A GetModuleFileName(P0,Pl,nl, 1 P3)A(IsVaiue(P1,0)VIsVaiue(Pl,Ox400000))))^ 了P。 P2 P3(EF(Loc(12)A CopyFileA(P。,n,P2,P3)))A (Equal(1I,m,12,n))AEF(Loc(11)AEF(Loc(12))) 3m了nj r了tj 8了uj v了w311 j12 j13 314 j15( P。3Pl 3P3(EF(Loc(11)A GetbioduleFileName(P。,P1,m, P3)A(IsVaiue(Pl,O)VIsVaiue(P1,0x400000))))^ 了P2 jP3 jp4 jP5 3P6 3P7(EF(Loc(12)A CreateFileA(r,n, P2,P3,P4,P5,P6,P7)))A 3P1 jP2 3P3 3P4 3P5 3P6 3P7(EF(Loc(13)A CreateFileA 2 (u,P1,P2,P3,P4,P5,P6,P7)))A 3P。 p3 j P4 3p5(EF(Loc(14)AReadFile(P。,s,t,P3,P4, P5)))A 3p。jP3 P4 P5(EF(Loc(15)AWriteFile(P。,V,w, P3,P4,P5)))A(Equal(I1,nl,I3,n)A Equal(12,it",l4l s)^ Equal(13,u,15,v)AEqual(14,t,15,w))AEF(LQc(11)^EF (Loc(12)A EF(Loc(14)))A(Loc(12)^EF(Lnc(15)))A (Loc(14)A EF(Loc(I5)))) jm nj r t3 s3q3 x3uj v w3I1 jI2 jI3 I4刁15 jI6( jP。3Pl jP3(EF(Loc(I1)AGetModuleFileName(P。,Pl,nl, P3)A(IsValue(P1,0)VIsVahe(pl,0x40OO00))))A p2 3p3了p4 P5了p6 3p7(EF(L0c(12)A CreateFileA(r,i1, P2,P3,P4,P5,P6,P7)))A jpt 3 p2 jp3习p4|p5 jp6 jP7(EF(Loc(13)A CreateFileA (u,Pl,P2,P3,P4,P5,P6,P7)))A 3 了P2 3P3了P4 3p5 jP6(EF(Loc(14)ACreateFileblapping(t,s, P2,P3,P4,P5,P6))A 了P2了P3 p4 3p5(EF(Loc(15)AMapViewoff'ile(x,q,P2,P3, P4,P5)))A 了P。了P3jP4 3p5(EF(Loc(16)AWriteFile(P。,v,w,P3,P4, P5)))A(Equal(Il,m,I3,n)AEqual(12,r,14,s)AEqual(14,t, 15,q)AEqual(13,u,l6,v))ATaint(15,x,16,w)^EF(Loc(I1) AEF(Loc(I2)AEF(Loc(I4)AEF(1oc(15))))A(Loc(12)A EF(no ̄(16)))A( (I5)AEF( (16)))) 表2对自我复制行为的检测结果 样本名称 关键系统 模型 检测结果 满足公式 调用总数 状态数 序号 Autorun.fq 474 ll8 YES 2 Loveletter.a 329 104 YES 1 表2的数据主要包括代码运行调用的关键系统调用数、行 为模型的状态数、检测结果以及被满足的PTL公式序号。从实 验的结果可以看出,删除重复调用的关键API函数后,模型状态 总数比AtI调用数量少得多,这有利于提高检测算法效率。多 数样本被检测出一种或多种自我复制行为,个别样本(如ghost) 将代码硬编码后保存在文件体中,执行时通过读内存的方式直 接写入新建文件,该操作被归类到“创建文件”行为而没有归类 于“自我复制”行为。 第二组实验为了检测MBDS对抗混淆技术的能力,并与 NOD32、卡巴斯基(KAV)、诺顿(Norton)等杀毒软件进行了对 比。我们选取了一个开源的病毒样本netsky ae,通过垃圾代码 插入、寄存器变换、指令乱序、等价指令替换、插入垃圾调用以及 综合多种手段等混淆方式对代码进行了修改,生成了不同变种。 测试结果如表3所示。 裹3寨金较件的检测效果比较 病毒样本 混淆手段 N0D32 KAV Nart0n MBDS netsky.ae YES YEs YES YES netsky.aea 垃圾代码插入 YES YES YES YES netaky.aeb 寄存器变换 YES YES N0 YES netsky.aec 指令乱序 N0 YES YES YES netskv.aed 等价指令替换 N0 N0 N0 YES netskv.aee 插入垃圾调用 YES YES YES YES netsky.aef 综合混淆 N0 N0 N0 YES 从表3的数据可以看出,对于当前杀毒软件使用以特征签 名匹配为主,系统调用序列匹配为辅的检测手段,仅依靠一种混 淆技术很难绕过检测。但是,如果综合采用多种混淆手段,尤其 是等价指令替换与插入垃圾调用相结合的方法则可成功绕过大 多数杀毒引擎。通过实验结果可见,相比较于传统的检测手段, 本文提出的基于模型检测的恶意行为识别方法更具优势。 4结语 本文提出了一种基于模型检测技术的恶意代码识别方法。 相较于用线性时态逻辑(LTL)和计算树时态逻辑(CTL)描述的 恶意行为,本文采用谓词时态逻辑刻画的API函数的属性更加 丰富,因此能够描述更为复杂的行为。实验结果说明了本方法 不仅能够验证代码的恶意行为,而且相较于传统的杀毒软件能 够更有效识别经过混淆后的恶意代码。 由于本文是采用代码运行过程中获得系统调用轨迹的方 (下转第322页) 322 计算机应用与软件 2015生 特征来表征图像内容;然后,针对传统图像聚类算法对初始参数 敏感且计算复杂度高的问题,采用基于union—ifnd方法对投票结 果进行聚类。最后,采用purity和entropy指标评价本文方法的 性能。实验结果验证了本文方法在处理含有大量孤立噪声点图 [17]AhoAV,Hopcroft J E,Ullman JD.计算机算法的设计与分析[M]. 黄林鹏,王德俊,张仕,译.北京:机械工业出版社,2007:77—83. [1 8]Ke Y,Suthankar R,Huston L.Eficfient nera-duplicate detection and sub—image retrieval[C]//Poreeedings oftheACMInternationalConfer- ence on Multimedia,2004:869—876. 像聚类时的有效性。 需要指出的是,由于本文方法是基于阈值判别的方法,因此 可能会漏掉背景复杂度简单的类,下一步将研究基于模式学习 的方法。同时,当数据集规模急剧增大时,本文算法在实际应用 [19]Chen Y,Wang J Z,Krovetz R.CLUE:Clusteimg—based retirevla of images by unsupervised learning[J].IEEE Trans.On Image Process- ing,2005,14(8):1187—1201. 一 中同样会受到计算复杂度高的限制。 (上接第287页) 参考文献 式,因此只覆盖了程序的一条执行路径,所构建的程序行为模型 [1]Sileshi M,Gamback B.Evaluating Clustering Algorithms:Cluster Quality and Feature Selection in Content—Based Image Clustering 并不完备,可能会出现恶意行为漏报的情况。下一步的工作将 重点研究代码多路径发掘,在此基础上期望构建更完备的程序 模型,降低检测的漏报率。 [C]//WRI World Congress on Computer Science and Information En— gineering,2009:416—422. [2]Sivic J,Zisserman A.Video Google:A text retireval approach to object matching in videos[C]//Proceedings ofthe IEEE International Confer- ence on Computer Vision,2003:1470—1477. 参考文献 [1]Sebastian Schrittwieser,Stefan Katzenbeisser.Code Obfuscation a— gainst Stmic and Dynamic Reverse Engineering[C]//Proceedings of he 13th itnternational conference on ifornmation hiding,Vienna, Springer—Verlag Press,2011:270—284. [3]Jegou H,Douze M,Schimid C.Improving bag—of-features for large scale image search[J].International journal of computer vision, 2010,87(3):316—336. [2]Konrad Rieck,Philipp Trinius,Carsten Willems.Automatic analysis of malware behavior using machine learning[J].Journal of Computer Security,201l,19(4):639—668. [4]Jing Yan W,Bensmail H,Gao X.Joint learning and weighting of vis- ual vocabulary for bag—of-feature based tissue classification[J].Pattern Recognition,2013,46(12):3249—3255. [3]Christodorescu M,Jha S,Seshia SA,et a1.Semantics.Aware malware detection[C]//Proceedings of the 2005 IEEE Symposium on Security and Privacy,Washington,DC,USA,Springer—Vedag Press,2005:32 —[5]Penatti O A B,Fernanda B S,Valle E.Visual word spatial arrange— ment for image retireval and classiifcation[J].Pattern Recognition 2014,47(12):705—720. 46. [6]Li Z,Kim—Hui Y.An eficifent approach for scene categorization based on discriminative codebook learning in bag—of-words framework[J]. Image and Vision Computing,2013,31(6):748—755. [4]Younghee Park,Dougls Reeves,Viakram Mulukutla.Fast malware clssaification by automated behaviorla graph matching[C]//Proceed- ings of he Sitxth Annum Workshop on Cyber Security and Ifornmation Intelligence Research.New York,NY,USA,ACM Press,2010:Arti- 、 [7]万建平,彭天强,李弼程.基于证据理论的视频语义概念检测 [J].数据采集与处理,2011,26(5):536—541. cal No.45. [8]蔺博宇,郭志刚,李弼程,等.基于随机化映射和模式熵的近似重 复图像检测[J].数据采集与处理,2012,27(3):363—367. [9]Zhao W,Ngo C,Tan H,et a1.Near duplicate keyframe idenfication [5]Martina Lindofrer,Clemens Kolbitsch,Paolo Milani Comparetti.De- teeting Environment—Sensitive Malware[C]//Proceedings of the 14th International Symposium RAID,Menlo Park,CA,USA,Springer— Verlg Praess,2011:338—357. with interest point matching and patten rlearning[J].IEEE Transac— tions on Muhimedia,2007,9(5):1037—1048. [6]Kinder J,Katzenbeisser S,Schallhart C,et a1.Detecting malicious code by model checking[C]//Proceedings of he tSecond International Conference on Detection of Intrusions and Malware,and Vulnerability Assessment.Vienna:Springer-Verlg Press,2005:174—187.a [10]Mikolajczyk K,Tuytelaars T,Schmid C,et 1a.A comparison ofafine re— gion detectors[J].Int.Journal on Computer,2005,65(2):43—72. [11]Mikolaje ̄k K,Schmid C.A performance evaluation of local descrip— tots[J].IEEE Transactions on Pattern Analysis and Machine InteM- gence,2005,27(1O):1615—1630. [7]张一弛,庞建民,范学斌,等,基于模型检测的程序恶意行为识别 方法[J].计算机工程,2012,38(18):107—110. [8]王蕊,冯登国,杨轶,等,基于语义的恶意代码行为特征提取及检测 [12]Lowe D.Distincitve image features from sclae・invariant keypoints[J]. International Journal on Computer Vision,2004,60(2):91一l1O 方法[J].软件学报,2012,23(2):378—393. [9]Kang M G,McCamant S,Poosnkaam P,et 1a.DTA++:Dynamic taint analysis with targeted contolr—flow propagation[C]//Proceedings of the 18th Annual Network and Distributed System Security Sympesi- um,San Diego,California,USA,2011. [13]Jin aZhu,Hanshi Wang.An improved k-means clustering lagorithm [C]//The 2nd IEEE International Conference on Iformatnion Manage. ment and Engineering,2010:178—182. [14]Yih JM.FCM algoirthm based on nomarlizedmahalnobias distncaesin image clusteirng[C]//Proceedings of the Ninth Intenartional Cofner— ence on Machine Learning and Cybemetics,2010:1 1—14. [10]ClrakeE,Grnmberg0,PeledD.Model Checking[M].London,MIT Press,2000:129—134. [11]BeHard F.QEMU,a Fast and Portblae Dynamic Translator[c]// Proceedings of the annual conference on USENIX Annual Technical Conference,Berkeley,CA,USA,USENIX Association Press,2005: 41—46. [15]陈华,管乐乐,陈秉岩,等.基于人工神经网络的聚类算法[J].安 徽理工大学:自然科学版,2009,29(2):136—142. [16]张忠华,杨淑莹.基于遗传算法的图像聚类设计[J].测控技术, 2010,29(2):48—55. [12]VX Heavens[EB/OL].http://vx.netlux.orS/.