应用软件最怕什么攻击_怎么攻击软件app
作者:hacker | 分类:渗透破解 | 浏览:122 | 日期:2022年07月28日文章目录:
常见的信息安全威胁与攻击有哪些
窃取机密攻击应用软件最怕什么攻击:
所谓窃取机密攻击是指未经授权的攻击者(黑客)非法访问网络、窃取信息的情况,一般可以通过在不安全的传输通道上截取正在传输的信息或利用协议或网络的弱点来实现的。常见的形式可以有以下几种:
1)
网络踩点(Footprinting)
攻击者事先汇集目标的信息,通常采用whois、Finger等工具和DNS、LDAP等协议获取目标的一些信息,如域名、IP地址、网络拓扑结构、相关的用户信息等,这往往是黑客入侵之前所做的第一步工作。
2)
扫描攻击
扫描攻击包括地址扫描和端口扫描等,通常采用ping命令和各种端口扫描工具,可以获得目标计算机的一些有用信息,例如机器上打开了哪些端口,这样就知道开设了哪些服务,从而为进一步的入侵打下基础。
3)
协议指纹
黑客对目标主机发出探测包,由于不同操作系统厂商的IP协议栈实现之间存在许多细微的差别(也就是说各个厂家在编写自己的TCP/IP协议栈时,通常对特定的RFC指南做出不同的解释),因此各个操作系统都有其独特的响应方法,黑客经常能确定出目标主机所运行的操作系统。常常被利用的一些协议栈指纹包括:TTL值、TCP窗口大小、DF标志、TOS、IP碎片处理、ICMP处理、TCP选项处理等。
4)
信息流监视
这是一个在共享型局域网环境中最常采用的方法。由于在共享介质的网络上数据包会经过每个网络节点,网卡在一般情况下只会接受发往本机地址或本机所在广播(或多播)地址的数据包,但如果将网卡设置为混杂模式(Promiscuous),网卡就会接受所有经过的数据包。基于这样的原理,黑客使用一个叫sniffer的嗅探器装置,可以是软件,也可以是硬件)就可以对网络的信息流进行监视,从而获得应用软件最怕什么攻击他们感兴趣的内容,例如口令以及其他秘密的信息。
5)
会话劫持(session hijacking)
利用TCP协议本身的不足,在合法的通信连接建立后攻击者可以通过阻塞或摧毁通信的一方来接管已经过认证建立起来的连接,从而假冒被接管方与对方通信。
非法访问
1)
口令破解
可以采用字典破解和暴力破解来获得口令。
2)
IP欺骗
攻击者可以通过伪装成被信任的IP地址等方式来获取目标的信任。这主要是针对防火墙的IP包过滤以及LINUX/UNIX下建立的IP地址信任关系的主机实施欺骗。
3)
DNS欺骗
由于DNS服务器相互交换信息的时候并不建立身份验证,这就使得黑客可以使用错误的信息将用户引向错误主机。
4)
重放攻击
攻击者利用身份认证机制中的漏洞先把别人有用的信息记录下来,过一段时间后再发送出去。
5)
非法使用
系统资源被某个非法用户以未授权的方式使用
6)
特洛伊木马
把一个能帮助黑客完成某个特定动作的程序依附在某一合法用户的正常程序中,这时合法用户的程序代码已经被改变,而一旦用户触发该程序,那么依附在内的黑客指令代码同时被激活,这些代码往往能完成黑客早已指定的任务。
恶意攻击恶意攻击,在当今最为特出的就是拒绝服务攻击DoS(Denial of Server)了。拒绝服务攻击通过使计算机功能或性能崩溃来组织提供服务,典型的拒绝服务攻击有如下2种形式:资源耗尽和资源过载。当一个对资源的合理请求大大超过资源的支付能力时,就会造成拒绝服务攻击。常见的攻击行为主要包括Ping of death、泪滴(Teardrop)、UDP flood、SYN flood、Land 攻击、Smurf攻击、Fraggle 攻击、电子邮件炸弹、畸形信息攻击等
1) Ping of death
在早期版本中,许多操作系统对网络数据包的最大尺寸有限制,对TCP/IP栈的实现在ICMP包上规定为64KB。在读取包的报头后,要根据该报头中包含的信息来为有效载荷生成缓冲区。当PING请求的数据包声称自己的尺寸超过ICMP上限,也就是加载的尺寸超过64KB时,就会使PING请求接受方出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方死机。
2) 泪滴
泪滴攻击利用了某些TCP/IP协议栈实现中对IP分段重组时的错误
3) UDP flood
利用简单的TCP/IP服务建立大流量数据流,如chargen 和Echo来传送无用的满带宽的数据。通过伪造与某一主机的chargen服务之间的一次UDP连接,回复地址指向提供ECHO服务的一台主机,这样就生成了在2台主机之间的足够多的无用数据流,过多的数据流会导致带宽耗尽。
4) SYN flood
一些TCP/IP协议栈的实现只能等待从有限数量的计算机发来的ACK消息,因为他们只有有限的内存空间用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接停止响应,直到缓冲区的连接企图超时。在一些创建连接不收限制的系统实现里,SYN洪流具有类似的影响!
5) Land攻击
在Land攻击中,将一个SYN包的源地址和目标地址均设成同一个服务器地址,导致接受服务器向自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保持直到超时。对LAND攻击反应不同,许多UNIX实现将崩溃,NT则变得极其缓慢。
6)
Smurf攻击
简单的Smurf攻击发送ICMP应答请求包,目的地址设为受害网络的广播地址,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。如果将源地址改为第三方的受害者,最终将导致第三方崩溃。
7)
fraggle攻击
该攻击对Smurf攻击做了简单修改,使用的是UDP应答消息而非ICMP。
8)
电子邮件炸弹
这是最古老的匿名攻击之一,通过设置一台机器不断的向同一地址发送电子邮件,攻击者能耗尽接受者的邮箱
9)
畸形信息攻击
各类操作系统的许多服务均存在这类问题,由于这些服务在处理消息之前没有进行适当正确的错误校验,受到畸形信息可能会崩溃。
10)
DdoS攻击
DdoS攻击(Distributed Denial of Server,分布式拒绝服务)是一种基于DOS的特殊形式的拒绝服务攻击,是一种分布协作的大规模攻击方式,主要瞄准比较大的站点,像商业公司、搜索引擎和政府部门的站点。他利用一批受控制的机器向一台目标机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有很大的破坏性。
除了以上的这些拒绝服务攻击外,一些常见的恶意攻击还包括缓冲区溢出攻击、硬件设备破坏性攻击以及网页篡改等。
11)
缓冲区溢出攻击(buffer overflow)
通过往程序的缓冲区写超过其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他指令,以达到攻击的目的。缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在,根据统计:通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。利用缓冲区溢出攻击可以导致程序运行失败、系统死机、重新启动等后果,更严重的是,可以利用他执行非授权的指令,甚至可以取得系统特权,进而进行各种非法操作。由于他历史悠久、危害巨大,被称为数十年来攻击和防卫的弱点。
社交工程(Social Engineering) 采用说服或欺骗的手段,让网络内部的人来提供必要的信息,从而获得对信息系统的访问权限。
计算机病毒 病毒是对软件、计算机和网络系统的最大威胁之一。所谓病毒,是指一段可执行的程序代码,通过对其他程序进行修改,可以感染这些程序,使他们成为含有该病毒程序的一个拷贝。
不良信息资源 在互联网如此发达的今天,真可谓“林子大了,什么鸟都有”,网络上面充斥了各种各样的信息,其中不乏一些暴力、色情、反动等不良信息。
信息战 计算机技术和网络技术的发展,使我们处与信息时代。信息化是目前国际社会发展的趋势,他对于经济、社会的发展都有着重大意义。美国著名未来学家托尔勒说过:“谁掌握了信息、控制了网络,谁将拥有整个世界”。美国前总统克林顿也说:“今后的时代,控制世界的国家将不是靠军事,而是信息能力走在前面的国家。”美国前陆军参谋长沙尔文上将更是一语道破:“信息时代的出现,将从根本上改变战争的进行方式”
常见的应用程序性能陷阱!
蓝屏"的硬件原因及解决
"蓝屏"现象多和内存大小、CPU频率、光驱、硬盘碎片等等关系密切......在计算机的使用过程中,经常会遇到蓝屏的情况。对于初学者来讲,好象就是一场电脑灾难一样,不知所措。其实只要了解了原因之后就不用怕了。造成计算机蓝屏的原因有很多种,硬件方面的原因总体可以概括为以下几种:
一、屏幕显示系统忙,请按任意键继续……
1、虚拟内存不足造成系统多任务运算错误
虚拟内存是WINDOWS系统所特有的一种解决系统资源不足的方法,其一般要求主引导区的硬盘剩余空间是其物理内存的2-3倍。而一些发烧友为了充分利用空间,将自己的硬盘塞到满满的,忙记了WINDOWS这个苛刻的要求。结果导致虚拟内存因硬盘空间不足而出现运算错误,所以就出现蓝屏。要解决这个问题好简单,尽量不要把硬盘塞得满满的,要经常删除一些系统产生的临时文件、交换文件,从而可以释放空间。或可以手动配置虚拟内存,选择高级,把虚拟内存的默认地址,转到其他的逻辑盘下。这样就可以避免了因虚拟内存不足而引起的蓝屏。
2、CPU超频导致运算错误
超频对于发烧友来说是常事,所以由超频所引起的各种故障也就在所难免了。超频,就本身而言就是在原有的基础上完成更高的性能,但由于进行了超载运算,造成其内部运算过多,使CPU过热,从而导致系统运算错误。有些CPU的超频性能比较好,如INTEL的赛扬处理器和AMD-K6-2处理器还算较好的,但有时也会出现一些莫名其妙的错误。(例如:我曾试过将INTEL赛扬300A,在超频到450时,软驱在没有接受命令时,进行读盘操作)。INTEL的低于200的CPU以及AMD-K5的超频能力就不是那么好。建议高档的CPU要超频时,那么散热工作一定要做好,最好装一个大的风扇,再加上一些硅胶之类的散热材料。至于一些低档的CPU我建议你就最好不要超频了,免得超频达不到预想的效果反而经常出现蓝屏影响计算机的正常速度。
二、内存条的互不兼容或损坏引起运算错误
这时个最直观的现象,因为这个现象往往在一开机的时候就可以见到,根本启动不了计算机,画面提示出内存有问题,问你是否要继续。造成这种错误是物理上的损坏内存或者内存与其它硬件不兼容所致。这时候只有换过另外的内存了。
三、光驱在读盘时被非正常打开所至
这个现象是在光驱正在读取数据时,由于被误操作打开而导致出现蓝屏。这个问题不影响系统正常动作,只要再弹入光盘或按ESC键就可以。
以上是我在维护计算机中碰到导致蓝屏的几种原因,或许还会有其他一些莫名其妙的问题导致计算机出现蓝屏。不管怎样,遇到这类问题后,应先仔细分析问题发生的原因,然后再着手解决。
四、硬件剩余空间太小或碎片太多
由于Win9X运行时需要用硬盘作虚拟内存,这就要求硬盘必须保留一定的自由空间以保证程序的正常运行。一般而言,最低应保证100MB以上的空间,否则出现“蓝屏”很可能与硬盘剩余空间太小有关。另外,硬盘的碎片太多,也容易导致“蓝屏”的出现。因此,每隔一段时间进行一次碎片整理是必要的。
五、系统硬件冲突
这种现象导致“蓝屏”也比较常见。实践中经常遇到的是声卡或显示卡的设置冲突。在“控制面板”→“系统”→“设备管理”中检查是否存在带有黄色问号或感叹号的设备,如存在可试着先将其删除,并重新启动电脑,由Win9X自动调整,一般可以解决问题。若还不行,可手工进行调整或升级相应的驱动程序。
"蓝屏"的软件原因及解决
与硬件密切联系的是软件,有时软件在"蓝屏"现象中也"功不可没",加载了过多的程序、注册表有问题、软硬不兼容、驱动程序有问题,相对于硬件原因来说要不易察觉些,可要多加注意.........
一、启动时加载程序过多
不要在启动时加载过多的应用程序(尤其是你的内存小于64MB),以免使系统资源消耗殆尽。正常情况下,Win9X启动后系统资源应不低于90%。最好维持在90%以上,若启动后未运行任何程序就低于70%,就需要卸掉一部分应用程序,否则就可能出现“蓝屏”。
二、应用程序存在着BUG
有些应用程序设计上存在着缺陷或错误,运行时有可能与Win9X发生冲突或争夺资源,造成Win9X无法为其分配内存地址或遇到其保护性错误。这种BUG可能是无法预知的,免费软件最为常见。另外,由于一些用户还在使用盗版软件(包括盗版Win9X),这些盗版软件在解密过程中会破坏和丢失部分源代码,使软件十分不稳定,不可靠,也常常导致“蓝屏”。
三、遭到不明的程序或病毒攻击所至
这个现象只要是平时我们在上网的时候遇到的,当我们在冲浪的时候,特别是进到一些BBS站时,可能暴露了自己的IP,被"黑客"用一些软件攻击所至。对互这种情况最好就是在自己的计算机上安装一些防御软件。再有就是登录BBS要进行安全设置,隐藏自己IP。
四、版本冲突
有些应用程序需调用特定版本的动态链接库DLL,如果在安装软件时,旧版本的DLL覆盖了新版本的DLL,或者删除应用程序时,误删了有用的DLL文件,就可能使上述调用失败,从而出现“蓝屏”。不妨重新安装试一试。
五、注册表中存在错误或损坏
很多情况下这是出现“蓝屏”的主要原因。注册表保存着Win9X的硬件配置、应用程序设置和用户资料等重要数据,如果注册表出现错误或被损坏,就很可能出现“蓝屏”。如果你的电脑经常出现“蓝屏”,你首先就应考虑是注册表出现了问题,应及时对其检测、修复,避免更大的损失。
六、软硬件不兼容
新技术、新硬件的发展很快,如果安装了新的硬件常常出现“蓝屏”,那多半与主板的BIOS或驱动程序太旧有关,以致不能很好支持硬件。如果你的主板支持BIOS升级,应尽快升级到最新版本或安装最新的设备驱动程序。
Windows 2000"蓝屏"分析与解决篇
Win2000也许可以说得上是一个划时代的操作系统,但是它仍然不能够避免蓝屏死机(Blue Screen of Death)问题,Win2000的"蓝屏"(BSOD)和NT4以前的"蓝屏"消息是完全不同的。最大的不同就是NT中的BSOD只包含一个通用的停止消息类型(就是实际的出错代码), 但是Win2000的BSOD包含有两种消息类型:停止消息和硬件消息。停止消息是指,当win2000的内核发现一个它不能够恢复的软件错误时候产生的错误消息,它分为:常规停止消息、安装停止消息、可执行程序安装停止消息、软件陷阱停止消息四种类型......针对Windows2000的蓝屏,在上述概括的现象与对策基础上,我们分两方面来分析:
Windows 2000中蓝屏死机之停止信息分析
简介:什么是蓝屏死机(BSOD)问题?
BSOD就是显示在蓝色屏幕背景下的出错信息。一般这种出错信息严重到你的整个操作系统当机,你只有重新冷启动的选择。
刨析BSOD
BSOD可以分成独立的几部分,每部分包含有有价值的错误处理信息。这几部分包括:
1、bug检查部分:这是BSOD中包含实际出错消息的位置。在这部分中,你应该注意的是出错代码(就是在单词“Stop”后面的十六进制数字)和错误符号(就是紧跟在出错代码后的单词)
2、推荐用户采取行动部分:这部分经常包含一些一般的指导你如何纠正错误的步骤的消息。
3、调试端口信息部分:这部分包含有你应该如何设置你的内核调试器的信息。内核调试器是让你可以通过手工连接到计算机并对进程进行调试的工具。
下面是一个具体的BSOD例子:
*** Stop: 0x0000001E (0xF24A447A, 0X00000001, 0X0000000)
KMODE_EXCEPTION_NOT_HANDLED
*** Address F24A447A base at f24A0000, DateStamp 35825ef8d - wdmaud.sys
If this is the first time you've seen this Stop error screen, restart your computer.
If this screen appears again, follow these steps:
Check to be sure you have adequate disk space. If a driver is identified in the
Stop message, disable the driver or check with the manufacturer for driver updates.
Try changing video adapters.
Check with your hardware vendor for any BIOS updates. Disable BIOS memory options
such as caching or shadowing. If you need to use Safe Mode to remove or disable
components, restart your computer, press F8 to select Advanced Startup Options,
and then select Safe Mode.
Refer to your Getting Started manual for more information on troubleshooting Stop errors.
Kernel Debugger Using: COM2 (Port 0x2f8, Baud Rate 19200)
Beginning dump of physical memory
Physical memory dump complete. Contact your system administrator or technical support group.
根据这个具体的例子,按照上面刨析的BSOD四个部分,下面一一介绍:
bug检查部分:
这是BSOD中包含实际出错消息的位置。它看上去就是下面的代码:
*** Stop: 0x0000001E (0xF24A447A, 0X00000001, 0X0000000)
KMODE_EXCEPTION_NOT_HANDLED *** Address F24A447A base at f24A0000, DateStamp 35825ef8d - wdmaud.sys
其中错误代码是一个紧跟在Stop后面的十六进制数,在这里面它由其它四个数字组成。
而错误符号是指紧随其后的KMODE_EXCEPTION_NOT_HANDLED.
在一些BSOD出错信息中,一个内存位置和文件名出现在错误符号的后面。这个信息告诉了当错误发生的时候在内存中的位置和哪个文件导致了错误的发生。当然你是否能够看到该信息是由哪种停止消息类型来决定的。在一些实际运用中,你只能够看到上面的第一行。而这里通常是表示由显示服务中导致的问题。 推荐用户采取行动部分:
在上面的例子中推荐用户采取行动部分如下:
If this is the first time you've seen this Stop error screen, restart your computer. If this screen appears again, follow these steps:
Check to be sure you have adequate disk space. If a driver is identified in the Stop message, disable the driver or check with the manufacturer for driver updates. Try changing video adapters.
Check with your hardware vendor for any BIOS updates. Disable BIOS memory options such as caching or shadowing. If you need to use Safe Mode to remove or disable components, restart your computer, press F8 to select Advanced Startup Options, and then select Safe Mode.
Refer to your Getting Started manual for more information on troubleshooting Stop errors.
推荐用户采取行动部分通常是推荐用户在遇到了出错信息后应该采取的解决步骤。在消息中可以看到,解决一个BSOD也许只要重新启动或则整理出足够大的剩余空间就能够解决了。尽管这样的方法偶尔会起到作用,但是实际上要解决BSOD经常要远远复杂得多。
调试端口信息部分:
这部分包含有你应该如何设置你的内核调试器的信息。我会在以后的网站里面详细介绍什么是2000的内核调试器。在上面的例子中,这部分内容是:
Kernel Debugger Using: COM2 (Port 0x2f8, Baud Rate 19200)
Beginning dump of physical memory Physical memory dump complete. Contact your system administrator or technical support group.
停止信息的四种类型
当程序或则驱动程序发生了一个不能够控制的错误消息或则试图执行一个非法指令时,系统就会发生停止出错信息。而这种信息通常由四种类型组成。
1、常规停止消息:在正常的使用win2000时发生的停止消息
常规停止消息通常是最难解决的出错信息,因为有可能有无数的原因能够导致错误的发生。
2、安装停止消息:在安装win2000过程中的停止消息,通常由你的系统中存在和2000不兼容的硬件设备引起的。
解决办法是你查看系统中的硬件设备,找到没有列出在2000兼容列表中的设备。然后和你的硬件设备厂商联系看他们是否能够给你提供该设备的驱动程序。如果他们不能,那你只好从你的系统中删除该设备,并用其它的可以兼容的设备替换掉。
如果你的所有硬件都是兼容的,你也许是存在有两个互相冲突的硬件设备。要解决这个问题,先移走任何不是必要的硬件设备,然后重新装载2000,一旦2000装载成功后,把所有移走的设备全部重新加入到系统中。这样做,通常能够解决这个问题,至少能够告诉你哪些硬件是有冲突的。
3、可执行程序安装停止消息:表示发生在2000安装过程中第4个阶段(执行程序部分)的停止消息。
安装2000在可执行程序的安装过程中有两个阶段。第一个阶段是禁止硬件中断同时装载一些基本的组件,例如硬件提取层。第二个阶段是初始化你系统中所有的硬件。如果你在安装程序到了这个阶段的时候收到了停止消息错误。需要再次运行诊断程序,来判断你的硬件是否都工作正常。然后重新安装2000。如果你仍然遇到这个出错消息,那么就需要和微软技术支持部打交道了。
4、软件陷阱停止消息:由于软件中的错误陷阱并且当程序试图执行一个非法指令的时候发生的停止消息。
由于软件中的错误陷阱并且当程序试图执行一个非法指令的时候发生的停止消息。例如,程序试图向一个本来是保存数字的变量写字符串的时候,这个错误就有可能发生。如果你遇到了这种类型的错误,需要记下出错信息,是什么软件导致了错误,一般这些软件都有新的版本来纠正这些错误的。
当你遇到了停止消息时候可能需要的解决问题的步骤:
首先判断你最近是不是在系统中有任何的变动。如果你有,那么这些变动经常是问题产生的根源。试图删除或者移走新的硬件或软件,看是否能够解决问题。检查系统中的硬件,最好如果有硬件检测程序的话,可以运行该程序进行检测,同时重新插放你的内存卡和扩展卡。
如果你的停止信息是发生在启动中或刚启动的过程中,那么这有可能是你的某个服务或则设备驱动程序中的问题。可以尝试将机器启动到安全模式。如果你的2000系统能够启动成功安全模式,那么表示你的猜测是正确的。
同时要确保你的防病毒程序是设计成和win2000兼容的,并且随时保持更新。如果错误仍然发生,那么进入你的CMOS设置,禁止掉BIOS中的象缓存或则shadow之类的选项,然后重新启动。
Windows 2000蓝屏死机之STOP对"症"下药
从理论上讲,纯32位的Windows 2000是不会出现死机的,但是这仅仅是理论上。病毒或硬件和硬件驱动程序不匹配等原因将造成Windows2000的崩溃,当Windows 2000出现死机时,显示器屏幕将变为蓝色,然后出现STOP故障提示信息。下面我们分别介绍通用的STOP故障处理方法和特殊的STOP故障排除。
通用STOP故障处理
1.首先使用新版杀毒软件检查计算机上是否有病毒。
2.如果Windows 2000可以启动,请检查“事件查看器”中的信息,以确定导致故障的设备或驱动程序。启动“事件查看器”的方法是:“开始”\“设置”\“控制面板”\“管理工具”\“事件查看器”\“系统日志”。
3.如果不能启动计算机,试着用“安全模式”或“最后一次正确的配置”启动计算机,然后删除或禁用新安装的附加程序或驱动程序。如果用“安全模式”启动不了计算机,可使用修复控制台。修复控制台可以禁用一些服务、重新命名设备驱动程序、检修引导扇区或主引导记录。
4.拆下新安装的硬件设备(RAM、适配卡、硬盘、调制解调器等等)。
5.确保已经更新了硬件设备的驱动程序,以及系统有最新的BIOS。
6.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。
7.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows2000兼容。Hcl.txt在Windows 2000 CD-ROM的\Support文件夹中。
8.在BIOS中禁用内存缓存功能。
9.重新启动计算机,在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。(注:使用“最后一次正确的配置”的方式启动计算机,计算机的所有设置被重置为最后一次成功启动时的配置。)
10.如果能够访问Web,请进入,单击“Support”/“Search Knowledge Base”,在“Type your keywords here”处,输入“stop”和相应的号码(如出现STOP消息“stop:0x0000000A”,可在此输入“stop0x0000000A”),按Enter键,就可以找出所出现的STOP问题的解决方法。(E文)
部分STOP代码
STOP消息 0x0000000A故障(刚加入新设备时)
通常原因 驱动程序使用了不正常的内存地址。
1.在安装过程中,屏幕上提示“安装程序正在检查计算机硬件配置”时,按F5,根据提示选择合适的计算机类型。例如,如果计算机是单处理器,请选择“标准PC”。
2.在BIOS中禁用内存缓存功能。
3.拆下所有适配卡,并断开所有不是启动计算机所必需的硬件设备,再重新安装Windows2000。
4.如果系统配有SCSI适配卡,请向适配卡销售商索取最新的Windows2000驱动程序,禁用同步协商功能,检查终结头和设备的SCSI ID号。
5.如果系统配有IDE设备,设IDE端口为Primary。检查IDE设备的Master/Slave/Only设置。除了硬盘,拆下其它所有的IDE设备。
6.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。
7.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows2000兼容。
8.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。
STOP消息 0x0000001E故障
1.检查是否有充分的磁盘空间,尤其是新安装。
2.禁用STOP消息中显示的驱动程序和所有新安装的驱动程序。
3.如果所使用的视频驱动程序不是Microsoft提供的,试着切换到标准VGA驱动程序或者由Win2000支持的合适的驱动程序。
4.确保系统有最新的BIOS。
5.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。
STOP消息 0x00000023和0x00000024故障
通常原因 严重的驱动器碎片、超载的文件I/O、第三方的驱动器镜像软件或者一些防病毒软件出错。
1.禁用一些防病毒软件或者备份程序,禁用所有碎片整理应用程序。
2.运行CHKDSK /f 检修硬盘驱动器,然后重新启动计算机。
3.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。
STOP消息 0x0000002E故障
通常原因 系统内存中的奇偶校验错误。
1.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。
2.在BIOS中禁用内存缓存功能。
3.试着用“安全模式”启动。如果“安全模式”可启动计算机,试着更改为标准VGA驱动程序。如果这不能解决问题,可能须要用另外的视频适配卡。“兼容硬件列表”中列出了兼容的视频适配卡。
4.确保已经更新了硬件设备的驱动程序,以及系统有最新的BIOS。
5.拆下一些新安装的硬件(RAM、适配器、硬盘、调制解调器等等)。
6.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。
STOP消息 0x0000003F故障
通常原因 驱动程序没有被完全清除。
删除一些新安装的软件,包括备份工具或磁盘工具,例如碎片整理和防病毒软件。
STOP消息 0x00000058故障
通常原因 在容错集的主驱动器中发生错误。
1.用Windows 2000引导软盘,从镜像(第二个)系统驱动器启动计算机。
2.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。
STOP消息 0x0000007B故障
通常原因 在I/O系统的初始化过程中出现问题(通常是引导驱动器或文件系统)。
1.检查计算机上是否有病毒。这个STOP消息通常在引导扇区有病毒时出现。
2.使用“修复控制台”来修复驱动器。
3.拆下新安装的硬盘驱动器或控制卡。
4.如果系统配有SCSI适配卡,请向适配卡销售商索取最新的Windows2000驱动程序,禁用同步协商功能,检查终结头和设备的SCSI ID号。
5.如果系统配有IDE设备,设IDE端口为Primary。检查IDE设备的Master/Slave/Only设置。除了硬盘,拆下其它所有的IDE设备。
6.运行CHKDSK。如果Windows 2000不能启动CHKDSK,则必须把硬盘拆下并连接到另一个Windows2000系统上,然后用CHKDSK命令检查该硬盘。
7.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。
STOP消息 0x0000007F故障
通常原因 硬件或软件问题;常见的原因是硬件失效。
1.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。这个STOP消息经常出现在错误或误配内存的情况下。
2.在BIOS中禁用内存缓存功能。
3.试着拆下或替换硬件:RAM、控制器、适配器、调制解调器和其它外围设备。
4.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows2000兼容。这个问题可能是由于不兼容的主板引起的。
5.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。
解决蓝屏之工具篇:
"两手抓,两手都要硬",针对 "蓝屏"现象除了在硬件方面改善你的系统硬件环境外,"软环境"的建设也不可忽视,就我们所知道的一些工具介绍给你,当然,可能还有更多的好工具,不妨平时多留意!
RAM Idle--让蓝屏消失
不管是曾经远去的DOS时代,还是如日中天的Windows时代,作为系统资源中最重要的一项——内存资源,一直都是电脑爱好者们最为头疼的事情。虽然现在主板上的内存插槽越来越多,内存的价钱也越来越低,但无论怎样,还是有很多朋友的内存资源时常不够用,以至于系统性能无法正常发挥。究其原因,主要是由于Windows操作系统不能有效地对内存资源进行管理,导致大量内存资源被白白占用,从而使系统性能大幅度降低,造成程序锁死、系统挂起等烦人的问题。因此,不少专门用来对内存资源进行管理的工具软件也就应运而生,而今天要介绍的RAM Idle则是这类软件中的佼佼者。
一、安装
首先用Winzip等软件将下载得到的压缩包解压,然后点击Setup.exe文件,在弹出的对话框中选择即可开始安装RAM Idle(如图1)。和大多数Windows应用程序一样,RAM Idle的安装过程很简单,只需要一路点击即可完成。
二、 使用
RAM Idle的主要功能是在系统空闲的时候按照用户设置自动释放回收一定数量的内存,从而避免因Windows系统不足而造成的内存资源枯竭问题,并大幅提高系统性能与稳定性。
俗话说:工欲善其事,必先利其器,使用RAM Idle也是一样,只有设置合理,它才能更好的对内存资源进行管理。下面就请大家点击---打开RAM Idle设置界面(如图2)和我一起认识下RAM Idle的设置选项
1. 选项卡:为软件的主要设置部分,包括以下几个内容:
·Target Free RAM:设置到达最小剩余内存时,RAM Idle所要尝试恢复的内存数量。
·Minimum Free RAM:设置最小剩余内存数量,当达到这个数值的时候,RAM Idle将会自动恢复内存资源。
·Disable the CPU usage detection:选中此项后,RAM Idle恢复内存的时候将不再检测CPU占用率,不过只是在你的CPU占用率总是显示100%的时候才需要选中。一般情况下我们不用选中该项,中可以设置恢复内存时的最高CPU占用率,也就是说只有CPU占用率低于设定数值时,RAM Idle才可以恢复内存,否则,不予恢复。
·Free up……if free RAM below 50%:设置剩余内存少于总内存50%的时候,每隔多少时间恢复多少数量的内存。
·Pop up menu free……:设置弹出菜单中手动恢复内存部分的三个恢复数值。
2. 选项卡:主要包括总在最前面、随Windows启动而启动、隐藏系统托盘图标等一些常规设置。
3. 选项卡:一个填表软件的简要介绍和下载链接。
4. 选项卡:显示当前系统的内存资源信息(如图3)
RAM Idle释放内存共有两种方法,一种是当剩余内存少于总内存50%的时候,按照设置每隔一段时间自动释放一定数量的内存(设置方法见上);一种是在系统托盘的RAM Idle图标上点击鼠标右键,使用弹出菜单(如图4)中的三个选项快速手动释放一定数量的内存(设置方法见上)。
三、 小结
与同类软件相比,RAM Idle基本综合了该类软件的所有精华,具有无可比拟的强大内存管理能力。首先RAM Idle可以自动释放内存资源,并且优化时间快,效率高。其次RAM Idle设置方便,功能齐备,并且占用系统资源少,可在系统较为空闲的时候运行。另外,该软件还具有多种方便且实用的小功能,如重新启动,关机,挂起等。
虽然MemMAX、FREERAM、RAMFIX等软件也各有特色,但由于这样或者那样的缺点,比如不能自动优化、占用系统资源太高、优化效率低下、使用繁琐等,使得它们很难超越RAM Idle。
如何攻破软件
如何攻破软件 James A.Whittaker 摘要 本文讨论一系列用于发现软件设计与开发中的缺陷的方法(所谓的“攻击”)。这些攻击 都是手工、探索性的测试方式,设计和执行都是动态的、几乎不需要额外开销。这些攻击是 经过对上百个真实的软件缺陷进行研究并且抽象出他们的成因和现象之后构造出来的。经过 佛罗里达理工学院软件测试方向的学员两个学期的细化分析,已经归纳了数十个旨在发现缺 陷的攻击策略。这些攻击策略被证明非常受用,已经发现了上百个额外的缺点——都是由这 些攻击策略直接导致的——在短时间内对产品几乎没有任何了解的情况下。本文介绍上述攻 击策略的一个子集并说明他们是如何在已发布产品中发现真实缺陷。 简介 是什么成就了一名优秀的测试人员?是什么样的天赋使他们对bug 如此敏感?这样的 能力是可以传授的吗? 这些问题就是本文的主旨。我相信优秀的测试人员更多是后天造就而不是先天生成的, 事实上,多年下来许多测试人员自己似乎积累了一个攻击策略的标准库。每当他们面临测试 难题时就会重组手头的攻击策略,从而总是能够发现缺陷。尽管这些攻击策略很少被记录下 来,它们确确实实在手工测试和测试传承中扮演着重要的角色。 通过对真实的测试人员和现实缺陷的研究,我们开始着手文档化这一财富。在本文中, 我们探索来自于该项工程的一部分成果。下一个挑战是对这些攻击施行自动化,找到有效使 用的具体策略。 攻击无异于以下三个大类: 输入/输出攻击 数据攻击 运算攻击 每个类型中都有特定类型的攻击,它们导致十分有趣的软件故障。在之后的部分我以具 体的缺陷为例介绍每个大类下的攻击类型。涉及到的bug 都来自于微软公司的产品。我认为 这不该被看作是一种反微软的行为。事实上,它作为软件行业霸主的事实使它自然而然地成 为了“众矢之的”。但不能就这样认为微软的产品相对于其他软件产商有更多的缺陷。本文 中提到的攻击策略几乎成功攻击过许多公司的软件产品,这些产品运行在你可以想到的任何 平台上。我的经验表明,不管开发人员开发的应用产品域是什么、使用的操作系统有什么差 异亦或是否发布源码,他们都在高频度地制造bugs。如果他们是web 开发人员,那就更不 用费心了,因为web 程序本身非常容易崩溃。 输入/输出攻击 针对输入/输出的攻击就是测试人员所说的“黑盒”测试,因为不需要任何有关内部数 据或计算的信息来支持测试执行。事实上,这是测试中最常见的一种,因为阅读源码不仅乏 味、费时,并且通常收益甚微,除非你知道自己到底在寻找什么类型的bug(我们将在接下 来的两部分内容里讨论什么是你应该试图寻找的)。 输入/输出攻击 单一输入攻击 迫使所有的报错信息出现 强制指定默认值 尝试所有可用的字符集 迫使输出区域大小改变 引发显示区域溢出 迫使屏幕刷新问题出现 输入值组合攻击 迫使无效输出出现 找出不能共存的输入值组合 输入序列攻击 迫使无效输出出现 多次重复同样的输入序列 单一输入攻击 这一类攻击是对使用单一输入(从变量输入的角度来说)的行为进行的检查。我们试图 发现在大部分数据都正常工作的情况下由一个单一的输入导致应用崩溃的情况。其实除了单 单从边界值上考虑以外还有很多别的方式来选择输入用例,特别是当你希望找到真正被开发 认可的bug,而不是仅仅作为未定义的需求而忽略掉。 首先给出一些看 似简单但不易施行的 建议: 确保所有的报错信息 都出现一遍。 不能使程序正常 地中止或结束的通常 就是所谓的bug。很多 报错信息仅仅是迫使程序停止来显示一条报错信息,然后接着执行下一条输入或者直到定时 器超时而已。但是,也有其他一些报错信息则是来自于被程序抛出和异常处理器被执行引发 的异常。异常处理器(或中央错误处理线程)因其指针突然改变而数据状态不产生相应变化, 通常会存在问题。异常处理器执行的瞬间,各种各样的数据问题接踵而至:文件未关闭、内 存未释放、数据未初始化。当控制重新回到主线程,很难判断错误处理器是在什么时刻被调 用,又会有怎样的遗留问题在等待粗心大意的开发人员:因为文件没有关闭导致打开文件失 败、在没有初始化前就开始使用数据。如果我们能确保在所有的报错信息都出现过之后系统 依然正常工作,那么也算是为用户省去了不少麻烦(更不用说我们的维护工程师了)。 图1 展示了我的学生在微软 Word 2000 中发现的一个有趣的bug,一条错误提示不知为 何连续出现了两次。这个bug 是在通过单一输入攻击错误处理线程的过程中发现的。 确保软件指定默认值。 开发人员通常不记得在用户输入越界或给参数设置不合理的值时指定默认的值。有时候 强制设立默认值意味着什么也不做——然而正因为想不到,这一举措甚至难倒了优秀的开发 人员。例如,在Word 2000 中,如下对话框中有一个选择框,当不对其做任何修改时再次打 开对话框,该控件将消失。对比左右图片中的对话框。你发现什么控件消失了吗? 有的时候指定默认值需要先改变值的当前设定,然后将其设定为一个不合理的值。这种 连续的转换保证了再转换成其他可用的值前是经过设置默认值。 尝试输入变量的所有可用的字符集。 有的输入问题很简单,特别是当你使用了类似$,%,#,引号等等字符时,这些字符在 许多编程语言中有特殊意义并且作为输入被读入时通常需要特殊处理。如果开发人员未考虑 这种情况,则这些输入可能导致程序的失败。 通过改变输入内容的多少引发输出区域的改变。 聚焦于输出本身是一种发现bug 颇有成效但是极少使用的方法。其思想是:先假定一种 表现为bug 的输出或者行为,然后寻找能够导致这种现场产生的输入。以上所述的一个简单 的攻击例子就是通过改变输入值和输入字符串的长度来引发输出区域大小的重新计算。 一个很好的概念性例子是将时钟的时间设置为9:59,然后等待它转到10:00。一开始显 示区域是4 个字符长度而后来是5。反过来,我们设定时间为12:59(5 个字符),然后等待 其转变为1:00(4 个字符)。开发人员通常只会对初始化为空白的情况进行处理而不曾考虑 到显示区域已有数据的情况下如何更新该区域以显示不同长度的数据。 举个例子,PowerPoint 中的“艺术字”功能中有个有趣的bug。假定我们输入下图中的 一个长的字符串。 可以发现因为字符串太长,并不是整个字符串都能显示出来。但这不是问题的关键。点 击确认按钮时触发两个事件。首先,程序计算出需要的输出区域大小,然后将输入的文字填 充进去。现在,我们编辑该字符串,将它改为单个字符。 可以发现尽管现在只有单个字符,字体大小也没有改变,但显示区域大小却没有发生改 变。进一步看。如果再次编辑该字符串为多行的字符串,输出结果更有意思。 我想这部分已经介绍得比较清楚了,我们将进入下一部分。 确保对显示区域的边界的检查。 这是基于输出的另一种攻击思路,与之前的十分类似。然而,不同于之前着力于导致显 示区域内部出错,这次我们将精力集中在显示区域的外部。并且显示区域将不再重新计算显 示边界而仅仅是考虑边界溢出。 再以PowerPoint 为例,我们可以先画一个文本框,然后输入一个带上标的字符串。放 大该字符串的字体使上标的上半部分被截断。这一问题将连同之后的相关问题一起说明。 引发屏幕刷新问题。 这是使用windows 图形用户界面的用户会遇到的主要问题。对开发人员来说,更是一 个大问题:过度的刷新将导致程序变慢,而不刷新又会导致大大小小的问题,小至要求用户 强制刷新,大到导致用户的操作失败。 通常通过在屏幕上添加、删除和移动元素来触发页面刷新。这将导致背景重新绘制,如 果页面不能正确、及时地作出相应,那么这就是通常意义上的bug。其中,尝试变化所移动 的元素的距离是一种较好的方式,可以移动一点点,接着移动一大截,移动一两次,接着移 动很多次。 接着说回上面例子中的带上标的字符串,试着每次用鼠标拖动它移动一些距离,就会发 现令人讨厌的问题,如下图所示。 在Office 2000 中 经常出现的另一个与 屏幕刷新相关的问题 是文本的异常消失。 这一讨厌的问题在 Word 的页面边界附近 出现。 输入值组合攻击 第二类输入/输出 bug 主要针对多个共 同作用或相互影响的输入。例如,一个通过两个参数调用的API,其中一个参数的取值建立 在另一个参数取值的基础上。通常,bug 正是出在值组合上,因为代码的逻辑关系复杂。 找出不能共存的输入值的组合。 那么哪些值的组合是有问题的?这个问题目前还处于积极研究中,但是我们已经找到了 一个特别有效地方法,那就是先确定期望获得的输出,然后试着去找到对应的输入值的组合。 尝试产生无效的输出。 这是一种适用于测试人员对问题域十分清楚的有效攻击方法。例如,当你在测试一个计 算器并且清楚部分功能点的结果有限制时,试图找到超出范围的结果所对应的输入值组合是 值得的。但是,如果你不熟悉数学,那么这种努力很可能是浪费时间——你甚至可能将一个 不正确的结果当成正确的。 有时候windows 本身会给出提示,告诉你哪些输入是相互关联的。此时,测试人员可 以去测试这些值的范围,并且尝试触犯既定的关系。 输入序列攻击 软件中的输入就像一种正式的语言。单一的输入相当于组成语言的字母,输入的字符串 类似构成语言的句子。其中一些句子应该通过控件和输入区域的启用与禁用被过滤。通过尽 可能多地输入字符串、改变输入的顺序来测试这种问题。 选择导致无效输出的输入序列。 和上文描述这是一种找到问题输入组合的好方法一样,这同样是找出有问题的输入序列 的好方法。例如,当我们发现了Office 2000 中的一个导致文本消失的问题后,对PowerPoint 幻灯片中标题文本框进行攻击。如下的一组屏幕截图再现了一个特定的输入序列是如何导致 文本消失的。 有趣的是仅仅将文本框旋转180 度并不能发现这个bug。必须按照这样的操作顺序:旋 转180 度后,再旋转10 度(或者更多)。逆向执行以上操作并不能修正这一问题,每当点击 标题外部区域,该标题内容就会消失。 改变输入的顺序之所以善于发现bug 是因为很多操作自身成功执行的同时会遗留很多 问题,它们将导致之后的操作失败。对输入序列进行彻底的检查会暴露出很多这样的问题。 然而有时候,下面这种攻击表明:为了发现bug,根本不需要使用多种多样的输入序列。 多次重复同样的输入序列。 这种方式会对资源造成大规模占用,并且对存储数据空间造成压力,当然也包括发现其 他负面的遗留问题。遗憾的是,大多数应用程序并不清楚自身空间和时间的限制,而许多开 发人员倾向于假定资源总是足够可用的。 在Word 的公式编辑器中可以找到这方面的一个例子,程序本身似乎并不清楚它只能处 理10 层嵌套括号的计算。 数据攻击 数据是软件的命脉;如果你设法破坏了它,那么程序将不得不使用被破坏的数据,这之 后得到的就不是合理的结果。所以理解数据是如何、在何处建立是必要的。 从本质上讲,数据的存储是通过读取输入,然后将其存储在内部或者存储一些内部计算 的结果来实现的。因此,测试正是通过提供输入和执行计算来实现数据在应用程序中的传递。 数据攻击遵循以下简单原则。 数据攻击 变量值攻击 1.存储不正确的数据类型 2.使数据值超过允许的范围 数据单元大小攻击 3.溢出输入缓冲区 4.存储过多的值 5.存储太少的值 数据访问攻击 6.找出同一数据的不同修改方式 变量值攻击 这一类的攻击需要对内部存储的数据对象的数据类型和合法值进行检查。如果有对源码 的权限则这些信息可以轻易得到,但是,通过小小的探索性测试和对错误信息的关注也可以 确定大致的类型信息。 改变输入的数据类型来找出不匹配的类型。 在需要整数的区域输入字符(和类似的攻击)已经被证明十分有效,但随着现代编程语 言对类型检查和类型转换的处理变得容易,我们发现这样的攻击相对之前已经不再那么有 效。 使数据值超过允许的范围。 被存储的变量数据和输入的变量数据一样,这样的攻击方式同样适用。 数据单元大小攻击 第二类数据攻击旨在触发数据结构的溢出和下溢。换句话说。攻击试图打破预先设定的 数据对象的大小限制。 首先要说的就是典型的缓冲区溢出。 溢出输入缓冲区。 此处通过输入长字符串导致输入缓冲区溢出。这是黑客们偏好的攻击方式,因为有时候 应用程序在崩溃之后会继续执行进程。若一名黑客将一段可执行代码附在一个长字符串中输 入,程序很可能执行这段代码。 在Word 2000 中的一个缓冲区溢出问题就是这样一个可被利用的bug。此bug 被发现在 查找/替换功能中,如下所示。有趣的是,“查找”这一字段被合理地加以限制而“替换”没 有。 同一数据结构 存储过多的值。 复杂地数 据结构诸如数 组、矩阵和列表 在测试中不仅 仅要考虑存储 在其中的数值, 还要考虑存储 值的数目。 同一数据结构 存储过少的值。 当数据结 构允许增加和 删除信息时,通 常在做了n-1 次增加的同时穿插着或在其之后做n 次删除操作会导致攻击成功。 数据访问攻击 我的朋友Alan Jorgensen 喜欢用“右手不明左手所为”这句话来形容这一类bug。道理 很简单,但开发人员却常倒在这一类攻击下:在很多程序中通常任何任务都能通过多种途径 完成。对测试人员来说,这意味着同一个函数可以由多个入口来调用,这些入口都必须确保 该函数的初始条件得到满足。 一个极好的例子是我的学生在PowerPoint 中发现的表格数据大小相关的崩溃性bug。创 建表格时最大尺寸被限定为25×25。然而,可以创建一个25×25 的表格,然后为其添加行 和列——导致应用程序崩溃。这就是说,程序一方面不允许26×26 的表格存在而另一方面 却并不清楚这个规则的存在。 运算攻击 运算攻击 操作数攻击 使用非法操作数进行运算 找出非法操作数组合 结果攻击 使运算结果过大 使运算结果过小 功能相互作用攻击 找出共享数据不佳的功能 操作数攻击 这类攻击需要知道在一个或更多内部运算中操作数的数据类型和可用的值。如果有源码 权限则这些信息可以轻易获得。否则,测试人员必须尽最大努力去弄清楚正在进行的运算具 体是什么、使用的是什么数据类型。 触发由非法操作数引起的运算。 有时候输入或存储的数据处于合法的范围之中,但是在某些运算类型中却是非法的。被 0 除就是一个很好的例子。0 是一个合法的整数,但作为除法运算的除数却是非法的。 找出不能共存的操作数的组合。 涉及到一个以上操作数的运算不仅受制于上面的攻击,同时存在操作数冲突的可能性。 结果攻击 第二类运算攻击旨在造成存储运算结果的数据对象的溢出和下溢。 试图造成运算结果过大而存储失败。 就算是简单如y=x+1 这样的运算在数值边界上也常出问题。如果x 和y 都是2 比特的 整数并且x 的值为32768,则这一运算将失败,因为结果将会造成存储溢出。 试图造成运算结果过小而存储失败。 和上文相同,不同的是使用y=x-1 并且使x 的值为-32767。 功能相互作用攻击 文章中讨论的这最后一类攻击或许算是所有种类的鼻祖,可以用来区分测试菜鸟和专业 人员:功能的相互作用。问题没有什么新意:不同的应用程序功能共享同一数据空间。两种 功能的相互作用导致应用程序失败,不是因为对数据处理的设定不同,就是因为产生了不良 副作用。 但是哪些功能共享数据并且能够在冲突情况下实现数据转化目前还是测试领域中一个 开放的问题。目前我们正停留在不断地尝试阶段。下面这个例子足以说明情况。 这个例子给出了在Word 2000 中的同一页面上合并脚注和双列时出现的一个出人意料 的结果。问题在于:Word 从注释的引用点计算脚注的页面宽度。所以,若同一页面上存在 两条脚注,一条被处于双列位置的内容所引用,另一条则被处于单列位置的内容所引用,单 列脚注会将双列脚注挤到下一页面。同时被挤掉的还有引用点至页面底部间的文本。 下面的屏幕 截图形象地 说明了问题。 第二列的文 本 去 哪 里 了?连同脚 注一起处在 下一页。你会 任由文档像 这 样 显 示 吗?在找到解决方法(这意味着你得花时间去整理)前你将不得不忍受这一现状。 结论 简单遍历一遍上面罗列的21种攻击策略可以覆盖应用程序的大部分功能。事实上,施行 一次成功的攻击通常意味着尝试各种可能性,走过很多死胡同。但是仅仅因为部分这一类探 索性方法发现不了bug并不意味着它们没有用。首先,这段时间使用应用程序帮助测试人员 熟悉程序的各种功能,从而产生新的攻击思路。其次,测试通过是好的消息!它们表明,产 品是可靠的:尤其当这组测试是上面所说的恶意攻击。如果代码可以承受这样的测试过程, 它几乎可以应对用户作出的任何操作。 另外,永远不要低估了测试时怀揣一个具体目标的作用。我见过太多测试人员把时间浪 费在毫无目的地输入或者随机地调用API试图导致软件出错。实行测试意味着制定明确的目 标——基于会出错的点——然后设计测试用例来实践该目标。这样,每个测试用例都有目的 性并且进度可以被随时控制。 最后,记住,测试应该是有趣的。攻击这一比喻正是对测试的这一特性很好的诠释并且 还为愉快的消遣时光添加了些许作料。狩猎愉快!