多目标自适应和声搜索算法
提出了一种利用Pareto支配来求解多目标优化问题的自适应和声搜索算法(MOSAHS)。该算法利用外部种群来保存非支配解,为了保持非支配解的多样性,提出了一种基于拥挤度的删除策略,这个策略能较好地度量个体的拥挤程度。用5个标准测试函数对其进行测试,并与其他多目标优化算法相比较。实验结果表明,与其他的算法相比,提出的算法在逼近性和均匀性两方面都有很好的表现,是一种有效的多目标和声搜索算法。102011,47(31)Computer Engineering and Applications计算机工程与应用HMS;(4)和声记忆保留概率HMCR的上下界;(5)音调调节其中,n为所得解的个数,d1为第个解对应目标向量与其最近概率PAR的上下界;(6)最大迭代次数M。的目标向量之间的距离,d为d的平均距离。SP=0表示算步骤2初始化和声记忆库。法所得的解均匀的分布在 Pareto前沿。该指标反映算法所得步骤3产生新解。每次可以通过三种机理产生一个新解分布的均匀程度。解。(1)保留和声记忆库中的分量:(2)随机选择产生;(3)对多样性指标:将算法获得的所有非劣解按某个目标函数(1)、(2)中某些分量进行微调扰动产生。每次产生M个新个体。值的大小有序地分布在目标空间上,h为相邻两点间的距离,步骤4外部种群的更新。从记忆库租新个体中找出非支h为h的平均值,b,b分别为算法获得的边界解与相应极端配解放在外部种群中,计算外部种群的支配关系删除支配解之间的距离,则多样性指标△为解,把非支配解侏留在外部种群中。若外部种群中非支配解的数目超过外部种群规模,则删除多余的个体,每次仅删除hy+h,+∑|h-b(8)个,直到达到外部种群的规模。h,+h1+(n-1h步骤5更新记忆库。计算记忆库和新产生的个体的序极端解指某一目标函数值最大而其他目标函数值最小的并将其按照从大到小的顺序进行排列,前HMS个个体作为新解。n为非劣解的个数。当算法获得的非劣解完全均匀的分的记忆库,进入下一次进化布在均衡面上,h=0,h1=0,所有的h=h,这时△=0。因步骤6判断是否满足终止条件,若满足,则停止迭代,输此,A指标反映非劣解能否均匀的分布在整个均衡面上。出 Pareto最优解集,否则,返回步骤3。4.2数值结果334算法分析为了验证本文提出的算法的有效性,本文采用具有不同由亍和声搜索算法主要是基于邻域搜素的,初始解的好 Pareto前沿的几个典型函数进行仿真实验测试。测试函数坏对搜索的性能影响很大。和声搜索算法可以随机产生初始ZDT1、ZDT2、ZDT3、ZDI4、ZDT6是二维目标函数。由于处理解,也可以通过使用其他的启发式算法或其他方法产生较好多目标优化问题的和声搜索算法还不是很多,所以本文仅与的初始解。和声记忆库HM的大小M是和声搜索算法的种和声搜索算法 IMOHS相比,然后与4种多目标优化算法个重要参数,和声搜索算法之所以具有更强的全局搜索能力,相比,测试结果见表1-表4很大程度上依赖于HM的存在,一般来说,M越大,找到仝局表1MOHS和 MOSAHS的G表2 IMOHS和 MOSAHS的sP最优区域的能力越强。但是随着M的増人,计算量将会变IMOHSMOSAHSIMOHSMOSAHS4大,从而影响到最终搜索到最优解的速度。和声保图概率Dm1781420241-01Dm11433D031.0OE-350100E-0055.3E-36.5328E-004HMCR是和声搜索算法的另一个重要参数,其取值范围是0到5.39-42.1293L-0043.3E-30.0059之间,它决定每次迭代过程中新解产生的方式。在和声搜索ZDT2ZDT224E-48.8573E-0052.4E-35.9104E-004算法中,因新解产生时每个变量都依赖于HMCR,故HMCRDT39.80E-465670E-004ZDT32.|B-20.0077应取较大的值,通常HMCR的值在0.8到1.0之间。音调调节1.7OE-324699E-00529E-28.5088E-004率PAR在和声搜索中起控制局部搜索的作用,它可使搜索逃表3儿种多目标优化算法的GD离局部最优,其值一般取0.1到0.5之间。NSGA-IISPEA2MOPSOIOSADE MOSAHS1.3437E-33.8175E-31.8564E-11.2485E-329624EZITI14078E-449142E-37.7429E-297574E-550100E-0054数值实验9.8112E-48.6104E-352428E-19.8051E-42.1293E-004ZDT241算法性能的评价指标6.4138E-42.5973E-32.9699E-149107E-58.8573E-005多目标优化问题的解质量评价主要集中在所求得的解与2.4783E-397165E-34.3418E-2.1620E-36.5670E-004ZDT31.2746F-45.2305F-364880E-219962F-42.4699E-005理论最优值之间的差距,以及求得的解的分散程度和多样性,5.1635E-29.2512E12010E-349244E-004这里采用由 Van veldhuizen和 Lamont在1998年提出来的世ZDT413281E-34.282lE-18.3745E-549411E-005代距离( Generational Distance,GD)来衡量所求解与理论解75-21.909-252103E-22656-31190-004ZDT6之间的差距,世代距离被定义为如下形式:60797E-31.3994E-32.4963E-21.0967E-48.0065E-006表4儿种多目标优化算法的AGD=NSGA-IISPEA2MOPSO MOSADE MOSAHS0.504290.296440.2038050.131950.4063其中,n为最优解数目,d,为所求得第i个个体在目标空间与理ZDTI3.9251E-21.0850E-116956E-25.692lE-300219论 Pareto最优前沿的最小欧氏距离。世代距离GD越小,算法0.487750.505170.2880260.120990.3764ZDT2逼近 Pareto最优解集的程度越妤,当所得到的解刚好和从最优2.7686E-21.8356E-11.7580E-279444E-300359前端取得的点重合时,GD=0。0.590250.503100.6177960.437830.6388ZDT33.0439E-29.7283E-23.5019E-28.0801E-300103解的分散程度用下式来度量0.375240.727660.3235490.118270441ZDT42.4448E-25.515-13.2953E-25.869E-30.0227SP=n-/~(d-d1)0.486ll0.296441.1232580.1331904325(7)ZDT63.6054E-21.0850E-11.731E-19.8303E-300363InInj∈(1,n)②/(x)-/1(),=1,2,…,n,i≠其中表1、表2中MOHS算法的数据来源于文献5],和o1994-2012ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net陈莹珍,高岳林:多目标自适应和声搜索算法2011,47(31)0.900.80.80.60.70.70.40.60.60.20.30.20.40.10.10.800.10.20.30.40.50.60.70.80.91.000.10.20.3040.50.60.70.80.91.000.10.20.30.40.50.60.70.80.9图1ZDT1图2ZDT2图3ZDT3声记忆库的规模为10,和声保留概率的上下界HMCR==0.95,5总结HMCR=0.85,音调调节概率的上下界PAR、=0.2,PAR=本文将和声搜索算法应用于多目标优化问题的求解,提0.15,最大迭代次数为1000.为了消除实验中的随机性,并进出了一种新的基于拥挤度的多目标和声搜索算法 MOSAHS。行算法性能指标评价,对每个测试函数均重复计算10次。表3、该算法利用单个解与解之间的距离以及单个解与整体解之间表4中 NSGA-II,SPEA2, MOPSO, MOSADE的数据,来源于文的距离,删除种群中的个体,并利用序来更新和声记忆库。数献[161。对丁本文提出的多目标和声搜素算法 MOSAHS,和值实验数据表明,提出的算法在逼近性和多样性两方面都有声保留概率的上下界分别为095085,音调调节概率的上下界很好的表现是一种有效的多目标和声搜索算法。然而,和声分别为0.2、0.15,和声记忆库的规模为10,外部种群的规模为搜索算法和其他群智能算法一样,收敛性的理论证明很困难100,最大迭代次数为10000,算法运行10次。有待进一步的深入研究。表1中上行表示算法收敛度指标GD的平均值,下行表示GiD的标准方差;表2中上行表示分散度指标SP的平均值,下参考文献:行表示SP的标准方差;表3中上行表示算法收敛度指标GD的 Schaffer J D Multiple objective optimization with vector evaluat-平均值,下行表示GD的标准方差;表4中上行表示多样性指ed genetic algorithms[C]//Proceedings of the lst IEEE International Conference on Genetic Algorithms. Lawrence Erlbaum标Δ的平均值,下行表示多样性指标△的标准方差。1985:93-100从表1、表2可以看出本文提出的算法 MOSAHS在收敛(2]HomJ, Nafpliotis N, Goldberg D E A niched Pareto genetic al度和分散度上均优于 IMOHS;从表3、表4可以看出,与NSgorithm for multi-objective optimization[C],Proceedings of thGA- SPEA2、 MOPSO、 MOSADE算法相比,本文提出算法Ist IEEE Conference on Evolutionary Computation, PiscatawMOSAHS的收敛性优于前面四种算法,在多样性方面,与NS994.1:82-87GA- I SPEA2算法相当,此 MOPSO、 MOSADE算法稍差。[3] Srinivas N, Deb KMulti-objective function optimization using图1~图5是本文提出的算法( MOSAHS)对ZDT1,ZDT2non-dominated sorting genetic algorithms[J]. Evolutionary CompuZDT3,ZDT4,ZDT6的函数图像。tation,l994,2(3):221-248[4] Deb K, Pratap A, Agarwal S, et al. A fast and elitist multi-objective genetic algorithm: NSGA-IIJ.IEEE Transactions on Evolu0.8tionary Computation, 2002, 6(2): 182-1970.7[5] Zitzlcr E, Thiclc L Multi-objcctivc evolutionary algorithms: a0.6comparative case study and the strength parel approach0.5IEEE Transactions on Evolutionary Computation, 1999, 3(4)0.40.2[6 Zitzler E, Thiele L SPEA2: improving the strength pareto evolu-0.1ionary algorithm for multi-objcctivc optimization[R].Rcscarch00.10.20.3040.50.60.7080.91.0JrL,2001[7 Knowles J, Corne D The pareto archived evolutionary strategy图4ZDT4A new baseline algorithm for multi-objective optimization[C]//1.0Proceedings of the Conference on Evolutionary Computation Pis-0.9ltaway, NJ: IEEE Press, 1999: 98-10508[8] Tsai S J, Sun T Y, Liu CC, et al. An improved multi-objparticle swarm optimizer for multi-objective problems[J]. ExpertSystems with Applications, 2010, 18(2): 1-150.4[9 Geem Z W, Kim J H, Loganathan G V.A new heuristic optimi-0.zation algorithm: Harmony scarch[J]. Simulation, 2001, 76(2): 60-80[10] Mahdavi M, Fesanghary M, DaInangir E An improved harmony0.20.30.40.50.60.70.80.91.0search algorithm for solving optimization problem] AppliedfMathematics and Computation, 2007, 188(2): 1567-1597图5ZDT6(下转174页o1994-2012ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net1742011,47(31)Computer Engineering and Applications计算机工程与应用插值算法对(a)放大3×3倍后的效果图;图6〔g)是采用本文中个像素需24位。在实现本文算法时,需在读取位图文件信息的插值算法对(a)放大3×3倍后的效果图,其中(a-b-1/6,头时进行判断是属哪类图像(灰度/24真彩色),对于灰色图像1=2=15°)。图7(a)是256×256的原始图像,(b)为原图经只需对图像进行逐像素(也即逐字节)的处理即可。而对于24降采样生成的128×128的缩小图像;(c)、(d为分别采用最邻位彩色图像则分别对每一像素中的3个分量分别处理即可,所近插值、双线性插值算法对(b)放大2×2倍后的效果图。(e)是得到的结果与灰度图是一致的,如图8所示。(b)用 Prewitt算子检测到的图像边缘效果图,(f)是采用本文提出的插值算法对(b)放大2×2倍后的效果图,其中(a=b=1/4,q1=92=15°)。从灰度值显示及图像效果可以看出本文所提出的算法在一定程度上突出了边缘,并修复了部分断裂的边缘,图6(d)中的像素灰度值显示当放大倍数为2×2时,修复边缘的效果更加显著。(a)原图(b)双线性插(c)本文算法(2×2)值(2×2)(a=b=16,1=2=15°)图8采用不同插值算法放大的图像效果图5结论基于图像边缘信息的双线性插值算法充分利用了图像的(a)原图(b)原图降采样(c)最邻近插边缘信息对放大图像边缘上的插值点及边缘邻接点做了较好值法(2×2)的插值处理,这种处理方式使放大后的图像在很大程度上保护了图像的细节,较其他插值算法简单且效果明显,更优于传统双线性插值算法。(d)双线性(e)用 Prewitt算(f)本文算法(2×2)参考文献:插值(2×2)子检测到的边缘(a=b=14,91=中2=15[] Castleman K R数字图象处理[M]北京:清华大学出版社,202图7采用不同插值算法放大的图像效果图117-119[2]孙成叶,桑农图像双线性插值无级放大及其运算量分析[计算上述实验采用的是8位的灰度图像,其实本文所提出的算机工程,2005,31(9:167-169法同样适用于彩色图像,尤其是24位的真彩色图像。灰度图[3]谢美华,王正明基于图像梯度信息的插值方法中国图象图形像的存储文件带有图像颜色表,此颜色表共有256项,图像颜学报,2005,10(7):856-861色表中每一项由红、绿、蓝颜色分量组成,且红、绿、蓝的颜色4Liⅹi, Orchard M T New edge-direcled inlerpolalionJJIEEE分量值都相等。而且,灰度图像的每个像素由8位组成,其值Transactions on Image Processing, 2001, 10(10): 1521-1527范围从0到25,表示256种不同的灰度级,每个像素的像素值5岁立摩,杨勋年基于细分的图像抽值算法门计算机轴助设计与是图像颜色表的表项入∏地址。对于彩色图像而言,若是伪图形学学报,2006,18(9):1311316.彩色图像,则其与灰度图像相似,其存储文件中也带有图像颜孟晋字,华思基于形状的二维灰度图象插值门中国图象图形色表,整幅图像也仅有256种颜色,每个像素由8位组成,但在学报,2003,3(3):312-316图像颜色表中的红、绿、蓝颜色分量不全相等,此时,每个像素I] Yang Xunnian Normal based subdivision scheme for curve design[J]. Computer Aided Geometric Design, 2006, 23(3): 243-260的像素值不是出每个基色分量的数值决定,而是把像素值当s]杨淑莹vC+图像处理程序设计M2版北京:清华大学出版社做图像颜色表的表项入口地址。而24位的真彩色图像的存储2005:130-132文件中则不带有图像颜色表,图像中每一像素是由RGB三个19G0 nzalez r o. Woods e数字图像处理M2版北京:电子1分量组成,每个分量各占8位,每个分量的取值是0到255,每业出版社,2009:463-471上接111页)[15 van Veldhuizen D A, Lamont G B Evolutionary computation[11] Kang S L, Geen Z W.A new structural optimization methodand convergence to a Pareto front[C]/Koza J R Late Breakbased on the harmony search algorithm[J]. Comput Struct, 2004ing Papers at the genetic Programming Conference, Stanford82(9/10):781-798University, California, Stanford Bookstore, 1998: 221-228[12] Geem Z W. Optimal cost design of water distribution networks[l6]刘思远,刘景青.一种新的多目标改进和声搜索优化算法门计算using harmony search[J].Eng Optimiz, 2006, 38(3): 259-280机工程与应用,2010,46(34):27-30[131 Deb K Multi-objective optimization using evolutionary algorithm(M. [17] Wang Yaonan, Wu Lianghong, Yuan Xiaofang. Multi-objectiveChichester: lohn Wiley&Sons, 2001self-adaptive differential evolution with elitist archive and[14]陈莹珍,高岳林混沌自适应和声搜索算法太原理工大学学crowding entropy-based diversity measure[J]. Soft Compute报,2011,42(2):141-1442010:193-209o1994-2012ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net
- 2020-12-07下载
- 积分:1
如何攻破软件
如何攻破软件,英文名how to break software。本文为精简版,浓缩就是精华啊。报错信恳仅仅是迫使程序停止来显示一条报错信息、,然后接着执行卜一条输入或者直到定时器超时而凵。但是,也有其他一些报错信息则是来自于被程序抛岀和异常处理器被执行引发的异常。异常处理器(或中央错误处理线程)因其指针突然改变而数据状态不产生相应变化,通常会存在问题。异常处理器执行的睽间,各种各样的数据问题接踵而至:文件未关闭、内存未释放、数据未初始化。当控制重新回到主线程,很难判断错误处理器是在什么时刻被调用,又会有怎样的遗留问题在等待粗心大意的开发人员:因为文件没有关闭导致打开文件失败、在没有初始化前就开始使用数据。如果我们能确侏在所有的报错信息都出现过之后系统依然正常工作,那么也算是为用户省去」不少麻烦(吏不用说我们的维护工程师∫)图1展小∫我的学生在微软Word20中发现的一个有趣的bug,一条错误提小不知为何连续出现了两次。这个bug是在通过单一输入攻击错误处理线程的过程中发现的确保软件指定默认值。开发人员通常不记得在用户输入越界或给参数改置不合理的值时指定默认的值。有时候强制改立默认值意味着什么也不做一一然而正因为恕不到,这一举措甚至难倒」优秀的开发人员。例如,在word2000中,如下对话框中有一个选择框,当不对其做任何修改时再次打开对话框,该控件将消失。对比左右图片中的对话框。你发现什么控件消失了吗?Index and I atlesaE Ind and T nhl图hdat Tae or Crems I ae ofEr|Bt图pr PC aba业pHanns JEening 2REMTE 2Stade 3.HAidar 2HeadsP Eghk dg pae numbersT-n k有的时候指定默认值需要先改变值的当前设定,然后将其设定为个不合理的值。这种连续的转换保让了再转换成其他可用的值前是经过设置默认值尝试输入变量的所有可用的字符集有的输入问题很简单,特别是当你使用了类似$,%,#,引号等等字符付,这些字符在许多编程语言中有特姝意义并且作为输入被读入时通常需要特姝处理。如果廾发人员未考虑这种情况,则这些输入可能导致程序的失败。通过改变输入内容的多少引发输出区域的改变聚焦丁输出木身是一神发现bug颇有成效但是极少使用的方法。其思想是:先假定一种表现为bug的输出或者行为,然后寻找能够导致这种现场产生的输入。以上所述的一个简单的攻击例子就是通过改变输入值和输入字符串的长度来引发输出区域大小的重新计算。个很好的概念性例子是将时钟的时间设置为9:59,然后等待它转到10:00。一开始显示区域是4个字符长度而后来是5。反过来,我们设定时间为12:59(5个字符),然后等待其转变为1:00(4个字符)。开发人员通常只会对初始化为空白的情况进行处理而不曾考虑到显小区域己有数据的情况下如何史新该区域以显小不同长度的数据。举个例子, PowerPoint中的“艺术字”功能中有个有趣的bug。假定我们输入下图中的个长的字符串可以发现因为字符串太长,并不是整个字符串都能显小出来。但这不是问题的关键。点击确认按钮时触发两个事件。首先,程序计算岀需要的输岀区域大小,然后将输入的文字填充进去。现在,我们编辑该字符串,将它改为单个字符。可以发现尽管现在只有单个字符,字体大小也没有改变,但显小区域大小却没有发生改变。进一步看。如果冉次编辑该字符串为多行的字符串,输出结果更有意思、。E Microsoft PowerPoint-[Presentotion1I回E= Fdit iAv Tns+ Form=t工 hls li smw inimw Henl可x回的品“口27%-2⊥□ ATTENTONMicrosoft InterJob interviewsCareerGo to room 210ae for all god mene come to the aid回 Eile Edit iaw Insert Forst Tools Slide show MA. in+y出1型x」10ATTENTIONob interviewsheld in Career seGo to room 20Keuper BldgC Microsoft Powerpoint [PresentationalUJEil- Edit yiw Insert For mat Inns Slide Show Mlinrnw Hen回x当鹛5x:+兽当2791 ATTENT工ONMicrosoft internheld in Career seGo to roomKeuper Bld一分也Aa的≡我悲这部分凵经介绍得比较清楚了,我们将进入卜一部分确保对显示区域的边界的检査。这是基于输出的另一种攻击思路,与之前的|分类似。然而,不同于之前着力」导致显区域内部出错,这次我们将精力集中在显示区域的外部。并且显示区域将不再重新计算显示边芥而仅仅是考虑边界溢出。再以 Power Poin为例,我们可以先画一个文木框,然后输入一个带上标的字符串。放大该字符串的宇体使上标的上半部分被截断。这一问题将连同之后的相关问题一起说明。引发屏幕刷新问题。这是使用 windows图形用户界面的用户会遇到的主要问题。对开发人员来说,史是个大问题:过度的刷新将导致程序变慢,而不刷新又会导致大大小小的问题,小至要求用户强制刷新,大到导致用户的操作失败通常通过在屏幕上添加、删除和移动元素来触发血刷新。这将导致背景車新绘制,如果贞面不能正确、及时地作出相应,那么这就是通常意义上的bug。其中,尝试变化所移动的元素的距离是一种较好的方式,可以移动一点点,接着移动一大截,移动一两次,接着移动很多次接着说回上面例子中的带上标的字符串,试着每次用鼠标拖动它移动一些距离,就会发现令人讨厌的问题,如下图所示。在 Office2000中→4引丝常出现的另一个与L口 ATTENIIONMcr。 tk Intern屏幕刷新相关的问题lob interview arheld in Cae se是文本的异常消失。Go to noon 21025Keuper Bdg这一讨厌的问题在word的页面边界附近4出现。Click to add notes输入值组合攻击口的rcm如南哪、、口四面、,凸,画■翻第二类输入/输出Side S 0f 6Bur Desnbug主要针对多个共同作用或相互影响的输入。例如,一个通过两个参数调用的API,其中一个参数的取值建立在另一个参数取值的基础上。通常,bug正是出在值组合上,因为代码的逻辑关系复张。找出不能共存的输入值的组合。那么哪些值的组合是有问题的?这个问题目前还处于积极研究中,但是我们已经找到了一个特别有效地方法,那就是先确定期望获得的输岀,然后试着去找到对应的输入值的组合。尝试产生无效的输出。这是一种适用于测试人员对问题域十分清楚的有效攻击方法。例如,当你在测试一个计算器并且清楚部分功能点的结果有限制时,试图找到超岀范围的结果所对应的输入值组合是值得的。但是,如果你不熟悉数学,那么这种努力很可能是浪费时间一一你甚至可能将一个不正确的结果当成正确的。有时候 windows木身会给出提示,告诉你哪些输入是相互关联的。此时,测试人员可以去测试这些值的范围,并且尝试触犯既定的关系。输入序列攻击软件中的输入就像一种止式的语言。单一的输入相当」组成语言的字母,输入的字符串类似构成语言的句子。其中一些句」应该通过控件和输入区域的启用与禁用被过滤。通过尽可能多地输入字符串、改变输入的顺序来测试这种问题选择导致无效输出的输入序列。和上文描述这是一种找到问题输入组合的好方法一样,这同样是找出有问题的输入序列的好方法。例如,当我们发现∫Oice2000中的一个导致文本消失的问题后,对 Power point幻灯片中标题文本框进行攻击。如下的一组屏幕截图冉现∫一个特定的输入序列是如何导致文本消失的。正回国wFE和 Eai swa. wart Frat m ao sty oran阳 mrt ma Dect ilt sow如mhDdF)…gB5:h1感 ATTLATI0H1b粪 ITtNTION1直 ITHNTIONMicosofT I nterMicrosoft Imt把MIcroset IotelCxn caosATHENTIONGo tD roMm 2门rNGatD fosT丑Micros af lrtenigveeKHr段hMirswios bereitKere EdCm取曰BD日要!比 b and ncosr宝tams7m· R6 anime)s□42正△=a面口日压=日日2▲·=量有趣的是仅仅将文本框旋转180度并不能发现这个bug。必须按照这样的操作顺序:旋转180度后,再旋转10度(或者更多)。逆向执行以上操作并不能修正这一问题,每当点山标题外部区域,该标题内容就会消失。改变输入的顺序之所以善于发现bug是因为很多操作自身成功执行的同时会遗留很多问题,它们将导致之后的操作失败。对输入序列进行彻底的检査会暴露出很多这样的问题。然而有时侯,下面这种攻击表明:为了发现bug,根本不需要使用多种多样的输入序列多次重复同样的输入序列。这种方式会对资源造成大规模占用,并且对存储数据空间造成压力,当然也包括发现其他负面的遗留问题。遗憾的是,大多数应用程序并不清楚自身空间和时间的限制,而许多开发人员倾向于假定资源总是足够可用的。在Word的公式编辑器中可以找到这方面的一个例子,程序本身似乎并不清楚它只能处理10层嵌套括号的计算数据攻击数据是软件的命脉;如果你设法破坏了它,那么程序将不得不使用被破坏的数据,这之后得到的就不是合理的结果。所以理解数据是如何、在何处建立是必要的从本质上讲,数据的存储是通过读取输入,然后将其存储在內部或者存储一些內部计算的结果来实现的。因此,测试正是通过提供输入和执行计算来实现数据在应用程序中的传递数据攻击遵循以下简单原则。数据攻击变量值攻击1存储不正确的数据类型2使数据值超过允许的范围数据单元大小攻击3.溢出输入缓冲区4存储过多的值5存储太少的值数据访问攻击6找出同一数据的不同修改方式变量值攻击这一类的攻击需憂对内韶存储的数据对象的数据类型和合法值进行检查。如果有对源码的权限则这些信息可以轻易得到,但是,通过小小的探索性测试和对错误信息的关注也可以确定人致的类型信息。改变输入的数据类型来找出不匹配的类型。在需要整数的区域输入字符(和类似的攻击)已经被证明十分有效,但随着现代编程语言对类型检查和类型转换的处理变得容易,我们发现这样的攻击相对之前已经不再那么有效使数据值超过允许的范围。被存储的变量数据和输入的变量数据一样,这样的攻击方式同样适用数据单元大小攻击第二类数据攻击旨在蝕发数据结构的溢出和下溢。换句话说。攻击试图打破预先设定的数据对象的大小限制。首先要说的就是典型的缓冲区溢出。溢出输入缓冲区。此处通过输入长字符串导致输入缓冲区溢出。这是黑客们偏好的攻击方式,因为有时候应用程序在崩溃之后会继续执行进程。若一名黑客将一段可执行代码附在一个长字符串中输入,程序很可能执行这段代码在Word2000的一个缓冲区溢出问题就是这样一个可被利用的bg,此bug被发现在査找/替换玏能中,如下所示。有趣的是,“查找”这一字段被合理地加以限制而“替換”没有正出面同一数据结构存储过多的值。复杂地数据结构诸如数组、矩阵和列表在测试中不仅仅要考虑存储8在其中的数值,还要考虑存储值的数目。同一数据结构存储过少的值。当数据结4正A日国重构允许增加和删除信息时,通常在做了n-1次增加的同时穿插着或在其之后做n次删除操作会导致攻击成功。数据访问攻击我的朋友 Alan Jorgensen喜欢用“右手不明左手所为”这句话来形容这一类bug。道理很简单,但开发人员却常倒在这一类攻击下:在很多程序中通常任何任务都能通过多种途径完成。对测试人员来说,这意味着同一个函数可以由多个入口来调用,这些入口都必须确保该函数的初始条件得到满足。个极好的例子是我的学生在 PowerPoint中发现的表格数据大小相关的崩溃性bug。创建表格时最大尺寸被限定为25×25。然而,可以创建一个25×25的表格,然后为其添加行和列——导致应用程序崩溃。这就是说,程序一方面不允许26×26的表格存在而另一方面却并不清楚这个规则的存在。运算攻击运算攻击操作数攻击使用非法操作数进行运算找出非法操作数组合结果攻士使运算结果过大使运算结果过小功能相互作用攻击找出共亨数据不佳的功能操作数攻击这类攻击需要知道在一个或史多内部运算中操作数的数据类型和可用的值。如果有源码权限则这些信息可以轻易获得。否则,测试人员必须尽最大努力去弄清楚正在进行的运算只体是什么、使用的是什么数据类型。触发由非法操作数引起的运算。有时侯输入或存储的数据处于合法的范围之中,但是在某些运算类型中却是非法的。被0除就是一个很好的例子。0是一个合法的整数,但作为除法运算的除数却是非法的。找出不能共存的操作数的组合。涉及到一个以上操作数的运算不仅受制于上面的攻击,同时存在操作数冲突的可能性。结果攻击第二类运算攻击旨在造成存储运算结果的数据对象的溢出和下溢试图造成运算结果过大而存储失败。就算是简单如y=x+1这样的运算在数值边界上也常出问题。如果x和y都是2比特的整数并且ⅹ的值为32768,则这一运算将失败,因为结果将会造成存储溢出。试图造成运算结果过小而存储失败和上文相同,不同的是使用y=x-1并且使x的值为-32767功能相互作用攻击文章中讨论的这最后一类攻击或许算是所有种类的鼻祖,可以用来区分测试菜鸟和专业人员:功能的相互作用。问题没有什么新意:不同的应用程序功能共享同一数据空间。两种功能的相工作用导致应用程序失败,不是因为对数据处理的设定不同,就是因为产生了不良副作用但是哪些功能共享数据并且能够在冲突情况下实现数据转化口前还是测试领域中一个开放的问题。日前我们正停留在不断地尝试阶段。下面这个例子足以说明情况这个例子给出了在Word2000中的同一页面上合并注和双列时出现的一个出人意料的结果。问题在于:Word从注释的引用点计算脚注的页面宽度。所以,若同一页面上存在两条脚注,一条被处于双列位置的内容所引用,另一条则被处于单列位置的内容所引用,单列脚注公将双列脚注挤到下一页面。同时被挤掉的还有引用点至页面底部间的文本。三萨三下面的屏幕截图形象地说明」问题。第二列的文木去哪里∫?连同脚如三签注一起处在n远aoh1M黑下一次你会任由文档像1=11 aata Ln1a回下111D这样显小吗?在找到解决方法(这意味着你得花时间去整理)前你将不得不忍受这一现状结论简单遍历—遍上面罗列的21种攻击策略叮以覆盖应用程序的大部分功能。事实上,施行次成功的攻击通常意味着尝试各种可能性,走过很多死胡同。但是仅仅因为部分这一类探索性方法发现不了bug并不意味着它们没有用。首先,这段吋间使用应用程序帮助测试人员熟悉程序的各种功能,从而产生新的攻击思路。其次,测试通过是好的消息!它们表明,品是可靠的:尤其当这组测试是上面所说的恶意攻击。如果代码可以承受这样的测试过程,它儿乎可以应对用户作出的任何操作。另外,永远不要低估了测试时怀揣一个具体目标的作用。我见过太多测试人员把时间浪费在亳无目的地输入或者随机地调用API试图导致软件出错。实行测试意味着制定明确的目标一一基丁会出错的点—一然后设计测试用例来实践该目标。这样,每个测试用例都有目的泩并且进度可以被随时控制。最后,记住,测试应该是有趣的。攻击这一比喻正是对测试的这一特性很好的诠释并且还为愉快的消遣时光添加∫些许作料。狩猎愉快
- 2020-12-09下载
- 积分:1