CN110222501A - 一种运行时代码的检查方法、存储介质 - Google Patents
一种运行时代码的检查方法、存储介质 Download PDFInfo
- Publication number
- CN110222501A CN110222501A CN201910465896.3A CN201910465896A CN110222501A CN 110222501 A CN110222501 A CN 110222501A CN 201910465896 A CN201910465896 A CN 201910465896A CN 110222501 A CN110222501 A CN 110222501A
- Authority
- CN
- China
- Prior art keywords
- code
- check code
- executable file
- memory
- check
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
一种运行时代码检查方法、存储介质,其步骤包括:1)在系统的存储位置存储运行程序的可执行文件,将可执行文件加载到内存运行位置中,处于运行状态;2)从内存中获取加载后处于运行态的执行代码信息内容,将其保存为代码镜像文件;3)对代码镜像计算第一校验码,该第一校验码存储于系统的安全存储区内;4)系统内存中加载的可执行文件代码运行过程中周期性地计算系统内存中运行的可执行文件代码信息的第二校验码;5)比较第一校验码和第二校验码,若一致,则继续运行;若不一致,进行安全操作。本发明能够检查运行时代码是否发生变化,如果发生变化,能够停止系统运行,提升系统安全性。
Description
技术领域
本发明涉及一种代码检查方法,尤其涉及一种运行时代码检查方法。
背景技术
在功能安全系统中,有的系统只是对非运行态的程序文件进行检查,其检查的有效性较低,对于安全苛求系统而言存在不足。而基于操作系统可装载、重定位的二进制代码在运行时检测其完整性,是否与预期代码一致非常困难。
CN100428157C的专利,给出了一种可进行完整性检测的计算机系统和方法,但是该检查方法是对静态代码的检查,即对加载之前的代码进行的检查,而非对动态加载代码的检查。
CN102804194B的专利,给出了一种用于提供安全性的装置,该装置尽管提出对可能存在的在静态代码校验后,向RAM中加载实际应用代码以供执行之前改写应用的问题,但是解决该问题时,仍旧采用的是定期检查静态代码,而非加载后运行的代码。
发明内容
本发明提供一种对运行时代码进行检查的方法,以解决现有技术存在的问题。
本发明采用以下技术方案:
一种运行时代码检查方法,其步骤包括:
1)在系统的存储位置存储运行程序的可执行文件,将可执行文件加载到内存运行位置中形成执行代码,执行代码处于运行态;
2)从内存中获取加载后处于运行态的执行代码的信息内容,将其保存为代码镜像文件;
3)对代码镜像文件计算第一校验码,该第一校验码存储于系统的安全存储区内;
4)系统内存中加载的执行代码运行过程中,检测程序周期性地计算系统内存中运行的执行代码的第二校验码;
5)比较第一校验码和第二校验码,若一致,则继续运行;若不一致,进行安全操作。
所述1)和2)中,系统存储位置存储的可执行文件多次加载到内存中,每次加载后,均从内存中获取加载后处于运行态的执行代码的信息内容并保存为代码镜像;
对每次获取的代码镜像均计算第一校验码,如果每次获取的第一校验码均相同,则取得第一校验码完成;如果多次获取的第一校验码不同,则重新开始获取代码镜像并重新获取第一校验码,直到多次获取的第一校验码相同。
所述3)中,所述第一校验码追加到可执行文件尾部或者单独存储在系统的安全存储区内。
所述代码镜像保存在目标系统中或者非目标系统中,若保存在目标系统中,则计算完成第一验证码后,删除代码镜像;若保存在非目标系统中,则计算完成第一验证码后,将第一校验码保存在目标系统中。
一种代码检查方法,其步骤包括:
1) 计算可执行文件的第一校验码;可执行文件和第一校验码均存储于可执行的存储体内;
2) 在存储体内运行可执行文件过程中,检测程序周期性计算可执行文件的第二校验码;
3) 若第一校验码和第二校验码一致,则继续运行代码;否则进行安全操作。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的方法。
本发明的有益效果:本发明能够检查运行时代码是否发生变化,如果发生变化,能够停止系统运行,提升系统安全性。
具体实施方式
下面结合具体实施方式对本发明作进一步详细说明。
本发明提供一种运行时代码的检查方法,该方法尤其应用于对代码安全性要求高的功能安全系统。
本发明首先提供一种对非重定位、在存储位置运行的代码进行检查的方法,该方法包括以下步骤:
(1)通过计算机编写完成运行程序的可执行文件后,计算可执行文件的第一验证码;
所述第一验证码在计算机编写完成后计算或者将可执行文件加载到存储位置后计算,计算后的第一验证码和可执行文件一起存储在系统的存储位置;
(2)可执行文件运行过程中,检测程序周期性的读取存储位置的可执行文件并计算第二校验码,将第二校验码与第一校验码进行比较,一致则继续运行,不一致则进行安全操作。
所述的检测程序存储在存储位置,该程序运行时,能够读取存储位置存储的可执行文件和第一验证码,并计算第二验证码,同时还能够进行第一验证码和第二验证码的比较。
其次,本发明同时提供一种对基于操作系统,以重定位机制加载运行的程序进行运行时代码检测方法,现有的检测方式安全性、有效性不足、算法复杂,本发明提供一种更有效的运行时代码的检查方法。
上述的方法首先定义一个代码镜像,该代码镜像定义为:在内存运行位置处运行的代码从存储位置加载到内存运行位置后,获取加载后的代码,再将加载后的代码保存为代码文件形成加载后代码的代码镜像并进行存储,其目的是计算第一检验码。在最终部署的目标系统内存中,不保存代码镜像,实施中能够保存代码镜像内容,用于计算检验码;或者把代码镜像形成文件传输至开发系统中,生成多次代码镜像,计算多次第一验证码。即,代码镜像可保存在目标系统内存中或者非目标系统、例如开发系统的存储器中,如果保存在目标系统的内存中,在计算完第一验证码后,需要删除代码镜像;或者可以保存在非目标系统的存储器中,计算第一验证码,计算完成后,第一验证码保存在目标系统中。
基于上述的定义,本发明提供一种运行时代码检查方法,该方法包括以下步骤:
1)通过计算机编写完成运行程序的可执行文件后,将可执行文件保存在系统的存储位置,需要运行时,将该可执行文件动态加载到用于运行程序的目标系统内存中形成执行代码,执行代码处于运行状态;
2)动态加载程序完成后,运行获取被检测程序代码镜像的程序,从内存中获取完成加载的、处于运行状态的被检测程序代码的可执行代码信息内容,将其在系统的存储区域保存为代码镜像;
3)对代码镜像计算第一校验码,该第一校验码存储于系统的安全存储区内作为预存的比较校验码;
4)系统内存中动态加载的执行代码在运行过程中,检测程序周期性地计算内存中运行的可执行代码信息的第二校验码;
5)比较第一校验码和第二校验码,若两者一致,则说明运行时代码与预期代码一致,则继续运行;若不一致,进行安全操作。
上述代码镜像保存完成后或者第一校验码计算完成后,在目标系统内存中部署程序,所述程序包括检测程序、被检测的可执行文件及第一校验码。检测程序为独立程序或者设计在被检测的可执行文件内。检测程序运行时,能够读取存储位置存储的可执行文件和第一验证码,并计算第二验证码,同时还能够进行第一验证码和第二验证码的比较。
所述安全操作包括停止运行,即终止被检测程序,如果是自检测,则退出运行,如果是专用检测程序检测被检测程序,则可通过系统调用杀死检测失败的程序。
上述1)和2)中,为了防止在从存储位置加载程序到内存过程中发生随机性错误,系统存储位置存储的可执行文件可多次加载到内存中,例如可加载三次,而且每次加载后,均从内存中获取可执行文件并保存为代码镜像;对每次获取的代码镜像均计算第一校验码,如果在多次加载中,每次获取的代码镜像的第一校验码均相同,则系统开始运行;如果多次获取的代码镜像的第一验证码并非全部相同;则再次重新开始多次的加载过程,重新计算第一验证码是否相同。该步骤能够多次计算第一校验码,进而防止在取得代码镜像、计算第一校验码过程中发生的随机性错误或者其它恶意修改问题。
上述的加载次数可根据实施环境的安全性、可靠性决定此步骤的强度,如足够安全,可仅执行一次,否则可执行多次。
上述3)中,第一校验码可以追加到可执行文件尾部或者单独存储在系统的安全存储区内。
本发明所述的第一校验码和第二校验码仅用于标识不同时间获取的校验码,该校验码为现有的校验码技术产生,例如现有的CRC校验码、MD5码等。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读介质上包含的可执行文件或者检测程序的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述可执行文件的程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。
在本说明书的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明揭露的范围内,可轻易想到的变化或者替换,都应该涵盖在本发明的保护范围内。
Claims (6)
1.一种运行时代码检查方法,其特征在于,其步骤包括:
1)在系统的存储位置存储运行程序的可执行文件,将可执行文件加载到内存运行位置中形成执行代码,执行代码处于运行态;
2)从内存中获取加载后处于运行态的执行代码的信息内容,将其保存为代码镜像文件;
3)对代码镜像文件计算第一校验码,该第一校验码存储于系统的安全存储区内;
4)系统内存中加载的执行代码运行过程中,检测程序周期性地计算系统内存中运行的执行代码的第二校验码;
5)比较第一校验码和第二校验码,若一致,则继续运行;若不一致,进行安全操作。
2.根据权利要求1所述的一种运行时代码检查方法,其特征在于:
所述1)和2)中,系统存储位置存储的可执行文件多次加载到内存中,每次加载后,均从内存中获取加载后处于运行态的执行代码的信息内容并保存为代码镜像;
对每次获取的代码镜像均计算第一校验码,如果每次获取的第一校验码均相同,则取得第一校验码完成;如果多次获取的第一校验码不同,则重新开始获取代码镜像并重新获取第一校验码,直到多次获取的第一校验码相同。
3.根据权利要求1所述的一种运行时代码检查方法,其特征在于:
所述3)中,所述第一校验码追加到可执行文件尾部或者单独存储在系统的安全存储区内。
4.根据权利要求1所述的一种运行时代码检查方法,其特征在于:
所述代码镜像保存在目标系统中或者非目标系统中,若保存在目标系统中,则计算完成第一验证码后,删除代码镜像;若保存在非目标系统中,则计算完成第一验证码后,将第一校验码保存在目标系统中。
5.一种代码检查方法,其特征在于,其步骤包括:
计算可执行文件的第一校验码;可执行文件和第一校验码均存储于可执行的存储体内;
在存储体内运行可执行文件过程中,检测程序周期性计算可执行文件的第二校验码;
若第一校验码和第二校验码一致,则继续运行代码;否则进行安全操作。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465896.3A CN110222501B (zh) | 2019-05-31 | 2019-05-31 | 一种运行时代码的检查方法、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465896.3A CN110222501B (zh) | 2019-05-31 | 2019-05-31 | 一种运行时代码的检查方法、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222501A true CN110222501A (zh) | 2019-09-10 |
CN110222501B CN110222501B (zh) | 2023-05-12 |
Family
ID=67818726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910465896.3A Active CN110222501B (zh) | 2019-05-31 | 2019-05-31 | 一种运行时代码的检查方法、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222501B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182584A (zh) * | 2020-09-28 | 2021-01-05 | 广东小天才科技有限公司 | 安全校验方法及装置、电子设备、存储介质 |
WO2021208341A1 (zh) * | 2020-04-16 | 2021-10-21 | 国电南瑞科技股份有限公司 | 一种电力二次设备内存位翻转的检测恢复方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0528053A (ja) * | 1991-07-24 | 1993-02-05 | Oki Electric Ind Co Ltd | システム運転中のプログラムのメモリチエツク方法 |
CN102799494A (zh) * | 2012-08-29 | 2012-11-28 | 南车株洲电力机车研究所有限公司 | 一种校验内存中应用程序的方法和装置 |
CN105740660A (zh) * | 2016-01-20 | 2016-07-06 | 广州彩瞳网络技术有限公司 | 一种应用安全性的检测方法及装置 |
CN108038021A (zh) * | 2017-11-13 | 2018-05-15 | 北京全路通信信号研究设计院集团有限公司 | 一种计算机程序运行阶段代码内存校验方法 |
-
2019
- 2019-05-31 CN CN201910465896.3A patent/CN110222501B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0528053A (ja) * | 1991-07-24 | 1993-02-05 | Oki Electric Ind Co Ltd | システム運転中のプログラムのメモリチエツク方法 |
CN102799494A (zh) * | 2012-08-29 | 2012-11-28 | 南车株洲电力机车研究所有限公司 | 一种校验内存中应用程序的方法和装置 |
CN105740660A (zh) * | 2016-01-20 | 2016-07-06 | 广州彩瞳网络技术有限公司 | 一种应用安全性的检测方法及装置 |
CN108038021A (zh) * | 2017-11-13 | 2018-05-15 | 北京全路通信信号研究设计院集团有限公司 | 一种计算机程序运行阶段代码内存校验方法 |
Non-Patent Citations (2)
Title |
---|
彭伟;: "嵌入式系统CRC循环冗余校验算法设计研究", 南京信息工程大学学报(自然科学版) * |
王希冀;张功萱;郭子恒;: "基于可信密码模块的SoC可信启动框架模型", 计算机工程与科学 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021208341A1 (zh) * | 2020-04-16 | 2021-10-21 | 国电南瑞科技股份有限公司 | 一种电力二次设备内存位翻转的检测恢复方法及系统 |
CN112182584A (zh) * | 2020-09-28 | 2021-01-05 | 广东小天才科技有限公司 | 安全校验方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110222501B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9043761B2 (en) | Fault localization using condition modeling and return value modeling | |
US8386851B2 (en) | Functional coverage using combinatorial test design | |
CN109189405A (zh) | 一种验证程序Flash数据一致性的方法及系统 | |
US20140033174A1 (en) | Software bug predicting | |
CN103530221B (zh) | 一种Android系统中程序行为与界面操作映射方法 | |
CA2696020A1 (fr) | Procede de generation automatique de script pour tester la validite d'un logiciel de fonctionnement d'un systeme embarque a bord d'un aeronef, et dispositif de mise en oeuvre | |
CN110222501A (zh) | 一种运行时代码的检查方法、存储介质 | |
CN110245085B (zh) | 利用在线模型检验的嵌入式实时操作系统验证方法及系统 | |
CN106546278B (zh) | 验证核安全级仪控平台安全失效率的统计测试装置及方法 | |
CN103208313B (zh) | 一种检测方法及系统 | |
CN108197476A (zh) | 一种智能终端设备的漏洞检测方法及装置 | |
Mouzarani et al. | Smart fuzzing method for detecting stack‐based buffer overflow in binary codes | |
CN110674500B (zh) | 存储介质病毒查杀方法、装置、计算机设备和存储介质 | |
CN105893877B (zh) | 安全数据读取的方法和数据处理系统 | |
Vidal et al. | Advancing Blockchain Security: from Vulnerability Detection to Transaction Revocation | |
CN114428700A (zh) | 一种内存自检方法及装置 | |
US20110218794A1 (en) | Concretization of abstracted traces | |
CN110826114B (zh) | 基于ssd安全擦除后的用户数据测试方法和装置 | |
CN108984397B (zh) | 黑盒故障注入方法和系统及介质设备 | |
CN113094221A (zh) | 故障注入方法、装置、计算机设备以及可读存储介质 | |
EP2229648B1 (fr) | Methode de transfert securise de donnees | |
EP3739484B1 (en) | Method and system for detection of post compilation modification of binary images | |
CN109902488A (zh) | APP篡改检测处理方法、iOS设备及存储介质 | |
CN112379918B (zh) | 代码发布方法、装置、计算机设备和存储介质 | |
CN117234789B (zh) | 校验纠错方法、装置、电子设备及存储介质 |
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 |