CN1197006C - 一种生成具有自检测和自修复功能的应用程序的方法 - Google Patents

一种生成具有自检测和自修复功能的应用程序的方法 Download PDF

Info

Publication number
CN1197006C
CN1197006C CN 01104692 CN01104692A CN1197006C CN 1197006 C CN1197006 C CN 1197006C CN 01104692 CN01104692 CN 01104692 CN 01104692 A CN01104692 A CN 01104692A CN 1197006 C CN1197006 C CN 1197006C
Authority
CN
China
Prior art keywords
joint
data
self
file
application program
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.)
Expired - Fee Related
Application number
CN 01104692
Other languages
English (en)
Other versions
CN1371050A (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.)
Inventec Corp
Original Assignee
Inventec Corp
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 Inventec Corp filed Critical Inventec Corp
Priority to CN 01104692 priority Critical patent/CN1197006C/zh
Publication of CN1371050A publication Critical patent/CN1371050A/zh
Application granted granted Critical
Publication of CN1197006C publication Critical patent/CN1197006C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种生成具有自检测和自修复功能的应用程序的方法,利用可执行文件(Execution File)的数据结构上的特点,在其存储原始数据的节(Section)之外,还增加至少一自反馈节,利用该自反馈节存储具有自检测和自修复功能的程序码,并将前述自检测和自修复功能所需要的数据压缩起来,附加於该应用程序的特殊节之中,同时,修改文件的文件头设定,让应用程序由该自反馈节开始执行;本发明在执行源码之前,可以先行自我检查文件是否遭到破坏并进行修复,以确保执行该应用程序的安全性。防止病毒侵害。

Description

一种生成具有自检测和自修复功能 的应用程序的方法
技术领域
本发明涉及一种防计算机病毒的方法,尤其涉及一种生成具有自检测和自修复功能的应用程序的方法。
背景技术
目前的应用程序大部分只能实现其自身所能具备的功能,而将防病毒、杀病毒等等的操作交给其它专门的应用程序进行处理,也就是说:在现有技术中,一个应用程序在设计之初,并没有事先考虑要对这个应用程序进行保护,而且一旦应用程序发生错误,也无法通过应用程序本身对其进行自我修复,
当然使用者可以在计算机中安装防毒软件,来做为防范病毒破坏文件的工具,但是,目前的防毒软件大都以核对病毒码的方式来预防病毒的侵害,虽然防毒软件的厂商也提供让使用者更新病毒码的服务,但以目前病毒日新月异的出现速度来看,实在是防不胜防,尤其是互联网的盛行,让各种新的病毒可以更快速地扩散、感染,因此防毒软件的保护措施难免会有漏洞。就算是幸运地防毒软件都能检测到遭到病毒感染的文件,但有些病毒的破坏力极强,使得防毒软件根本无法在清除病毒的同时并维持该文件的完整性;在这种情形之下,使用者为了避免危及其他干净的文件,常只得将被感染的文件删除掉,若是使用者没有定期做备份,则会造成文件数据的遗失。
另外,现在计算机硬件的技术发展非常地迅速,在RAM和硬盘技术飞速发展的今天,以存储器(例如RAM)和硬盘为例,其速度与容量都较以往增长数倍至数百倍,所以现在的应用程序在执行时不但不愁存储器不足,并且可以执行得非常迅速。
因此,以传统应用程序中一种可移植可执行(Portable Executable,以下简称PE)文件格式为例,其数据结构如图1所示,每一个PE格式文件除了具有一MS-DOS文件头101、一PE格式文件头102之外,还有一节索引表103。该节索引表103的内容包括有节名、节开始处相对于文件头的地址偏移量(Relation Virtual Address,简称RVA)、节的大小、节的属性等。计算机系统可以根据节索引表103而查询到其所要存取的节104,再从这些节104中读取与该PE格式文件相关的数据,由此可知,在PE格式文件中,节104的作用便是存储可执行文件所需要的数据(或称为程序源码),并且由文件头101、102设定其起始执行的节,使得可执行文件从该节开始执行,再依序关联下去。
发明内容
本发明的一个目的在于提供一种生成具有自检测和自修复的应用程序的方法,能够制作一种能够实现自检测和自修复功能的应用程序,以防止外来因素,如病毒等对可执行文件的侵害,以及当应用程序感染病毒后进行自我恢复。
本发明的另一个目的在于提供一种生成具有自检测和自修复的应用程序的方法,其中包括一个打包的(Packed)程序,可以将所添加的内容压缩起来,在新添加的部份不影响应用程序的正常使用的同时,可以将编译中不存在的数据加入可执行文件中,达到应用程序的个性化。
本发明提供一种生成具有自检测和自修复功能的应用程序的方法,该方法包括以下步骤:接收该应用程序的源码(Source Code),该源码的数据结构上具有存储原始数据的节;提供一段可以实现自检测功能的程序码,该段自检测程序码以对比循环冗余校验(Cyclical Redundancy Check,CRC)数据的方式,来确认该文件是否遭到改变;提供一段可以实现自修复功能的程序码,该段自修复程序码以将一备份数据复制到该源码文件中的方式,以恢复该源码文件的原始内容;在该存储原始数据的节之外,在所述数据结构上提供至少一自反馈节,用于存储所述自检测程序码和自修复程序码;在所述数据结构上提供一特殊节,用于存储所述自检测所需要的循环冗余校验(CRC)数据,以及该段自修复所需要的备份数据;修改所述应用程序文件的文件头设定,让该应用程序从该自反馈节开始执行,由此使该应用程序在执行之前,先自我检查其文件是否遭到改变,并可以适时自我恢复该文件的原始内容。
本发明的方法还包括以下步骤:对该应用程序的源码以及该段自检测程序码和该段自修复程序码进行编译(Compiler),使其成为一个整体的可执行程序。
按照本发明的生成具有自检测和自修复功能的应用程序的方法生成的具有自检测和自修复功能的应用程序,利用可执行文件(Execution File)之数据结构上的特点,在其存储原始数据的节(Section)之外,还增加至少一自反馈节,利用该自反馈节存储具有自检测和自修复功能的程序码,并将前述自检测和自修复功能所需要的数据压缩起来,附加在该应用程序的特殊节之中,同时,修改文件的文件头设定,让应用程序从该自反馈节开始执行;如此一来,本发明在执行源码之前,可以先行自我检查文件是否遭到破坏并进行修复,以确保执行该应用程序的安全性。
可见,通过本发明所提供的一种生成具有自检测和自修复功能的应用程序生成方法所制作的应用程序,可以使应用程序自检测和修复的功能,防止和排除病毒的侵害,保证应用程序的安全性。
为让本发明的上述和其他目的、特征、和优点能更明显易懂,下文结合附图对本发明的优选实施例作详细说明如下。
附图说明
图1示出传统可移植可执行(Portable Executable,PE)文件格式的结构示意图;
图2A示出本发明在图1中还增加自检测与自修复功能的文件结构示意图;
图2B示出本发明在图2A中还增加备份数据的文件结构示意图;
图3示出本发明的功能模块示意图;
图4示出图3中的打包(packed)程序的工作流程示意图;
图5示出图3中的自检测模块的工作流程示意图;以及
图6示出图3中的自修复模块的工作流程示意图。
图7示出本发明的方法所运行的计算机环境的示意图。
具体实施方式
以下结合附图详细描述本发明的优选实施例。
首先以PE(Protable Executable,缩写为PE)格式文件(应用程序的一种格式)为例,分析其结构如图1所示为传统可执行应用程序的数据结构,每一个PE格式文件都有一个MS-DOS头文件和一个PE格式头文件,在节表索引中包括节名、节开始处相对於文件头的地址偏移量(RelationVirtual Address,简称RVA)、节的大小、节的属性(包括只读、可读写等等),根据节表索引可以查找到相应节表,从这些节表中可以读出与该PE文件相关的数据,在PE文件中,节的作用是提供用户所需要的数据。但同样可以使用冗余的节将一些数据存储在其中,这些数据在应用程序中可以是有用的,也可以是没用的。想要对可执行文件进行自检测和自修复,就必须利用节的特性。可执行文件的自检测和自修复功能的实现实际上是在可执行文件内部存在一个自反馈节。这个自反馈节在程序运行之被将检测自身的一些特性,当这些特性都与程序的记录相同时,可执行文件将随后实施应该实现的功能。而当这些特性与程序的记录不相同时,程序将进行一次处理,将冗余节的备份数据覆盖在可执行文件的原数据上,达到可执行文件的自检测和自修复功能。
本发明正是针对可执行文件的这种数据结构特点,将本发明所提供的自检测和自修复功能模块以自定义编码的形式添加在应用程序的节中,其功能模块图如图3所示,针对一个普通的应用程序源码301,设计自检测302和自修复303的功能模块,重新编译这个应用程序的源码和自检测、自修复功能模块,让其成为一个整体,通过打包(Packed)程序304,将自检测和自修复功能模块相应的数据经过压缩后添加到原有的应用程序中,生成新的应用程序305。
请参照图3,为本发明的功能模块示意图,其中首先取得应用程序的源码,并针对应用程序的源码301,个别设计其自检测程序码与自修复程序码,因而形成一自检测模块302与一自修复模块303,并将上述的程序码存储在至少一自反馈节301中,其在文件中的数据结构如图2A所示,同时重新编译(Compiler)上述应用程序的源码301以及自检测模块302、自修复模块303,使其成为一个整体的可执行程序,当然这个可执行程序必须修改原始文件头101、102的设定,使得程序在执行之初,会先运行该自反馈节201的内容;之后再利用一打包(Packed)模块304,将执行自检测模块302和自修复模块303所需要的数据,以特殊节202的方式附加在该可执行程序之中,其在文件中的数据结构如图2B所示,此时即生成了本发明的具有自检测与自修复功能的新应用程序305。上述自检测模块302、自修复模块30 3和打包模块304分别执行相应的自检测处理、自修复处理和打包处理。
因此,本发明在真正执行源码301之前,会先启动自反馈节201中的自检测模块302,以检查新应用程序305本身的一些特性,当这些特性都与备份记录相同时,才会真正执行该应用程序源码301的内容;而当这些特性与备份的记录不相同时,会启动自修复模块303进行处理,以将特殊节中的备份数据覆盖在可执行文件的原始数据上,达到新应用程序305的自修复功能。
以下描述自检测模块的处理过程。如图4所示,从应用程序的数据结构中读出循环冗余校验(简称CRC)数据所对应的文件地址偏移量(步骤401),及该地址偏移量所对应的循环冗余校验值(步骤402),并把这些数据存成一个自定义的文件(步骤403),将该文件映射到内存中(步骤403),取得该文件的长度(File Length)(步骤404),定义临时变量nTemp=0(步骤405),设nTemp=nTemp+1(即内存映射地址加1),取出此时地址所对应的二进制值(步骤407),判断nTemp的函数值是否大於自定义文件的长度(步骤408)?如果是,则表示自定义文件中的内容已经处理完毕,返回自检测函数(步骤411),判断所得到的CRC值是否与原始记录值相同(步骤412)?如果不同,则调用自修复模块(步骤413);如果相同,则调用该应用程序的其他功能模块,继续运行该应用程序(步骤413);如果自定义函数nTemp的值小於文件长度,则继续判断所取得的二进制数值是否在CRC数据所在的位置与CRC数据长度之内,如果是,则表示目前还有要读取的二进制数,则返回(步骤407);如果否,则进行CRC运算,然後返回(步骤408)。
以下描述自修复模块的处理过程。
如图5所示,通过自检测模块发现了问题后(步骤501),搜索可执行文件节表,找到对应可执行文件中存取备份数据的地址偏移位置(步骤502),进行自解压(步骤503),将备份数据解压缩后放在硬盘上,存储为一个临时文件(步骤503),对此临时文件进行循环冗余校验(CRC校验)(步骤504),将得到的校验值与存储的原始校验值进行比较(步骤505),如果相同,则关闭应用,将临时文件拷贝到原文件上(步骤507),然後重新运行该模块程序(步骤508);如果不同,则修复程序结束。
以下描述打包(Package)程序。
如图6所示,首先输入需要打包的程序的文件名(如.exe或.com等)(步骤601),查找该文件的节表(步骤602),判断是否此文件具有特殊的节(步骤603),根据如果否,则提示用户重新输入一个正确的文件名(步骤603);如果是,则根据所读出的节表地址,将此节表地址写入节表的前八位(步骤604),将文件压缩后,存储在特殊的程序节中(步骤605),计算文件其余部份的CRC值(除去存储CRC值的部份)(步骤607),将此时计算出的CRC值写入用来存储CRC值的字节中(步骤608),关闭被处理的文件(步骤609)。
本发明的方法可以运行在一般的计算机系统中及互联网上,用于使计算机免遭病毒的侵害。图7示出了运行本发明的方法的一般计算机的硬件架构的一个典型例子。其中,操作系统安装在主机中的硬盘上,而本发明的方法在其操作系统中运行,用于将一般的应用程序变为具有具有自检测和自修复的应用程序。
下面以一具体例子来说明使用本发明所提供的方法是如何工作并防止病毒侵害的。例如,用本发明的方法生成一个ActiveX控件,这个ActiveX控件通过Internet进行传播,如果在传播过程中受到病毒的侵害,当用户开启这个控件时,自检测模块将启动,发现文件的特征值与文件所记录的并不一致,这时将启动自修复模块。自修复模块将从文件内部找出备份的数据,将备份的数据覆盖被破坏的数据。在再次检测文件的特征值之后,如果特征值正确,则可以继续使用并传播,如果特征值不正确,将会不运行程序,给用户一个友好的警告。首先会发现自己的应用程序受到了不明原因系统的破坏,此时应用程序进行自修复,一经修复成功,则继续在网络上传播,此时就不会给用户带来危害了。
利用本发明所提供的自检测与自修复功能的方法,使得应用程序在执行之初,都会先检查文件是否遭到外力(例如病毒)的破坏,并可以适时地进行自我修复的程序,因此可以确保执行应用程序时的安全性,更可以保护使用者的计算机系统,免于遭受病毒的感染和破坏。
以上描述的是本发明的优选实施例,但本发明并不局限于此。本领域技术人员可以对此进行各种修改和变型,而不脱离本发明的精神与范围。本发明的保护范围应由所附权利要求书来界定。

Claims (16)

1、一种生成具有自检测和自修复功能的应用程序的方法,该方法包括以下步骤:
接收该应用程序的源码,该源码文件的数据结构上具有存储原始数据的节;
提供一段可以实现自检测功能的程序码,该段自检测程序码以对比循环冗余校验数据的方式,来确认该源码文件是否遭到改变;
提供一段可以实现自修复功能的程序码,该段自修复程序码以将一备份数据复制到该源码文件中的方式,以恢复该源码文件的原始内容;
在该存储原始数据的节之外,在所述数据结构上提供至少一自反馈节,用于存储所述自检测程序码和自修复程序码;
在所述数据结构上提供一特殊节,用于存储所述自检测所需要的循环冗余校验数据,以及该段自修复所需要的备份数据;
修改所述应用程序文件的文件头设定,让该应用程序从该自反馈节开始执行,
由此使该应用程序在执行之前,先自我检查其源码文件是否遭到改变,并可以适时自我恢复该源码文件的原始内容。
2、如权利要求1所述的方法,还包括以下步骤:对该应用程序的源码以及该段自检测程序码和该段自修复程序码进行编译,使其成为一个整体的可执行程序。
3、如权利要求1或2所述的方法,其中该应用程序为一种可移植可执行文件。
4、如权利要求3所述的方法,其中该可移植可执行文件的格式包括有一MS-DOS文件头、一PE文件头、一节索引表以及多个数据节,而该节索引表用于存储该数据节的节名、节开始处相对於文件头的地址偏移量、节的大小以及节的属性数据。
5、如权利要求4所述的方法,其中该自反馈节的节名、节开始处相对于文件头的地址偏移量、节的大小以及节的属性数据,都记录在该节索引表中。
6、如权利要求4所述的方法,其中更改变该MS-DOS文件头以及该PE文件头的记录,使得该应用程序於执行之初,会由该自反馈节开始执行。
7、如权利要求3所述的方法,其中该特殊节的节名、节开始处相对於文件头的地址偏移量、节的大小以及节的属性数据,都记录在该节索引表中。
8、如权利要求7所述的方法,其中将该特殊节开始处相对於文件头的地址偏移量,存储在该节索引表的前8位。
9、如权利要求7所述的方法,其中还增加一将该备份数据压缩的步骤,将该备份数据压缩之后再存储在该特殊节中。
10、如权利要求9所述的方法,其中该段自修复程序码还包括有将该压缩後的备份数据解压缩的功能。
11、如权利要求7所述的方法,其中该循环冗余校验数据的计算范围,为该应用程序中不包含存储该循环冗余校验数据的部分外的所有文件内容。
12、如权利要求1或2所述的方法,其中该段自检测程序码对比循环冗余校验数据的方式,还包括下列步骤:
由该应用程序中读出该循环冗余校验数据;
对该应用程序计算一新循环冗余校验值,且其计算范围并不包括存储该循环冗余校验数据的部分;以及
比较该新循环冗余校验值与该循环冗余校验数据是否相同。
13、如权利要求12所述的方法,其中若该新循环冗余校验值与该循环冗余校验数据不同,则跳到该段自修复程序码。
14、如权利要求12所述的方法,其中若该新循环冗余校验值与该循环冗余校验数据相同,则执行该新应用程序的源码。
15、如权利要求1或2所述的方法,其中该段自修复程序码将该备份数据复制到该源码文件中的步骤,还包含下列步骤:
由该应用程序中找出该备份数据,并且对该备份数据进行解压缩;以及
将该解压缩後的备份数据,复制到该新应用程序中的相应部分。
16、如权利要求15所述的方法,其中还增加一对该解压缩后的备份数据进行循环冗余校验的步骤,并将其检查结果与该循环冗余校验数据比较,以确认该备份数据的正确性。
CN 01104692 2001-02-20 2001-02-20 一种生成具有自检测和自修复功能的应用程序的方法 Expired - Fee Related CN1197006C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 01104692 CN1197006C (zh) 2001-02-20 2001-02-20 一种生成具有自检测和自修复功能的应用程序的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 01104692 CN1197006C (zh) 2001-02-20 2001-02-20 一种生成具有自检测和自修复功能的应用程序的方法

Publications (2)

Publication Number Publication Date
CN1371050A CN1371050A (zh) 2002-09-25
CN1197006C true CN1197006C (zh) 2005-04-13

Family

ID=4653985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 01104692 Expired - Fee Related CN1197006C (zh) 2001-02-20 2001-02-20 一种生成具有自检测和自修复功能的应用程序的方法

Country Status (1)

Country Link
CN (1) CN1197006C (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1764699A4 (en) * 2004-06-14 2010-07-28 Sony Corp INFORMATION MANAGEMENT DEVICE AND INFORMATION MANAGEMENT PROCESS
US7337358B2 (en) * 2004-12-20 2008-02-26 Microsoft Corporation Method and computer-readable medium for verifying and saving an electronic document
US7725735B2 (en) * 2005-03-29 2010-05-25 International Business Machines Corporation Source code management method for malicious code detection
US7640587B2 (en) * 2005-03-29 2009-12-29 International Business Machines Corporation Source code repair method for malicious code detection
US8255998B2 (en) 2005-08-16 2012-08-28 Emc Corporation Information protection method and system
US8468604B2 (en) 2005-08-16 2013-06-18 Emc Corporation Method and system for detecting malware
CN101243400B (zh) * 2005-08-16 2015-03-25 Emc公司 信息保护方法和系统
CN100465978C (zh) * 2005-11-16 2009-03-04 白杰 被病毒程序破坏的数据恢复方法、装置及病毒清除方法
CN101000610B (zh) * 2006-01-11 2010-09-29 鸿富锦精密工业(深圳)有限公司 文件分散式储存系统及方法
CN100458700C (zh) * 2006-03-22 2009-02-04 北京握奇数据系统有限公司 带有安全需求的应用程序的构建方法和装置
US7797335B2 (en) * 2007-01-18 2010-09-14 International Business Machines Corporation Creation and persistence of action metadata
DE102010006572A1 (de) 2010-02-02 2011-08-04 Giesecke & Devrient GmbH, 81677 Verfahren zum Ausführen einer Anwendung
CN102541463B (zh) * 2010-12-28 2014-07-23 慧荣科技股份有限公司 快闪存储装置及其数据存取方法
CN102981925A (zh) * 2012-12-20 2013-03-20 上海市共进通信技术有限公司 应用于通讯设备的寄存器巡检校验控制方法
CN104239163B (zh) * 2013-06-19 2016-04-13 腾讯科技(深圳)有限公司 软件修复方法和装置
CN104298935A (zh) * 2014-09-25 2015-01-21 广东欧珀移动通信有限公司 嵌入式设备固件的保护方法与装置
CN106066795A (zh) * 2016-05-31 2016-11-02 国网冀北电力有限公司电力科学研究院 一种采集终端软件程序比对方法及装置
CN109189328B (zh) * 2018-08-02 2021-06-25 郑州云海信息技术有限公司 一种适用于NAND Flash控制器的索引表保护方法

Also Published As

Publication number Publication date
CN1371050A (zh) 2002-09-25

Similar Documents

Publication Publication Date Title
CN1197006C (zh) 一种生成具有自检测和自修复功能的应用程序的方法
US9858072B2 (en) Portable executable file analysis
Jeong et al. Generic unpacking using entropy analysis
KR101966754B1 (ko) 소프트웨어 코드의 생성 및 캐싱 기법
US20060137013A1 (en) Quarantine filesystem
US7823006B2 (en) Analyzing problem signatures
US7676842B2 (en) System and method for detecting malicious code
US20120159633A1 (en) System and Method for Updating Antivirus Cache
WO2000022710A2 (en) Method and apparatus for computer virus detection, analysis, and removal in real time
CN110162429B (zh) 系统修复方法、服务器及存储介质
CN1828576A (zh) 数字信号处理韧体中数据最佳化及保护的方法及系统
CN107463513B (zh) 在存储位置之间转移控制的系统和方法
Marx A guideline to anti-malware-software testing
KR102468428B1 (ko) PDF 또는 HWP에서 JavaScript의 무해화를 위한 방법 및 장치
KR102494838B1 (ko) MS-CFB의 DocumentSummaryInformation 스트림에서 Link의 무해화를 위한 방법 및 장치
TW535055B (en) Application program with self-detection and self-repairing functions
US20230394145A1 (en) Machine learning-based malware detection in process memory
CN117370977A (zh) 一种Android系统恶意软件反编译方法和系统
KR20170099689A (ko) 커널 자료구조 특성에 기반한 악성코드 탐지 시스템 및 그의 제어 방법

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050413

Termination date: 20110220