CN107924356B - 零开销代码覆盖分析 - Google Patents

零开销代码覆盖分析 Download PDF

Info

Publication number
CN107924356B
CN107924356B CN201680043424.3A CN201680043424A CN107924356B CN 107924356 B CN107924356 B CN 107924356B CN 201680043424 A CN201680043424 A CN 201680043424A CN 107924356 B CN107924356 B CN 107924356B
Authority
CN
China
Prior art keywords
code
check value
crc
crc check
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680043424.3A
Other languages
English (en)
Other versions
CN107924356A (zh
Inventor
达恩·文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN107924356A publication Critical patent/CN107924356A/zh
Application granted granted Critical
Publication of CN107924356B publication Critical patent/CN107924356B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

一种集成电路包含循环冗余校验CRC电路,所述CRC电路经配置以:从由处理器执行的代码读取识别执行路径的数据;确定用于所述数据的CRC校验值;及基于所述CRC校验值,确定所述执行是否有效。

Description

零开销代码覆盖分析
相关专利申请案
本申请案主张2015年7月28日申请的第62/198,025号共同拥有美国临时专利申请案的优先权,所述共同拥有美国临时专利申请案的全部内容出于所有目的以引用的方式并入本文中。
技术领域
本发明涉及一种用于特定来说在微控制器内进行零开销代码覆盖分析的方法。
背景技术
微控制器是单芯片集成电路,其包括中央处理单元(微控制器核心)、多个外围装置、I/O端口及存储器等。换句话来说,微控制器是芯片上系统,其需要少许外部组件或无需外部组件。许多微控制器是根据提供单独程序及数据存储器的哈佛模型(Harvard model)设计。然而,也存在具有经组合程序及数据存储器空间的冯诺伊曼(von Neumann)类型微控制器。
执行代码覆盖分析允许运行代码的形式验证。代码覆盖可用以确定代码段是否已经执行。代码的形式验证可根据例如IEC 61508、IEC 26262、D0-178B/C或DO-178B等标准执行。
发明内容
本发明的实施例包含一种集成电路。所述电路可包含循环冗余校验(CRC)电路。所述CRC电路可经配置以:从由处理器执行的代码读取识别执行路径的数据;确定用于所述数据的CRC校验值;及基于所述CRC校验值,确定所述执行是否有效。
本发明的实施例包含一种处理器。所述处理器可包含中央处理单元及CRC电路。所述CRC电路可经配置以:从由处理器执行的代码读取识别执行路径的数据;确定用于所述数据的CRC校验值;及基于所述CRC校验值,确定所述执行是否有效。
本发明的实施例包含一种方法。所述方法可包含:从如由中央处理单元执行的代码读取识别执行路径的数据;确定用于所述数据的CRC校验值;及基于所述CRC校验值,确定所述执行是否有效。
附图说明
图1说明用于代码覆盖的系统的实例实施例;
图2说明可经确认的实例代码;
图3说明可从将确认的代码产生的表的实例实施例;
图4说明用于确定预测校验值的方法的实例实施例的流程图;及
图5说明用于确认代码的方法的实例实施例的流程图。
具体实施方式
图1说明用于验证将执行的代码的系统100的实例实施例。此执行可针对例如微控制器、嵌入式装置、芯片上系统或其它合适系统上的代码。例如,图1中说明微控制器104。在一个实施例中,系统100可在无任何程序循环开销的情况下在形式上验证代码或装置。这样可提供对微控制器代码或其它资源应变系统上的代码的更快速且更容易的分析及测试。资源可由于小形式因子、受限处理功率或存储器、或类似约束而在此类系统上应变。此外,正在此系统上执行的代码可为临界的或时间敏感的,使得代码受时序约束。代码的时间约束及/或用以执行代码的装置的受限资源可禁止代码测试仪器。此类代码测试仪器可包含测试代码、探针或插入到将以其它方式测试的代码中的其它机构。此类代码测试仪器可通常来源于大型软件提供商且需要充足处理器资源。相较之下,例如微控制器等资源约束8/16/32位处理器具有小存储器或可正执行时序临界代码,其不可容许测试仪器(其如上文所描述将包含额外指令代码)正添加到程序的中断。正用于安全临界系统中的某些应用需要在最终系统中进行测试以促进输入及条件的全范围的测试。侵略性测试技术可需要使用白箱及黑箱方法、使用定制配线对代码进行静态分析及动态分析。这可通过控制代码产生过程而有源地或无源地(后台)执行。此类测试技术可改变程序流程及时序。此外,此类技术可需要函数调用、位切换及额外循环。
根据各种实施例,在微控制器104(或将测试其代码的其它实体)内或通信地耦合到微控制器104的装置可执行形式代码覆盖分析。在一个实施例中,系统100可包含用以执行代码覆盖分析的循环冗余校验(CRC)电路102。在进一步实施例中,CRC电路102可在代码序列期间执行非循环开销代码覆盖分析。CRC电路102可在将测试的实体(例如微控制器104)内执行或通信地耦合到此实体。
CRC电路102可以任何合适方式实施。在一个实施例中,CRC电路102可在硬件内单独实施。CRC电路102可使用模拟电路及数字电路的适当组合实施。CRC电路102可使用专用集成电路、场可编程门阵列或其它实体实施。在一个实施例中,CRC电路102可在不使用微控制器104的主代码处理器的执行循环的情况下实施。
CRC电路102可执行循环冗余校验。CRC电路102可执行此类校验以在系统100中检测包含已在微控制器104中非预期地执行或以非预期方式执行的代码的错误。可分析用于CRC电路102的输入数据且可基于此输入数据产生校验值。校验值可以任何合适方式产生。在一个实施例中,CRC电路102可执行输入数据的内容的多项式除法。可使用任何合适多项式。校验值可为除法的结果的余数。校验值可为冗余值,因为其可被添加或除输入数据外被单独发送,但不改变输入数据。校验值可具有固定长度。可将校验值处理且处置为哈希函数。考虑到输入数据,CRC电路102可产生实施校验值的固定长度二进制序列。校验值可附加到原始数据。输入数据及校验值的组合可被视作代码字。当接收或读取代码字时,可比较校验值与新产生校验值。新产生校验值可从已经接收的代码字数据或针对预期代码字数据产生。
在一个实施例中,CRC电路102可从表示正在微控制器104中执行的代码的数据产生校验值。CRC电路102可比较从执行代码产生的样本校验值与已知经授权且有效的代码的校验值。如果样本校验值匹配已知校验值,那么可确认由样本代码产生的代码。如果样本校验值不匹配任何已知校验值,那么可确定由样本代码产生的代码是无效的。
CRC电路102可使用任何合适信息作为输入。在一个实施例中,CRC电路102可检测微控制器104中的操作或执行的状态。此检测可通过例如分析来自微控制器104的CPU(例如程序计数器108)的输入而执行。程序计数器108可由寄存器、存储器或其它合适机构实施以指示在给定程序中将执行的位置。此位置可由地址表示。在另一实施例中,CRC电路102可确定存储器内的值。此存储器可从快闪存储器106读取,但可使用任何合适存储器源。存储器内的值可表示用于执行代码的命令、运算代码、参数、指令或其它数据。在又一实施例中,CRC电路102可利用多项式112。多项式112可界定将用以执行CRC校验以产生校验值的多项式。来自快闪存储器106及/或程序计数器108的值可用以形成将通过执行CRC校验而校验的数据。程序计数器108可产生指令或执行计数。
可进一步分析来自程序计数器108的值以确定特定事件是否已在微控制器上发生,使得代码应经验证。可在系统100中界定此类事件。例如,CRC电路102可经配置以基于在下一指令循环上的即刻触发器/手动触发器;在特定指令匹配上的触发器(例如通过分支或跳转指令执行或在经界定指令类型上的匹配实施);或在地址匹配上的触发器(即,函数的调用地址或进入点地址)中的一或多者,执行、开始或停止校验及分析。特定开始或停止触发器准则可根据配置CRC电路102及其相关联装置的软件指令设置。触发可由适当电路、门、寄存器或例如CRC触发器控制110的其它机构控制。CRC触发器控制可接受程序计数器108作为CRC电路102及其相关联机构的输入及触发器操作。触发器机构的适当设置可在存在中断的情况下执行或考虑到中断的可能性而执行。这些中断可通过在一个实施例中从分析省略中断或在另一实施例中将中断包含在程序路径分析中而被考虑。
CRC电路102可经配置以验证数据传输。然而,在一个实施例中,CRC电路102可经配置以验证经执行代码。多项式可使用已知适当值进行配置以产生统计上唯一的结果。CRC电路102可基于校验的结果,通过受测试或正校验代码针对每一可接受或可行路径而确认结果。这些可接受值可脱机产生且存储在哈希或中断服务例程(ISR)哈希比较114中,其可由例如表、查找表、硬件查找表或内容可寻址存储器实施。当执行CRC校验时,通过测试代码的每一可行路径可通过指令或地址的其组合产生唯一值。
当操作时,将来自快闪存储器106的指令代码馈送到CRC电路102。对于由CRC触发器控制110识别的每一经触发指令循环,通过CRC电路102使用多项式112计算新CRC校验值。在捕获序列终止之后,可回读结果。可由CRC电路102比较经产生CRC校验值与哈希/ISR哈希比较114。如果发现与所提供哈希值不匹配,那么可产生中断,其指示非法程序流程序列。中断可告知用户或系统100已发生流程错误。此流程错误可由例如缺陷、错误、存储器恶化或恶意软件(例如恶意地将代码注入到系统中的恶意软件)引起。
通过卸除执行代码与CRC电路102的匹配,微控制器104可使用添加到受测试代码或单元的零开销以其它方式进行操作。不对程序流程形成任何影响且不对临界指令时序形成任何影响。
在一个实施例中,哈希比较可用以考虑到通过ISR的程序中断或其它中断。此外,哈希比较可用以考虑到或检测程序流程错误、程序流程未经处置状态及操作错误。例如ISR的异步事件可致使确定性流程问题。为解决此类问题,在一个实施例中,当产生ISR或微控制器104是在异常模式中时,可停用由CRC电路102进行的流程分析。在另一实施例中,当产生ISR或微控制器104是在异常模式中时,可屏蔽用于ISR的指令,使得这些指令不致使由CRC电路102进行CRC校验。当产生ISR或微控制器104是在异常模式中时,可提供“ISR上下文”存储或信息。可报告通过ISR的代码分支的其它任意结果,且因此CRC电路102可分析此ISR的执行。针对可行ISR的预期CRC结果可在此情况下存储在哈希/ISR哈希比较114中。在此情况下,来自ISR的CRC结果将如其它代码与微控制器104比较一样进行比较。
此外,当中断或另一异步事件发生同时正执行代码覆盖分析时,CRC电路102可停止操作或在中断发生时仅将其当前状态(包含程序计数器、哈希值或其它有关信息)存储到存储器中或到堆栈上。当中断结束时,状态信息可从堆栈弹出且分析可恢复。如上文所描述,如果CRC电路102是如此配置,那么与中断相关联的代码可自身被监测。另外,当中断正操作时,中断可自身通过更高优先级中断、巢套中断或其它异步事件中断。因此,可由CRC电路102通过存储上下文信息以用于系统中使用的每一可行或真实级中断而处置每一级中断。
图2说明用于由微控制器104执行的实例伪代码。此伪代码可说明函数的执行,例如用以将ASCII值转换成十六进制值的函数。针对程序的每一步骤说明地址线、伪代码及所得运算代码组合。例如,在地址x0682处,对“MOVLW 0x61”的调用可产生数据“3061”。
图3说明一些可行路径的表,考虑到特定输入值所述可行路径可在图2的代码中执行。输入“a”、“d”、“f”、“0”、“5”、“9”、“A”、“D”、“F”及“M”的可行路径展示为若干可行值,其可通过图2中所展示的函数而从ASCII转换成十六进制。对于每一函数输入,在循环计数行中展示预期已在处置所述特定输入时执行的循环的次数。此循环次数可从程序计数器108确定。此外,在位长度行中展示预期已在此特定输入执行期间达到的存储器的位长度或位数目。这些值可根据由CRC电路102使用的多项式112计算且展示在CRC行中。函数输入与CRC的关系作为哈希存储在哈希/ISR比较114中。
例如,预期用于输入“a”、“d”及“f”中的每一者的路径是相同的。这是因为,如图2的伪代码中所展示,这些输入中的每一者跟随线17上的条件语句的真分支,因为每一输入是小写字母。此外,这些输入中的每一者将执行15次循环及120的位长度。在另一实例中,预期输入“0”、“5”及“9”中的每一者的路径是相同的,因为每一输入是数字。预期每一输入跟随线17上的条件语句的伪代码假分支及线19上的条件语句的真分支。这些分支中的每一者将执行20次循环与160的位长度。在又一实例中,预期输入“A”、“D”及“F”中的每一者的路径是相同的,因为每一输入是大写字母。预期每一输入跟随线17上的条件语句的伪代码假分支、线19上的条件语句的假分支及线21上的条件语句的真分支。这些分支中的每一者将执行29次循环及232的位长度。在又一实例中,预期输入“M”以及任何其它无效十六进制字符的路径跟随线17上的条件语句的伪代码假分支、线19上的条件语句的假分支、线21上的条件语句的假分支及线23与24上的其它陈述。
因此,CRC电路102可监测图2中所展示的ASCII到十六进制函数的循序执行。就“a”、“d”或“f”的测试输入来说,CRC电路102可确定程序计数器及存储器内容的CRC校验结果是否预期图3中所展示的情况。如果是,那么程序可确认所述输入。否则,可能产生异常或中断。就大写字母的测试输入来说,CRC电路102可确定程序计数器及存储器内容的CRC校验结果是否预期图3中针对大写字母所展示的情况。就数字的测试输入来说,CRC电路102可确定程序计数器及存储器内容的CRC校验结果是否预期图3中针对数字所展示的情况。就任何其它字符的测试输入来说,CRC电路102可确定程序计数器及存储器内容的CRC校验结果是否预期图3中针对“M”或其它输入所展示的情况。
图3中的实例CRC校验值表示多项式的选择,其中考虑到受限组可行运算代码及汉明距离(Hamming distance)5,冲突的机率是0.0016%。
图4是用于分析代码的方法400的实例实施例的说明。可使用方法400以产生哈希值或CRC校验值以用于通过给定代码段、将在执行代码时被预期的已知执行路径。方法400可通过由处理器对一或多个非暂时性计算机可读媒体执行计算机可读指令而实施。在一个实施例中,方法400可通过执行软件而实施。方法400可结合下文所讨论的方法500执行。方法400可针对任何代码、段、应用、程序或将执行且确认的其它指令执行至少一次,使得CRC电路102可循序地确认此代码。
在405处,可识别将确认的代码。在410处,可识别用于此代码的输入值。所述值可包含可输入到代码段中的子集或所有可行值。在415处,可确定用于这些经识别值的有效执行路径。可收集关于每一此路径的数据,例如循环次数及位长度。
在420处,对于每一执行路径及其相关联数据,可使用多项式确定CRC校验值。可在方法500中使用相同多项式以确认代码段的执行。在425处,可将校验值存储在哈希表或其它合适数据结构中。方法400可终止或可针对额外代码段重复进行。
图5是对用于分析代码的另一方法500的实例实施例的说明。可使用方法500以鉴于经产生哈希值或CRC校验值分析代码。方法500可由硬件(例如CRC电路102及相关联机构)实施。
在505处,可执行将确认的程序。可通过设置寄存器值或以其它方式启动硬件监测器而建立程序的监测。在510处,可建立用于此监测的触发器。此类触发器可指定用以开始及停止监测程序的执行路径的准则。
在515处,例如CRC电路102的硬件机构可监测触发器以开始确认执行路径。在520处,可确定将确认的执行路径是否已经执行。如果是,那么方法500可转到525。否则,方法500可转到550。
在525处,可存取执行路径的数据。此数据可包含例如路径的循环计数及路径的位大小。在530处,可执行此数据的CRC校验值。可使用如方法400中使用的相同多项式确定校验值。在535处,可确定是否在执行方法400期间填入的哈希表内发现校验值。如果发现校验值,那么方法500可转到540。否则,方法500可转到545。
在540处,可确定路径已经确认。在545处,可确定路径是无效的。可产生、发出或存储异常、中断、错误、位或其它合适消息。消息可识别路径。
在550处,可确定程序是否已完成执行。如果程序未完成,那么方法500可返回到520。否则,方法500可终止。
尽管展示实例顺序的步骤,但上文所讨论的方法的步骤可以任何顺序执行。此外,可任选地重复或省略一或多个步骤。方法可在任何合适初始化点处开始执行。
可在产生代码期间执行方法400以特性化已经写入的代码。随后,可针对每一可行执行路径、输入值或从代码产生的其它参数执行方法500。因此,可使用测试覆盖所有代码。此外,在发行软件之后,可执行方法400以特性化代码。在一个实施例中,可特性化所有执行路径。在另一实施例中,可特性化重要执行路径或特性化易受恶意软件注入、溢出、或其它攻击或缺陷的执行路径。当由各种用户执行此代码时,可执行方法500。可在执行未经允许路径之后产生代码故障(由失配哈希所展示)。在此情况下,可停止代码且产生错误。用户可向开发者或管理员报告来自中断的错误。
尽管上文已描述实例实施例,但在不背离这些实施例的精神及范围的情况下可做出其它改变及实施例。

Claims (18)

1.一种集成电路,其包括循环冗余校验CRC电路,所述CRC电路经配置以:
从由处理器执行的代码读取识别执行路径的数据;
确定用于执行所述代码的位长度的量化;
确定用于所述数据的CRC校验值,包括具有用于执行所述代码的所述位长度的量化的多项式的计算,所述用于执行所述代码的位长度的量化在所述多项式中用作参数;及
基于所述CRC校验值,确定所述执行路径是否有效;且
基于确定所述执行路径无效,生成指示非法程序流程序列的中断。
2.根据权利要求1所述的集成电路,其中所述CRC电路进一步经配置以:
比较所述CRC校验值与有效执行路径的已知值的表;
基于所述CRC校验值不存在于所述表内的确定,产生消息以识别所述执行路径为无效;及
基于所述CRC校验值存在于所述表内的确定,确认所述执行路径是有效的。
3.根据权利要求1所述的集成电路,其进一步包括经配置以识别将确认的代码已经执行的触发器电路。
4.根据权利要求1所述的集成电路,其进一步包括经配置以识别将确认的代码已经执行的触发器电路,所述触发器电路是可编程的以在下一指令循环、特定预定指令或程序计数器地址上触发。
5.根据权利要求1所述的集成电路,其中所述CRC电路进一步经配置以通过将所述多项式应用于来自执行所述代码的中央处理单元的程序计数器信息而确定用于所述数据的所述CRC校验值。
6.根据权利要求1所述的集成电路,其中所述CRC电路进一步经配置以通过将所述多项式应用于用以执行所述代码的若干循环而确定用于所述数据的所述CRC校验值。
7.一种处理器,其包括:
经配置以执行代码的中央处理单元;及
集成电路,其包括循环冗余校验CRC电路,所述CRC电路经配置以:
从由所述中央处理器执行的所述代码读取识别执行路径的数据;
确定用于执行所述代码的位长度的量化;
确定用于所述数据的CRC校验值,包括具有用于执行所述代码的所述位长度的量化的多项式的计算,所述用于执行所述代码的位长度的量化在所述多项式中用作参数;
基于所述CRC校验值,确定所述执行路径是否有效;且
基于确定所述执行路径无效,生成指示非法程序流程序列的中断。
8.根据权利要求7所述的处理器,其中所述CRC电路进一步经配置以:
比较所述CRC校验值与有效执行路径的已知值的表;
基于所述CRC校验值不存在于所述表内的确定,产生消息以识别所述执行路径为无效;及
基于所述CRC校验值存在于所述表内的确定,确认所述执行路径是有效的。
9.根据权利要求7所述的处理器,其进一步包括经配置以识别将确认的代码已经执行的触发器电路。
10.根据权利要求7所述的处理器,其进一步包括经配置以识别将确认的代码已经执行的触发器电路,所述触发器电路是可编程的以在下一指令循环、特定预定指令或程序计数器地址上触发。
11.根据权利要求7所述的处理器,其中所述CRC电路进一步经配置以通过将所述多项式应用于来自执行所述代码的中央处理单元的程序计数器信息而确定用于所述数据的所述CRC校验值。
12.根据权利要求7所述的处理器,其中所述CRC电路进一步经配置以通过将所述多项式应用于用以执行所述代码的若干循环而确定用于所述数据的所述CRC校验值。
13.一种用于分析代码的方法,其包括:
从由中央处理单元执行的所述代码读取识别执行路径的数据;
确定用于执行所述代码的位长度的量化;
确定用于所述数据的CRC校验值,包括具有用于执行所述代码的所述位长度的量化的多项式的计算,所述用于执行所述代码的位长度的量化在所述多项式中用作参数;
基于所述CRC校验值,确定所述执行是否有效;及
基于确定所述执行路径无效,生成指示非法程序流程序列的中断。
14.根据权利要求13所述的方法,其中所述CRC电路进一步经配置以:
比较所述CRC校验值与有效执行路径的已知值的表;
基于所述CRC校验值不存在于所述表内的确定,产生消息以识别所述执行路径为无效;及
基于所述CRC校验值存在于所述表内的确定,确认所述执行路径是有效的。
15.根据权利要求13所述的方法,其进一步包括基于将确认的代码已经执行的确定,触发所述CRC校验值的所述确定。
16.根据权利要求13所述的方法,其进一步包括基于下一指令循环、特定预定指令或程序计数器地址,触发所述CRC校验值的所述确定。
17.根据权利要求13所述的方法,其进一步包括通过将所述多项式应用于来自执行所述代码的中央处理单元的程序计数器信息而确定用于所述数据的所述CRC校验值。
18.根据权利要求13所述的方法,其进一步包括通过将所述多项式应用于用以执行所述代码的若干循环而确定用于所述数据的所述CRC校验值。
CN201680043424.3A 2015-07-28 2016-07-28 零开销代码覆盖分析 Active CN107924356B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562198025P 2015-07-28 2015-07-28
US62/198,025 2015-07-28
US15/221,409 US10331513B2 (en) 2015-07-28 2016-07-27 Zero overhead code coverage analysis
US15/221,409 2016-07-27
PCT/US2016/044372 WO2017019824A1 (en) 2015-07-28 2016-07-28 Zero overhead code coverage analysis

Publications (2)

Publication Number Publication Date
CN107924356A CN107924356A (zh) 2018-04-17
CN107924356B true CN107924356B (zh) 2021-10-08

Family

ID=57882624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680043424.3A Active CN107924356B (zh) 2015-07-28 2016-07-28 零开销代码覆盖分析

Country Status (6)

Country Link
US (1) US10331513B2 (zh)
EP (1) EP3329377A1 (zh)
KR (1) KR20180034473A (zh)
CN (1) CN107924356B (zh)
TW (1) TW201717007A (zh)
WO (1) WO2017019824A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10345801B2 (en) * 2017-08-21 2019-07-09 Honeywell International Inc. Ensuring a correct program sequence in a dual-processor architecture
US10606971B2 (en) 2017-11-29 2020-03-31 International Business Machines Corporation Testing netlists based on singular independent signals
US11520682B2 (en) 2018-08-27 2022-12-06 Samsung Electronics Co., Ltd. Code coverage method for embedded system on chip
WO2020169997A1 (en) * 2019-02-22 2020-08-27 Micron Technology, Inc. Method for improving safety of a component or system running a firmware or a finite state machine

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101325090A (zh) * 2007-05-15 2008-12-17 英特尔公司 通过使循环冗余码线路相对于数据线路偏移改善等待时间
CN102521025A (zh) * 2011-11-30 2012-06-27 上海新时达电气股份有限公司 嵌入式微控制器端口自定义方法
CN102651240A (zh) * 2011-02-25 2012-08-29 阿尔特拉公司 检错和纠错电路

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7136982B2 (en) * 2001-11-09 2006-11-14 Danger, Inc. Apparatus and method for allocating memory blocks
US7171606B2 (en) * 2003-03-25 2007-01-30 Wegener Communications, Inc. Software download control system, apparatus and method
DE102005029515A1 (de) 2005-06-25 2006-12-28 Bosch Rexroth Aktiengesellschaft Verfahren zur Berechnung von CRC-Prüfwerten und Logikschaltung
KR101197556B1 (ko) * 2006-01-09 2012-11-09 삼성전자주식회사 불 휘발성 메모리의 프로그램 동작을 검증하는 장치 및방법, 그리고 그 장치를 포함한 메모리 카드
US8375064B2 (en) * 2006-05-05 2013-02-12 International Business Machines Corporation Apparatus, system, and method for read back verification of stored data
US20090252323A1 (en) * 2008-04-03 2009-10-08 Simon Cooper Methods, techniques and system for maintaining security on computer systems
US20120066551A1 (en) * 2010-09-15 2012-03-15 Alexandre Palus Run-time Verification of CPU Operation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101325090A (zh) * 2007-05-15 2008-12-17 英特尔公司 通过使循环冗余码线路相对于数据线路偏移改善等待时间
CN102651240A (zh) * 2011-02-25 2012-08-29 阿尔特拉公司 检错和纠错电路
CN102521025A (zh) * 2011-11-30 2012-06-27 上海新时达电气股份有限公司 嵌入式微控制器端口自定义方法

Also Published As

Publication number Publication date
CN107924356A (zh) 2018-04-17
EP3329377A1 (en) 2018-06-06
KR20180034473A (ko) 2018-04-04
WO2017019824A1 (en) 2017-02-02
US10331513B2 (en) 2019-06-25
TW201717007A (zh) 2017-05-16
US20170031750A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
US10867028B2 (en) Program-instruction-controlled instruction flow supervision
CN107924356B (zh) 零开销代码覆盖分析
US10013553B2 (en) Protecting software application
US20070271617A1 (en) Vulnerability check program, vulnerability check apparatus, and vulnerability check method
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
US10650147B2 (en) Method and apparatus for ensuring control flow integrity
US10503909B2 (en) System and method for vulnerability remediation verification
CN109255240B (zh) 一种漏洞处理方法和装置
US20180096147A1 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
US20190121985A1 (en) Detecting vulnerabilities in applications during execution
Guo et al. Control-flow checking for intrusion detection via a real-time debug interface
US9542263B2 (en) Electronic device having a runtime integrity checker
CN107341085B (zh) 一种控制装置
CN105893877B (zh) 安全数据读取的方法和数据处理系统
Mohammadi et al. Automated repair of cross-site scripting vulnerabilities through unit testing
US8510713B1 (en) Method and system for validating a disassembler
EP2677429A1 (en) Error correction
Rajput et al. {ICSPatch}: Automated Vulnerability Localization and {Non-Intrusive} Hotpatching in Industrial Control Systems using Data Dependence Graphs
US20180226136A1 (en) System management mode test operations
Liu et al. CAFA: A Checksum‐Aware Fuzzing Assistant Tool for Coverage Improvement
Vankeirsbilck Advancing control flow error detection techniques for embedded software using automated implementation and fault injection
Dharsee et al. A software solution for hardware vulnerabilities
Wang et al. A Fine-Grained Hardware Security Approach for Runtime Code Integrity in Embedded Systems.
Liu et al. Control Flow Checking at Virtual Edges
Hui et al. A runtime-testing method for integer overflow detection based on metamorphic relations

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant