因为最近研究执行路径探索,需要用到fuzzing的思想,而之前对fuzzing的了解很浅,故先阅读一篇survey来对这个领域有一个全面的认识。由于笔者水平有限,部分暂时无法准确理解之处使用原文表示,敬请谅解。
论文原文:The Art, Science, and Engineering of Fuzzing: A Survey
本文参考:
eunsummeo
Chary Liu
   

fuzzing的基本类别

   

  • dynamic symbolic execution 动态符号执行
  • grammar-based test case generation 基于语法的测试用例生成
  • permission testing 权限测试
  • behavioral testing 行为测试
  • complexity testing 复杂性测试
  • kernel testing 内核测试
  • representation dependence testing 表征独立性测试
  • function testing 功能测试
  • robustness evaluation 鲁棒性评估
  • exploit development 漏洞利用开发
  • GUI testing GUI测试
  • signature generation 签名生成
  • penetration testing 渗透测试

fuzzing的基本术语

   

  • PUT:Program Under Test
       待测试的程序

  • Fuzz inputs:an input that the PUT may not be expecting
       待测试的程序所不期望的输入,比如无法正确执行或者触发程序开发者意料之外的行为

  • Fuzzing
       使用预期输入空间之外(fuzz input space)采样的输入执行待测试程序PUT。需要注意的是,fuzz input space无需包含expected input space,这是因为fuzzing的意义就在于特殊、边界样例的测试。其次,fuzzing实际中需要多轮迭代执行,根据大数定律,期间所产生的inputs必然会包括expected inputs。最后需要说明的是,采样过程不一定是随机的,执行次数较少的路径更有可能是属于fuzz input space。

  • Fuzz testing:the use of fuzzing to test if a PUT violates a security policy
       使用fuzzing技术测试PUT是否违反了安全策略

  • Fuzzer:a program that performs fuzz testing on a PUT
       在PUT上执行fuzz tesing的程序

  • Fuzz Campaign:a specific execution of a fuzzer on a PUT with a specific security policy
       fuzzer根据指定安全策略在PUT上的某个执行过程,目的是为了寻找违反指定安全策略的bug

  • Bug Oracle: a program, perhaps as part of a fuzzer, that determines whether a given execution of the PUT violates a specific security policy.
       判定PUT的某次执行是否违反了给定安全策略的独立程序或者fuzzer的组件

  • Fuzz algorithm:the algorithm implemented by a fuzzer
       fuzzer的核心算法,依赖于PUT外的参数

  • Fuzz Configuration: comprises the parameter value(s) that control(s) the fuzz algorithm
       fuzz algorithm的参数的取值,类型取决于fuzz algorithm的类型,简单的比如随机字节流{(PUT)};复杂的比如使用遗传算法来更新参数集合(PUT,s1,r1),(PUT,s2,r2),...{(PUT,s_1,r_1),(PUT,s_2,r_2),...}(PUT,s1,r1),(PUT,s2,r2),...,其中sis_isi是seed,rir_iri是突变率(mutation ratio),这样做的好处是可以减少重复执行,从而提高fuzz testing的效率

  • Seed:a (commonly well-structured) input to the PUT, used to generate test cases by modifying it
       用于构造PUT输入的发生器

  • Seed pool:a collection of seeds
       fuzzer维护的种子集合

fuzzing的分类

   根据fuzzer观察到的语义粒度,fuzzer被分为黑盒fuzzer、灰盒fuzzer和白盒fuzzer。
   根据PUT输入可分为file, network, UI, web, kernel I/O, or threads fuzzer

黑盒(black-box)fuzzer

  • 仅考虑输入、输出信息作为fuzzer的knowledgement
  • IO-driven or data-driven
  • modern fuzzers:the structural informa about inputs
       

白盒(white-box)fuzzer

  • 分析PUT内部结构以及PUT执行所产生的信息,系统探索PUT状态空间
  • DSE动态符号执行(dynamic symbolic execution,concolic testing,symbolic execution+concrete execution),简化符号执行的约束条件
  • 污点分析(taint analysis)
  • 开销较大(higher overhead):动态执行+SMT solving
       

灰盒(grey-box)fuzzer

  • 部分PUT内部结构信息以及PUT执行所产生的信息
  • 不考虑完整的语义信息
  • lightweight static analysis or dynamic information about execution(e.g. code coverage)
  • approximated, imperfect information加快速度和产生更多的测试用例

Preprocess

   预处理通常是检测被测程序,包括插桩,去除冗余配置(种子选择),修剪种子,生成驱动程序,还有准备生成输入的模型。

Instrumentation

   白盒和灰盒fuzzer可以通过插桩获得执行反馈或者执行时的内存镜像,获取信息的多少取决于fuzzer的类型。除了插桩之外,通过指令流和API序列也可以获得PUT的内部信息。但相比较而言,插桩能够获得更好的反馈信息。插桩分为动态插桩和静态插桩。静态插桩发生在编译之前,PREPROCESS这个阶段,也就是在PUT运行之前,而动态插桩则在程序运行的时候发生,也就是每个INPUTEVAL阶段。因此,静态插桩相较于动态插桩有更优的开销,而动态插桩则更加容易对DLL进行插桩。除了基于源码的插桩,还有基于二进制文件的插桩,即未知源码的插桩技术。常见的动态插桩工具有DynInst 、Dynamo、RIOPIN、Valgrind、QEMU等。

Execution Feedback

   灰盒fuzzer通常用执行反馈来更新测试用例。
   路径覆盖:AFL及其变体(bit向量存储覆盖信息)、CollAFL(使用路径敏感的hash函数解决路径冲突)
   节点覆盖:LibFuzzer,Syzkaller

In-Memory Fuzzing

   在处理启动时间较长或者有分析大程序的部分功能的需求的情况下,每次fuzzing都要启动一遍程序的话效率很低,并且会带来不必要的开销,例如GUI程序在接收输入之前通常需要很多秒的处理时间,网络应用中客户端和服务器的交互很频繁。一种可行的解决方案可以通过拍摄启动后快照的方法来对这种类型的程序fuzzing,这种方法称为in-memory fuzzing(e.g. GRR)。AFL采用类似于in-memory Fuzzing的做法,使用一个fork server来避免启动PUT所需要的开销。部分 fuzzer采用in-memory API fuzzing,这种技术不需要在恢复PUT状态的情况下执行in-memory fuzzing(e.g. AFL persistent mode,重复调用一个函数)。
缺点:
   1. 主要依赖于被测程序的入口函数,这种函数难以寻找
   2. 难以构造这样的输入能够触发bug或者crash,可能无法复现
   3. 忽略了多函数调用之间的作用

Thread Scheduling

   Race condition(由于两个或者多个进程竞争使用不能被同时访问的资源,使得这些进程有可能因为时间上推进的先后原因而出现问题,这叫做竞争条件)的bugs比较难以触发,因为这种bugs触发条件为不确定的行为。但是,通过显式地控制线程的调度方式,插桩技术也可以用来触发不同的非确定性程序行为。现有的工作已经表明,即使随机调度线程可以有效地发现竞争条件错误。

Seed Selection

   如何减小种子池大小的问题称为Seed Selection。
   找到最小的种子集,以使覆盖率(例如节点覆盖率)最大化,此过程称为计算最小集(minset)。
   e.g. 两个种子s1,s2覆盖了PUT中的地址{s1 → {10, 20} , s2 → {20, 30}},如果第三个种子为s3 → {10, 20, 30}。
   这一步可为CONFUPDATE的一部分。

Seed Trimming

   较小的种子可能会消耗更小的内存并引发更高的吞吐量,fuzzer在进行fuzzing之前减小种子的大小,这就是Seed Trinmming。Seed Trimming可以在PREPROCESS或者CONFUPDATE中完成。AFL的种子修剪使用基于代码覆盖率的工具迭代地删除一部分种子,同时保证了修改后的种子有相同的覆盖率。

Preparing a Driver Application

   直接进行fuzz遇到困难的时候,准备一个driver是很有必要的。例如要fuzz一个库,我们写一个调用了库中函数的driver程序,然后才能对这个库进行fuzz测试。可以理解为提供一个与PUT相连接的接口,便于fuzzer调用进行fuzz campaign。

SCHEDULING

   为下一轮fuzzing选择fuzz configuration的行为称为scheduling。

The Fuzz Configuration Scheduling (FCS) Problem

   scheduling的目标是分析当前可用的配置信息,并选择可能导致最有利结果的信息,例如,找到最多的bug,或者最大化覆盖率。从根本上说,每种调度算法都面临着相同的探索与利用冲突,可以将时间花在收集每种配置的更准确信息以帮助未来的决策(exploration)上,也可以花在fuzz当前被认为会导致更有利结果(exploitation)的配置上。这种fuzzing过程中exploration和exploitation的冲突称为The Fuzz Configuration Scheduling (FCS) Problem。
   shceduling选择configuration的依据:

  1. 当前的fuzz configuration集
  2. 当前的时间开销
  3. 总共的时间开销预算

Black-box FCS Algorithms

   黑盒fuzzer的FCS算法所能使用的唯一信息就是使用给定配置所得到的fuzz结果,包括crash、bug的数量和时间开销。利用这种信息的方法的自然的想法就是优先选择具有更高成功率(更多的bug或者crash)的配置。使用这种scheduling算法替代均匀采样(uniform-sampling)之后,在CERT BFF Black-box fuzzer超过500万次的运行中发现了85%的新增crash。
   这种算法得到了多方面的改进,并在相同的时间内,与现有的BFF相比,获得了1.5倍的效果提升:
   Bernooulli trials -> The Weighted Coupon Collector’s Problem with Unknown Weights(WCCP/UW)。Bernooulli trials假设每一个configuration对应一个固定的成功概率,并且随着时间推移学习;WCCP/UW则直接维持一个衰减的成功概率的上界。
   Multi-armed bandit(MAB)。MAB通常用于解决exploration vs. exploitation的问题。使用MAB能够发现还没有衰减的configuration。
   除此之外,一个更加快速的configuration使得fuzzer能够收集更多的bug或者更加快速地减小成功率的上界,由此自然想到根据时间开销对成功概率进行正规化
   固定的fuzz iteration->固定的总时间。这样一来,fuzzer无需在一个配置上花费很多时间。

Grey-box FCS Algorithms

   灰盒fuzzer的FCS算法所能使用的信息更为丰富,除去黑盒fuzzer所能获取的信息之外,灰盒fuzzer还能获取到覆盖率。e.g. AFL使用遗传算法EA,EA维护一代configuration,每一个都有一些适应值。EA选择适当的配置并且对它们进行扰动和重组来产生后代,后代中的部分会成为新的configuration。使用这种算法的假设前提是遗传产生的新的configuration更加适合产生bug或者crash。
   为了理解在FCS的情景下EA算法是如何使用的,需要定义如下三点:

  1. 什么会使得一个configuration适合?
       时间开销更小或者大小更
  2. 如何选择configuration
       AFL维护一个循环队列,从循环队列中选择
  3. 选择的configuration’如何使用
       使用选定的configuration运行固定次数

   AFLFast就是根据以上三方面对AFL的性能进行改进的:

  1. two overriding criteria for an input to become a “favorite”
       (1) 执行同一控制流的配置,选择更少被选择的配置
       (2) 如果(1)存在冲突,则选择对应执行路径执行次数最少的配置
  2. 放弃round-robin(轮询调度)改为选择优先级更高的configuration,优先级基于1中的策略。
  3. 使用一个configuration进行fuzzing的次数不再是固定的,次数取决于power schedule
       每一个configuration都会有一个相同的初始energy,初始的energy都很小,这是为了保证每条路径都有机会被执行(exploration)。energy的增长是指数级的,这是为了保证最有可能导致bug或者crash的configuration得到充分的exploitation。

   AFLGo:对AFLFast的优先级分布进行修改,使得其能够针对特定的程序地址
   Hawkeye:为directed fuzzing的seed scheduling和input generation引入静态分析
   FairFuzz:为每对种子和rare branch引入mutation mask来加强rare branch的覆盖
   QTEP:使用静态分析分析PUT的更可能导致PUT出现crash或者bug的部分,增加覆盖这一部分的configuration的优先级

INPUT GENERATION

   理论上而言,测试样例本身的内容能够直接决定bug是否会被触发,因此input generation自然而然地就成为了一个fuzzer设计过程中最有影响的一部分。根据INPUT GENERATION所使用技术的不同,fuzzer一般会被分为generation-based或者mutation-based两类。generation-based fuzzer根据描述PUT所期望样例的模型产生输入,也可称为model-based fuzzer。mutation-based fuzzer则通过对种子seed添加扰动产生测试样例,而不依赖于模型。seed无法描述PUT的input space,因此也可称为model-less fuzzer。

Model-based(Generation-based)Fuzzers

Predefined Model

Peach, Protos, Dharma等: 允许用户指定输入语法
Autodafe, Sulley, SPIKE, SPIKEfile, LibFuzzer:有API能够让用户创建自己的input models
Travor: 允许EBNF(Extended Backus-Naur form)语法的输入说明
PROTOS, SNOOZE, KiF, TFuzz: 用户需要指定network protocal specification
Kernel API fuzzers:定义了system call templates,指定系统调用的参数的类型和个数
Nautilus: general-purpose; grammar-based input; grammar-based seed trimming for general-purpose fuzzing
cross_fuzz,DOMfuzz:random Document Object Model Objects
jsfunfuzz:random syntactically correct JavaScript code
QuickFuzz:Haskell libraries that describe file formats
Frankencerts,TLS-Attacker,tlsfuzzer,llfuzzer:pecific network protocols such as TLS and NFC
Dewey等: constraint logic programming,生成不仅语法(grammatically)正确而且语义(semantically)正确的test case
LangFuzz: 解析输入的种子并产生code fragments,然后随机组合fragments对seed添加扰动产生测试用例,已被应用于 JavaScript and PHP
BlendFuzz: 和LangFuzz类似,只不过针对的是XML和正则表达式的解析

Inferred Model

   inferred model vs predefined(or user-provided) model。
   尽管有大量的有关于输入格式自动化和协议逆向的研究,仍然只有一小部分fuzzer使用到了这些技术。和插桩技术类似,模型推断可能会出现在PREPROCESS或者CONFUPDATE两个过程。

Model Inference in PREPROCESS
TestMiner:在待测程序中搜索例如常量之类的数据,用于预测可行的inputs
Skyfire:使用数据驱动(data-driven)的方法推断一个概率上下文敏感的语法(probabilitistic context-sensitive grammar),然后使用这种语法产生一个新的seed的集合。关注点在于产生语义合理的输入。
IMF:通过分析系统的API日志,学习一个kernel API model,然后使用这个模型产生调用摸哥API序列的C语言代码
CodeAlchemist:分解JavaScript 代码成“code bricks”,然后计算组合约束(assembly constraints),组合约束条件决定独立的code brick是否可以被组合到一起来产生语义合法的测试用例。约束条件的计算包括静态分析和动态分析。
Neural and Learn&Fuzz:使用神经网络机器学习算法从一个给定的测试文件的集合学习一个模型,然后使用这个模型产生测试用例。
Liu et al.:与Neural and Learn&Fuzz类似,针对文本输入
Model Inference in CONFUPDATE
PULSAR:从一系列捕获PUT产生的网络包中推断出一个网络协议模型,然后使用这个模型进行fuzz。PULSAR在内部构造了一个状态机,将message token映射到一个状态。这种映射关系之后会被用于生成覆盖状态机中更多状态的测试用例。
Doupe et al:提出了一种通过观察I/O行为推断出web服务的状态机,然后使用这个模型去扫描web漏洞。
Ruiter et al.:与Doupe et al工作过类似,基于LearnLib实现,针对TLS协议
GLADE:从I/O样例集合中总结出上下文无关(context-free)的语法,然后使用这种语法对PUT进行fuzz
go-fuzz:灰盒fuzzer,根据添加到seed pool的seed建立一个模型,这个模型会被用于产生新的输入

Encoder Model

   fuzzing通常被用于测试解析特定文件格式的decoder程序。很多文件格式都有对应的encoder程序,encoder程序可以被认为是文件格式的隐含模型。
   
MutaGen

  • 利用这种包含在encoder程序中的隐藏模型生成新的测试用例
  • 对encoder程序进行扰动而不是对样例进行扰动生成测试用例
  • MutaGen取encoder程序的动态程序片段运行
  • Motivation是程序的片段会轻微的改变encoder程序的行为因此会产生轻微malformed的测试样例。

Model-less(Mutation-based)Fuzzers

   问题:随机生成测试样例效率低下,对需要结构化输入的PUT尤为突出。
   解决方法:构造一个PUT所能接受的结构化的输入,即Seed。然后仅仅对Seed的一部分进行扰动,就可能能够产生一个能够运行但是包含能够触发PUT异常值的新的测试样例。

Bit-Flipping

   flip固定数目或者随机数目的bit,用户可设置mutation ratio(扰动率)来决定多少bit位被flip。fuzzing的表现与扰动率有关,不同的PUT所需的扰动率都不一样。BFF和FOE为每一个seed使用指数级别的扰动率集合并且分配更多iteration给统计上有效的扰动率。SymFuzz使用一个白盒程序分析来为每一个种子推断出一个良好的扰动率。

Arithmetic Mutation

   AFL和honggfuzz包含另一种扰动的操作:考虑一个选定的字节序列作为一个整数,对这个整数实施简单的运算,将计算出的结果用以代替选定的字节序列。这样做直观上的感觉就是通过一个很小的数字限制扰动的效用。例如,AFL从seed中选择一个4字节的值,把这个值当作整数iii,然后用i±ri \pm ri±r代替iii,其中rrr是一个随机生成的很小的整数。rrr的范围取决于fuzzer,通常是可以由用户配置的。例如在AFL中,默认的范围是0≤r<350 \leq r < 350r<35

Block-based Mutation

   Block是seed的一个字节序列,Block-basd Mutation分为以下几种:

  1. 在seed的随机位置插入随机生成的block
  2. 从seed中随机选定一个block并删除
  3. 使用一个随机值替代一个随机选择的block
  4. 随机打乱block的序列顺序
  5. 添加一个随机的block改变seed的大小
  6. 从seed中留出一个block的位置,随机插入或者使用另一个种子的随机block进行替代

Dictionary-based Mutation

   一些fuzzer使用预定义的值的集合来进行扰动,这些值具有潜在的重要的语义权重,比如说0、-1或者格式化字符串。例如AFL、honggfuzz、LibFuzzer使用0,-1,1来对整数进行扰动。Radamsa使用Unicode字符串、GPF使用格式化的字符比如%x和%s来对字符串进行扰动。

White-box Fuzzers

   白盒Fuzzer也可被分类到model-based或者model-less的类别。例如,传统的动态符号执行不需要任何模型,因此可被分为mutation-based fuzzer;一些符号执行器利用比如输入语法一类的输入模型来指导整个符号执行器的运行。
   不是所有的白盒fuzzer都是动态符号执行器。一些fuzzer利用白盒程序分析来寻找PUT所接受输入的信息以便在灰盒或者黑盒fuzzer中使用。

Dynamic Symbolic Execution

   经典的符号执行是指使用符号化的值作为输入运行一个程序,这些符号化的变量代表所有可能的值。当符号执行器执行PUT时,它会建立一个符号表达式而不是计算实际的变量。当它遇到一个条件分支指令的时候,它会分为两个symbolic interpreter,一个代表正确分支一个代表错误分支。对每一条路径,symbolic interpreter会为执行过程中遇到的每一条分支指令建立一个路径公式(路径断言)。如果存在一个实际的输入,能够执行目标路径,那么就说该路径公式是可满足的。可以通过求解SMT solver来生成一个适用于路径公式的实际输入。动态符号执行是传统的符号执行的变体,在动态符号执行过程中,符号执行和实际的执行会同时进行。因此,动态符号执行通常被称为concolic(concrete+symbolic)测试。结合动态执行的优点是实际的执行可以减小符号约束的复杂度。
   相比较于灰盒或者黑盒方法而言,动态符号执行是很慢的,这是由于它需要分析PUT的每一条指令并插桩。为了解决开销过大的问题,一种缩小动态符号执行范畴的通用策略被提出:让用户确定代码中不感兴趣的部分或者感兴趣的片段、交替使用conclic testing和灰盒fuzzing。
   
Driller, Cyberdyne: 交替使用conclic testing和灰盒fuzzing
QSYM: a fast concolic execution engine提高了conclic testing和grey-box fuzzing的性能
DigFuzz: 用灰盒测试确定每个分支执行概率,再使用白盒fuzzer对对于灰盒fuzzing比较challenging的路径进行fuzzing

Guided Fuzzing

   一些fuzzer利用静态或者动态的程序分析技术来增强fuzzing的效果。通常分为两个步骤:

  1. 使用一个开销较大的程序分析获得PUT的有用的信息
  2. 使用1的分析指导测试用例的生成

   

TaintScope:fine-grained taint analysis to find "hot bytes"
Dowser:a static analysis during compilation to find loops(contaning pointer dereferences),compute  the relationship between input bytes and the candidate loops with a taint analysis,only the critical bytes to be symbolic
VUzzer and GRT:static and dynamic analysis,control and data-flow features
Angora and RedQueen:a costly instrumentation for lighter instrument,use taint analysis to associate each path constraint to corresponding bytes,a search inspired by gradient descent  to guide  mutations towards solving constraintslooking for correspondence between their operands and the given input  to solve a constraint

PUT Mutation

   fuzzing所面临的一个实际的挑战就是绕过检验和的验证。例如,当一个PUT在解析输入之前计算它的校验和,很多测试用例将不会被PUT所接受。

	TaintScope:checksum-aware,污点分析技术识别校验和检验的指令,对PUT打补丁来绕过校验和的验证Caballero et al.:stitched dynamic symbolic execution,这种技术能够在存在checksum的情况下生成测试样例。T-Fuzz:渗透各种条件分支,找到能够被修改掉但是不会影响程序逻辑的branches(Non-Critical Checks)当停止找到新paths的时候,程序会找到一个NCC,在目标程序中transforms it对被修改后的程序再执行测试,如果发生崩溃,用符号执行去跑原版PUT。

INPUT EVALUATION

   生成一个输入后,fuzzer使用这个输入执行PUT,然后决定如何使用执行的结果来提升fuzzer的表现和性能,这个过程称为Input Evaluation。

Bug Oracles

   fuzz所使用的经典的安全策略一般是将导致程序执行终止的致命性的信号(比如segmentation fault)作为violation。这个策略对于内存漏洞检测十分有效,这是因为覆盖一个数据或者给指针赋予以一个非法的值通常会导致segmentation fault。这个策略既高效又便于实现,因为操作系统允许fuzzer不需要任何插桩就能trap到这样的exception。
   然而,传统的检测crash的策略不能检测到每一个被触发的内存漏洞。比如,如果一个堆缓冲区溢出覆盖指针,程序可能会以异常值正常结束而不是产生crash,fuzzer将不会检测到这个漏洞。为了解决这种情况,研究者们提出sanitizers来解决这种不安全、预期之外的行为并且终止程序。

Memory and Type Safety

   内存安全错误通常可被分为两类:时间性的和空间性的。空间性的内存错误通常在指针在对象之外被间接引用指向它原本指向的对象之外的情况下,比如缓冲区溢出;而时间性的内存通常发生在指针失效后被引用,比如use-after-free的漏洞。

ASan: 快速的memory error detector。在编译时插桩,然后维护一个shadow memory,每当一块内存要被解引用的时候就去做有效性检查
MEDS: 维护objects之间或者内部不可以访问的memory red zones,如果被访问了,那很可能时memory crash
SoftBounds/CETS: 在编译时插桩,为每个pointer都结合bounds和时间信息,这样就从理论上能够探测到所有的内存问题
CaVer, TypeScan, HexType等: 在编译时插桩,检查c++的bad-casting,object被cast into一个不兼容的type,例如基类被cast为衍生类
Control Flow Integrity: 检测运行时原本不应当出现的control flow transition,这样就能找到不合法地篡改了程序本身的test case

Undefined Behaviors

   C语言一类的编程语言有的时候会留下未定义行为。有时程序在不同编译器或者平台上的行为会产生不一致,很多因素都会影响一个编译器实现undefined behaviors,优化设置、架构、编译器甚至是编译器的版本都可能会导致crash或者bug。

Memory Sanitizer: 编译时插桩,用于检测C和C++中使用未初始化memory导致的undefined behaviors
Undefined Behavior Sanitizer: 在编译时修改程序,以此检测未定义行为。UBSan能够检测多种未定义的行为,比如使用misaligned pointers, 除0,解引用空指针,整数overflows
Thread Sanitizer: 编译时修改程序,检测data races,平衡精确度和性能开销。

Input Validation

   e.g. XSS and SQL injection

KameleonFuzz: 用真实的web browser解析测试用例,提取DOM树,使用模式比较来检测XSS attacks
μ4SQLi: 用浏览器检测SQL injections,用db proxy来检测是否确实是有害行为。(Since it is not possible to reliably detect SQL injections from a web application response, μ4SQLi uses )

Semantic Difference

   differential testing通过比较相似程序之间的行为来发现语义bug。一些fuzzer使用differential testing确定相似程序之间的差异性,这种差异性可能会导致bug出现。

black-box differential fuzz testing: map mutations from input to output

Execution Optimizations

   跳过PUT的载入时间能够减少时间开销。

AFL:forl-server,fork from an already initialized process
in-memory fuzzing
Xu et al.:a new system call that replaces fork()

Triage

   the process of analyzing and reporting test cases that cause policy violations.

Deduplication

   冗余数据的删除有助于节省磁盘空间,直观上也能看到出现的bug的数量,有助于防御针对某一类漏洞的攻击。

Stack Backtrace Hashing

   自动记录crash产生时候的stack backtrace,并根据stack backtrace的内容分配一个stack hash,记录的函数的个数以及信息都没有限制。一些stack backtrace仅仅hash函数名和地址,但是另外一些可能会hash函数名和偏移或者行号。一般有两种hash:major hash和minor hash。major hash将不相似的crash聚集在一起,minor hash则更为精确。Stack Backtrace Hashing基于相似的bug触发相似的crash这一假设,但是这一假设还没有得到验证。

Coverage-based Deduplication

   AFL认为一个crash是一个新的crash,当它满足以下两点:

1. 这个crash包括一条之前没有见到过的边
2. 这个crash没有包括一条前所未见的边

Semantics-aware Deduplication

RETracer:

based on the semantics recovered from a reverse data-flow analysis
analyzing a crash dump (core dump),
recursively identifies which instruction assigned the bad value to it
finds a function that has the maximum frame level
“blames” the function to cluster crashes

Prioritization and Exploitability

   Prioritization, a.k.a. the fuzzer taming problem ,determining the exploitability of a crash.
exploitability描述的的是攻击者能够实际上编写漏洞利用程序的可能性,攻击者和防御者自然都会更加关注这一类能够实际利用的漏洞。

!exploitable:simplified taint analysis,EXPLOITABLE > PROBABLY_EXPLOITABLE > UNKNOWN >
NOT_LIKELY_EXPLOITABLE,exploitable plugin for GDB and Apple’s CrashWrangler类似

Test case minimization

   保证触发violation的前提下尽可能减小测试用例的大小。test case minimization and seed trimming的区别在于minimizer可以利用bug oracle。

BFF:尽可能减小和原种子不同的bit的个数
AFL:适时设置字节为0,减短测试用例的长度
Lithium:a general purpose test case minimization tool,remove “chunks” of adjacent lines or bytes,
motivated by the complicated test cases produced by JavaScript fuzzers such as jsfunfuzz
其他非专门为fuzzing设计的:
format agnostic techniques,e.g. delta debugging
specialized techniques for specific formats, e.g. CReduce for C/C++ files

CONFIGURATION UPDATING

   黑盒模型所能利用的信息太少,configuration基本不更新;白盒基本上每运行一个新的测试用例都会更新configuration。

Evolutionary Seed Pool Update

   A common strategy in EA fuzzers is to refine the fitness function so that it can detect more subtle and granular indicators of improvements.

AFL通过让fitness function考虑某个branch被覆盖的次数来增进效果
STADS:提出一个受到经济学方法启发的统计学框架来估计如果继续fuzz还能找到多少conf
LAF-INTEL:breaks multi-byte comparison into several branches,detect when a new seed passes an intermediate byte comparison
LibFuzzer, honggfuzz, go-fuzz, Steelix: 都会对复杂条件中的每个比较都插桩。
Steelix: 检查哪个input offsets会影响比较指令
Angora: 考虑每个branch的calling context
DeepXplore: 使用neuron coverage作为fitness function来测神经网络
VUzzer: 其fitness function依赖于每个基本块的权重,而这个权重是由一次程序分析确定的。
使用程序分析将基本块分为正常(normal)或者异常处理块(EH)
normal basic blocks的权重是CFG上随机游走到达它的概率的倒数
EH blocks的权重是负的,based on the hypothesis that traversing an EH block signals a lower chance of exercising a vulnerability 
since bugs often coincide with unhandled errors.

Maintaining a Minset

   解决产生配置过多的问题,最简单的办法是维持一个最大化覆盖率的Minset。

Cyberdyne:removing configurations that are not in the minset
AFL:a culling procedure to mark minset configurations as being favorable
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 定时器扫描矩阵键盘(主函数定时器部分)

    //还有矩阵键盘部分&#xff0c;见上一篇文章 //要创建,h文件&#xff0c;设置外部可调用矩阵键盘部分 //有问题可以评论或私信 //学习自b站江科大自化协 void timer_Initial() { TMOD & 0xF0; TMOD | 0x01; TF00; TR01; TH00xFC; TL00x18; …...

    2024/4/15 5:19:31
  2. 计组-#3存储系统-3.1.1存储器的分类

    思维导图(图片来自王道考研&#xff0c;侵删) &#xff08;以下部分转载&#xff1a;https://www.cnblogs.com/Forever-LJX/p/5807816.html&#xff09;&#xff08;些许修改&#xff09; 1.存储器 1.1 简介&#xff08;了解&#xff09; 存储器&#xff08;Memory&#xff0…...

    2024/4/17 14:38:58
  3. 51单片机实现简易电子计算器

    //功能&#xff1a; //1.两个数字加减乘除 //2.除法运算时可以自定义保留小数位数 //3.定时器扫描矩阵键盘 //4.外部中断清屏 //5.错误输入时会有提示Error //6.运算结束后可以将运算结果转化为二进制或十六进制 //仅为主函数部分&#xff0c;实现以上功能需调用其他功能…...

    2024/4/15 5:19:16
  4. 一次成功:搭建K8S集群以及ISTIO环境

    一、概述 本文主要讲述在centos7环境下如何使用kubeadm工具快速搭建一个k8s集群。同时也讲述了如何安装Istio k8s版本&#xff1a;1.20.6 istio版本&#xff1a;1.5.1 二、准备工作 2.1 机器环境 操作系统&#xff1a;centos7 64位 硬件配置&#xff1a;2g RAM 2个cpu 硬…...

    2024/4/18 12:57:04
  5. Mysql命令大全

    1、连接Mysql 格式&#xff1a; mysql -h主机地址 -u用户名 &#xff0d;p用户密码1、连接到本机上的MYSQL。 首先打开DOS窗口&#xff0c;然后进入目录mysql\bin&#xff0c;再键入命令mysql -u root -p&#xff0c;回车后提示你输密码.注意用户名前可以有空格也可以没有空格…...

    2024/4/17 23:52:46
  6. 如何免费下载学术文献?

    程序员宝藏库&#xff1a;GitHub - Jackpopc/CS-Books-Store: 你想要的计算机经典书籍&#xff0c;这里都有&#xff01; 如何免费下载学术文献&#xff1f; 如何摆脱百度搜索差劲的体验&#xff1f; 如何解决Chrome内存占用过高问题&#xff1f; 如何提升上网阅读体验&…...

    2024/4/15 5:19:26
  7. (91)Verilog HDL系统函数和任务:$fopen

    (91)Verilog HDL系统函数和任务:$fopen 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL系统函数和任务:$fopen 5)结语 1.2 FPGA简介 FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成…...

    2024/4/15 5:20:02
  8. (93)Verilog HDL系统函数和任务:$fread

    (93)Verilog HDL系统函数和任务:$fread 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL系统函数和任务:$fread 5)结语 1.2 FPGA简介 FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成…...

    2024/4/18 18:15:47
  9. (94)Verilog HDL系统函数和任务:$ferror

    (94)Verilog HDL系统函数和任务:$ferror 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL系统函数和任务:$ferror 5)结语 1.2 FPGA简介 FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集…...

    2024/4/15 5:20:07
  10. linux网络报文接收发送浅析

    对于linux内核来说,网络报文由网络设备来进行接收。设备驱动程序从网络设备中读取报文,通过内核提供的网络接口函数,将报文传递到内核中的网络协议栈。报文经过协议栈的处理,或转发、或丢弃、或被传送给某个进程。网络报文的发送与之相反,进程通过系统调用将数据送入网络协…...

    2024/4/18 7:37:58
  11. (95)Verilog HDL系统函数和任务:$fgets

    (95)Verilog HDL系统函数和任务:$fgets 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL系统函数和任务:$fgets 5)结语 1.2 FPGA简介 FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成…...

    2024/4/15 5:20:27
  12. 59 - II. 队列的最大值

    剑指 Offer 59 - II. 队列的最大值 思路&#xff1a;单调双向队列 维护单调队列保存队列所有递减的元素 class MaxQueue { public:MaxQueue() {}int max_value() {if(curQueue.empty())return -1;return maxQueue.front();}void push_back(int value) {curQueue.push_back(v…...

    2024/4/18 22:33:17
  13. Java 从零开始 5.2 StringBuilder

    public class StringBuilder_Test {/*String 和 StringBuilder 的区别String是可变的StringBuilder是不可变的* */public static void main(String[] args) {//构造方法StringBuilder sb1 new StringBuilder();StringBuilder sb2 new StringBuilder("abc");//常用成…...

    2024/4/15 5:20:17
  14. java学习笔记(反射):

    1.反射: 1)反射概念: Jvm在加载类的时候,引导类加载器---->校验的Java代码的语法,如果语法存在问题* 编译报错,没有问题,---执行代码! 2)宗旨: "要获取类的或者接口的字节码文件对象,获取构造器对象Constructor,创建类对象获取成员变量所在的对象Field,给成员变量赋值获…...

    2024/4/7 0:41:49
  15. git commit 时候出现 出现“modified content, untracked content“错误

    以下文件均已example1.0文件夹为例 第一步&#xff1a;检查提交代码的文件夹下是否存在.git文件夹&#xff08;非git根目录&#xff09;&#xff0c;如果存在&#xff0c;删除该文件夹。 第二步&#xff1a;移除错误文件名为example1.0 在git 进程树 git rm -rf --cached ex…...

    2024/4/15 5:20:02
  16. STM32F407移植Little vGL系统,freeRTOS系统,FATFS文件系统

    转载链接&#xff1a;https://blog.csdn.net/mygod2008ok/article/details/105400482...

    2024/4/15 5:20:17
  17. 当输入框的绑定了失去焦点事件但是又有模糊查询的问题

    当我们的input输入框绑定了失去焦点模糊查询的相关信息框...

    2024/4/15 7:34:52
  18. LeetCode位运算

    摘自菜鸟教程 ^可以利用实现相加并且不进位&#xff08;a^b 为ab在不考虑进位的情况下&#xff09; &可以实现地板除以2&#xff0c;实现进位&#xff08;a&b <<1 为ab的进位&#xff09; 剑指 Offer 65. 不用加减乘除做加法 在该题不允许使用加减乘除&#…...

    2024/4/19 5:34:12
  19. mtime 修改了哪些文件

    ...

    2024/4/15 5:19:57
  20. Java中的泛型/类型擦除/通配符

    1.泛型是如何工作的? 泛型是通过类型擦除来实现的. 编译器在编译时,擦除了所有类型相关的信息. 运行时不存在任何类型相关的信息. 例如:List 在运行时仅用一个 List 来表示。 这样做的目的&#xff0c;是确保能和 Java 5 之前的版本开发二进制类库进行兼容。 2.什么是类型擦…...

    2024/4/18 7:17:05

最新文章

  1. VirtualBox虚拟机使用win11系统,忘记密码如何重置密码

    1. 点击重启同时按住Shift&#xff08;按住不放&#xff09; 2. 直到出现下面的界面&#xff0c;释放Shift&#xff0c;并进入疑难解答 3. 进入高级选项 4. 进入命令提示符 5. 发现当前是在X盘&#xff1f; 6. 进入C:\Windows\System32 c: cd Windows\System32 7. 备份osk.exe…...

    2024/4/19 6:21:08
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 6.9物联网RK3399项目开发实录-驱动开发之PWM的使用(wulianjishu666)

    嵌入式实战开发例程&#xff0c;珍贵资料&#xff0c;开发必备&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1149x7q_Yg6Zb3HN6gBBAVA?pwdhs8b PWM 使用 前言 AIO-3399J 开发板上有 4 路 PWM 输出&#xff0c;分别为 PWM0 ~ PWM3&#xff0c;4 路 PWM 分别使用在…...

    2024/4/13 19:25:30
  4. LeetCode-200. 岛屿数量【深度优先搜索 广度优先搜索 并查集 数组 矩阵】

    LeetCode-200. 岛屿数量【深度优先搜索 广度优先搜索 并查集 数组 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;bfs&#xff0c;主要思想都是遇到一个没有visited过的"陆地"先result 1&#xff0c;然后用深搜或者广搜将这片"陆地"全部做上visited标…...

    2024/4/16 1:02:01
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/18 0:33:31
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/18 22:36:36
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/18 9:45:31
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/17 2:33:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/17 7:50:46
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/18 3:56:01
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/18 3:56:04
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/18 3:55:30
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/18 3:55:54
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/18 3:55:45
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/17 21:50:30
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/15 13:53:08
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/15 9:16:52
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/18 9:24:29
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/18 3:56:18
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/18 3:55:57
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/18 3:55:50
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/15 23:28:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/18 3:56:20
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/18 3:56:11
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57