CN108038021A - 一种计算机程序运行阶段代码内存校验方法 - Google Patents

一种计算机程序运行阶段代码内存校验方法 Download PDF

Info

Publication number
CN108038021A
CN108038021A CN201711113207.XA CN201711113207A CN108038021A CN 108038021 A CN108038021 A CN 108038021A CN 201711113207 A CN201711113207 A CN 201711113207A CN 108038021 A CN108038021 A CN 108038021A
Authority
CN
China
Prior art keywords
code
program
verification
code memory
checking
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.)
Granted
Application number
CN201711113207.XA
Other languages
English (en)
Other versions
CN108038021B (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.)
CRSC Research and Design Institute Group Co Ltd
Original Assignee
CRSC Research and Design Institute Group Co Ltd
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 CRSC Research and Design Institute Group Co Ltd filed Critical CRSC Research and Design Institute Group Co Ltd
Priority to CN201711113207.XA priority Critical patent/CN108038021B/zh
Publication of CN108038021A publication Critical patent/CN108038021A/zh
Application granted granted Critical
Publication of CN108038021B publication Critical patent/CN108038021B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种计算机程序运行阶段代码内存校验方法。它包括:在加载程序阶段,采用校验算法对代码进行计算,生成校验码;程序主体逻辑执行;采用相同校验算法对程序代码执行校验,将校验结果与程序加载时得到的效验码进行比较,从而判断是否存在代码段内存故障等步骤。该校验方法可以根据系统资源是否充足采取一次性校验或分时分段校验的方式,节省了系统资源。检查到代码段出现内存故障时,可以执行安全措施提高了应用程序的可靠性。

Description

一种计算机程序运行阶段代码内存校验方法
技术领域
本发明属于计算机技术领域,尤其涉及一种计算机程序运行阶段代码内存校验方法。
背景技术
应用程序代码段包含了程序指令和参数数据,有可能会因为操作系统运行异常等原因,出现代码段数据异位或数据被改写等代码段内存故障,从而使得某些起关键作用的应用软件发生错误,造成重大影响。比如在某个列车通过的线路上,需要检查5个设备均正常才允许列车通过,但是因为存储“5”这个数量的代码段故障,“5”变成了“4”,就会漏检查一项内容,就可能对列车安全运行造成影响。因此,应用软件被系统加载至内存后,需要考虑并处理程序运行过程中,代码段内存故障导致的代码段异常情况。
现有技术是对应用软件增加校验码,在程序加载阶段进行校验,不能实现程序运行阶段对代码内存的校验。
发明内容
本发明的目的是:为避免程序运行阶段出现代码段内存故障,从而提供一种计算机程序运行阶段代码内存校验方法。
本发明的技术方案是:一种计算机程序运行阶段代码内存校验方法,包括以下步骤:
步骤1:在加载程序阶段,采用校验算法对代码进行计算,生成校验码;
步骤2:程序主体逻辑执行;
步骤3:采用步骤1中的校验算法对程序代码执行校验,将校验结果与步骤1中的效验码进行比较:
若比较结果一致,通过校验,表明不存在代码段故障;
若比较结果不一致,未通过校验,表明代码段发生了改变,此时执行安全措施。
更进一步地,所述代码内存校验方法在进行所述步骤1、步骤2、步骤3之前还包括判断系统运算资源,根据判断结果选择校验方式的步骤,该步骤包括:
在程序参数配置阶段,通过实际代码运行,按一次校验方式计算程序执行时间,若执行时间超出预定的时间,则认定一次校验运算资源不足,否则认定运算资源充足;
若系统运算资源充足,对程序代码执行一次校验;
若系统运算资源不足,对程序代码进行分时、分段校验,直至实现完整的程序代码校验。
更进一步地,所述预定的时间,根据该程序代码在不添加内存校验情况下,执行一次逻辑运算所花费的时间确定。
更进一步地,所述步骤1中的校验算法为CRC校验算法。
更进一步地,所述CRC校验算法为CRC16校验算法。
更进一步地,所述步骤3中的安全措施为终止程序运行并输出校验日志。
更进一步地,所述计算机程序运行阶段代码内存校验方法为程序内部逻辑,不依赖于操作系统。
与已有技术相比,本发明的有益效果体现在:本发明提出程序运行阶段代码段内存校验方法,可在不同操作系统中进行,并可根据系统资源分时、分段校验,不仅提高了程序运行的可靠性,也减少了代码校验对系统资源的占用,提高了校验效率。在代码段内存故障时,可以执行安全措施,提高了应用程序的可靠性。
附图说明
图1计算机程序运行阶段代码内存校验流程图
具体实施方式
下面将结合本发明的附图和具体实施例,对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,本发明的保护范围不仅限于下述实施例的限制。
本实施例将以针对计算机联锁应用程序的000138E8H~00056958H内存段中的代码进行内存校验为例,说明本发明的技术方案。
对计算机程序的内存校验通常采用对代码进行一次校验的方式进行,但实际中可能存在CPU运算能力较低或者程序配置参数过于庞大等原因造成对代码进行一次校验系统资源不足,影响程序的校验效率及运行效率。本实施例优选地,在进行校验之前,增加判断系统运算资源,根据判断结果决定选择校验方式的步骤:
在程序参数配置阶段,对000138E8H~00056958H段程序代码按一次校验方式计算程序执行时间,若执行时间超出预定的时间,则认定一次校验运算资源不足,否则认定运算资源充足;
若系统运算资源充足,对程序代码执行一次校验;
若系统运算资源不足,对程序代码进行分时、分段校验,直至实现完整的程序代码校验。
这里,上述预定的时间,根据该程序代码在不添加内存校验情况下,执行一次逻辑运算所花费的时间确定。通常计算机联锁应用程序执行一次逻辑运转过程都低于300ms这个时间且留有较大的余量,因此预定的时间可设为300ms。如果增加了内存校验功能,使得计算机联锁应用程序运转时间仍在300ms以内,则认定运算资源充足;若运转时间超过了300ms,则认定运算资源不足。
如图1所示,计算机程序运行阶段代码内存校验实现如下。这里将针对上述两种校验方式,本实施例分别进行了验证说明。
步骤1:
在加载程序阶段,采用校验算法对代码进行计算,生成校验码。
本实施例中,校验算法优选采用CRC校验算法,可以选择其中的CRC16校验算法或CRC32校验算法。本实施例优选地使用CRC16校验算法为例加以说明。
若系统运算资源充足,采取CRC16校验算法对上述代码段进行整体校验计算,得到的校验码为06BCH。
若系统运算资源不足,采取CRC16校验算法对上述代码段进行分三段校验计算,得到的校验码分别为51ADH、0C36H、B05EH。
步骤3:
程序主体逻辑执行。
步骤4:
采用步骤1中的校验算法,即CRC16校验算法对程序代码执行校验,将校验结果与步骤1中的效验码进行比较。
步骤4.1:
系统运算资源充足时,使用CRC16校验算法对上述代码段执行一次校验,得出的结果为06BCH。
系统运算资源不足时,使用CRC16校验算法对程序代码分成3段执行了3次校验,最终得出的结果为分别为51ADH、0C36H、B05EH。
步骤4.2:
系统运算资源充足时,与步骤2得出的结果06BCH比较,发现运行时该程序通过校验,不存在代码段内存故障。
系统运算资源不足时,与步骤2得出的结果51ADH、0C36H、B05EH比较,发现运行时该程序通过校验,不存在代码段内存故障。
人为添加干扰使得代码段参数数据错误,再次重复步骤4;系统运算资源充足时,校验得出的结果为7BEDH,与步骤2中的结果06BCH比较,两者不一致,判断为发生了代码段内存故障,此时执行安全措施;系统运算资源不足时,校验得出的结果分别为D78EH、3EADH、041DH,与步骤2中的结果51ADH、0C36H、B05EH比较,两者不一致,发生了代码段内存故障,此时执行安全措施。
本实施例中的安全措施为终止程序运行并输出校验日志。
本实施例表明,本发明提供的计算机程序运行阶段代码内存校验方法,可以有效的检验出应用软件代码段内存故障,并采取相应的安全措施。此外,本发明的技术方案是应用程序自身对自身代码段的检查,不依赖于某一操作系统,可以跨平台实现。

Claims (7)

1.一种计算机程序运行阶段代码内存校验方法,其特征在于,包括以下步骤:
步骤1:在加载程序阶段,采用校验算法对代码进行计算,生成校验码;
步骤2:程序主体逻辑执行;
步骤3:采用步骤1中的校验算法对程序代码执行校验,将校验结果与步骤1中的效验码进行比较:
若比较结果一致,通过校验,表明不存在代码段故障;
若比较结果不一致,未通过校验,表明代码段发生了改变,此时执行安全措施。
2.根据权利要求1所述的代码内存校验方法,其特征在于,所述代码内存校验方法在进行所述步骤1、步骤2、步骤3之前还包括判断系统运算资源,根据判断结果选择校验方式的步骤,该步骤包括:
在程序参数配置阶段,通过实际代码运行,按一次校验方式计算程序执行时间,若执行时间超出预定的时间,则认定一次校验运算资源不足,否则认定运算资源充足;
若系统运算资源充足,对程序代码执行一次校验;
若系统运算资源不足,对程序代码进行分时、分段校验,直至实现完整的程序代码校验。
3.根据权利要求2所述的代码内存校验方法,其特征在于,所述预定的时间,根据该程序代码在不添加内存校验情况下,执行一次逻辑运算所花费的时间确定。
4.根据权利要求1所述的代码内存校验方法,其特征在于,所述步骤1中的校验算法为CRC校验算法。
5.根据权利要求4所述的代码内存校验方法,其特征在于,所述CRC校验算法为CRC16校验算法。
6.根据权利要求1所述的代码内存校验方法,其特征在于,所述步骤3中的安全措施为终止程序运行并输出校验日志。
7.根据权利要求1至6任意一项所述的代码内存校验方法,其特征在于,所述计算机程序运行阶段代码内存校验方法为程序内部逻辑,不依赖于操作系统。
CN201711113207.XA 2017-11-13 2017-11-13 一种计算机程序运行阶段代码内存校验方法 Active CN108038021B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711113207.XA CN108038021B (zh) 2017-11-13 2017-11-13 一种计算机程序运行阶段代码内存校验方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711113207.XA CN108038021B (zh) 2017-11-13 2017-11-13 一种计算机程序运行阶段代码内存校验方法

Publications (2)

Publication Number Publication Date
CN108038021A true CN108038021A (zh) 2018-05-15
CN108038021B CN108038021B (zh) 2021-03-02

Family

ID=62093603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711113207.XA Active CN108038021B (zh) 2017-11-13 2017-11-13 一种计算机程序运行阶段代码内存校验方法

Country Status (1)

Country Link
CN (1) CN108038021B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109902488A (zh) * 2019-02-27 2019-06-18 北京智游网安科技有限公司 APP篡改检测处理方法、iOS设备及存储介质
CN109933374A (zh) * 2019-01-23 2019-06-25 西安微电子技术研究所 一种计算机启动方法
CN110222501A (zh) * 2019-05-31 2019-09-10 河南思维轨道交通技术研究院有限公司 一种运行时代码的检查方法、存储介质
CN112540870A (zh) * 2020-12-28 2021-03-23 北京深思数盾科技股份有限公司 内存校验的验证方法及电子设备
WO2022057872A1 (zh) * 2020-09-21 2022-03-24 华为技术有限公司 一种数据处理方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279712A (zh) * 2013-05-28 2013-09-04 华为技术有限公司 增强系统安全性的方法、校验装置及安全系统
US20140122982A1 (en) * 2012-10-31 2014-05-01 Bartec Usa Llc Programming Method For Tire Pressure Monitor Sensors
CN106775778A (zh) * 2017-02-06 2017-05-31 山东鲁能智能技术有限公司 嵌入式程序开发中程序更新识别方法及系统
CN107194250A (zh) * 2017-03-31 2017-09-22 武汉斗鱼网络科技有限公司 内存代码的完整性校验方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122982A1 (en) * 2012-10-31 2014-05-01 Bartec Usa Llc Programming Method For Tire Pressure Monitor Sensors
CN103279712A (zh) * 2013-05-28 2013-09-04 华为技术有限公司 增强系统安全性的方法、校验装置及安全系统
CN106775778A (zh) * 2017-02-06 2017-05-31 山东鲁能智能技术有限公司 嵌入式程序开发中程序更新识别方法及系统
CN107194250A (zh) * 2017-03-31 2017-09-22 武汉斗鱼网络科技有限公司 内存代码的完整性校验方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933374A (zh) * 2019-01-23 2019-06-25 西安微电子技术研究所 一种计算机启动方法
CN109902488A (zh) * 2019-02-27 2019-06-18 北京智游网安科技有限公司 APP篡改检测处理方法、iOS设备及存储介质
CN110222501A (zh) * 2019-05-31 2019-09-10 河南思维轨道交通技术研究院有限公司 一种运行时代码的检查方法、存储介质
WO2022057872A1 (zh) * 2020-09-21 2022-03-24 华为技术有限公司 一种数据处理方法及相关装置
CN112540870A (zh) * 2020-12-28 2021-03-23 北京深思数盾科技股份有限公司 内存校验的验证方法及电子设备
CN112540870B (zh) * 2020-12-28 2021-08-24 北京深思数盾科技股份有限公司 内存校验的验证方法及电子设备

Also Published As

Publication number Publication date
CN108038021B (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
CN108038021A (zh) 一种计算机程序运行阶段代码内存校验方法
CN114065677B (zh) 用于集成电路硬件设计的故障注入测试的方法和系统
US8020153B2 (en) Source code checker, source code checking method, program for causing execution of the method, and storage medium for storing the program
Tracey et al. Automated test‐data generation for exception conditions
JP2021535477A (ja) フォールトツリー分析を使用して機能安全のため制御フローグラフを最適化するシステム及び方法
CN104657247A (zh) 基于jtag调试方式实现通用型故障注入系统和故障注入方法
Chen et al. Testing object-oriented programs-an integrated approach
CN109885499B (zh) 一种机器人自动化测试系统及测试方法
CN105138903A (zh) 一种基于ret指令与jmp指令的rop攻击检测方法
CN112286828B (zh) 一种区块链智能合约的测试方法和系统
US11477030B2 (en) Method for improving safety of a component or system running a firmware or a finite state machine
US8255769B2 (en) Control apparatus and control method
KR102131230B1 (ko) 파워트레인 제어기의 램 에러 감지 로직의 자가진단 방법 및 장치
CN114077544A (zh) 一种软件测试方法、装置、设备及介质
JP2012104064A (ja) Ram故障診断装置、そのプログラム
US6539338B1 (en) Self-diagnostic testing of a network interface adapter
Mouzarani et al. A smart fuzzing method for detecting heap-based buffer overflow in executable codes
CN107301105B (zh) 校验热补丁或者动态库的方法及装置
US20180135224A1 (en) Washing machine failure detection and processing method
WO2018010084A1 (zh) 应用于数字集成电路的esd检测装置、集成电路及方法
CN112231710B (zh) Qnx bsp启动验证方法及启动验证模块
US7155378B2 (en) Method for providing cycle-by-cycle ad HOC verification in a hardware-accelerated environment
CN111352754A (zh) 一种数据存储检错纠错方法及数据存储装置
CN113591141B (zh) 基于模糊测试的固件镜像文件刷写校验方法、系统及终端
US20110218793A1 (en) Concretization of abstracted traces

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