CN102509049B - 一种程序合法性验证方法和系统 - Google Patents
一种程序合法性验证方法和系统 Download PDFInfo
- Publication number
- CN102509049B CN102509049B CN201110359644.6A CN201110359644A CN102509049B CN 102509049 B CN102509049 B CN 102509049B CN 201110359644 A CN201110359644 A CN 201110359644A CN 102509049 B CN102509049 B CN 102509049B
- Authority
- CN
- China
- Prior art keywords
- program
- file
- code segment
- test value
- procedure
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种程序合法性验证方法和系统,该验证方法包括:获取程序的运行通知及程序的可执行性文件的读写操作通知;按照预先确定的算法计算程序的可执行性文件的代码段校验值;将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果;在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,则当前程序为合法程序;若否,则当前程序为非法程序。本发明还构造一种程序合法性验证系统。实施本发明的技术方案,即使需要进行合法性验证的程序数量比较多,且需要实时响应用户运行程序的文件操作控制,也不会严重影响操作系统的运行速度,大大提高了用户使用体验。
Description
技术领域
本发明涉及程序验证,尤其涉及一种程序合法性验证方法和系统。
背景技术
在很多计算机客户端应用软件系统中,都会有一些限制性条件,不允许随便用户更改软件的配置文件,不允许用户随便删除文件,否则将会导致软件无法运行或者获取的配置数据不正确,如果涉及到比较机密的数据,更有可能导致软件开发商的经济损失。为了解决这个问题,需要对程序合法性进行验证,只有通过验证的程序才允许修改配置文件或者删除文件。
在程序合法性验证的领域中,目前主要有两种方法来验证程序合法性。一是通过代码签名方式,此技术用于验证程序是否属于信任的机构颁发,在验证时,如果发现是信任机构颁发的证书签名,则认为是合法的程序;二是通过文件MD5值方式,此方式用于杀毒软件信任白名单和软件管家中的程序分类,该方法需要一个软件的文件MD5值特征库。
在计算机客户端应用软件系统中,由于需要进行合法性验证的程序数量比较多,且需要实时响应用户运行程序的文件操作控制,如果采用现有的代码签名和MD5值验证方法,将严重影响操作系统的运行速度,进而影响用户使用体验。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述运行速度慢从而影响用户使用体验的缺陷,提供一种提高用户使用体验的程序合法性验证方法。
本发明解决其技术问题所采用的技术方案是:构造一种程序合法性验证方法,包括:
A.获取程序的运行通知及程序的可执行性文件的读写操作通知;
B.按照预先确定的算法计算程序的可执行性文件的代码段校验值;
C.将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果,存储在程序的可执行性文件PE头部中的代码段校验值是按照所述算法计算而得到的;
D.在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,则当前程序为合法程序;若否,则当前程序为非法程序。
在本发明所述的程序合法性验证方法中,在判断当前程序为合法程序后,所述合法性验证方法还包括:
设置当前程序的目录;
获取当前程序的可执行文件的路径。
在本发明所述的程序合法性验证方法中,所述预先确定的算法为下列中的其中一个:奇偶校验、CRC校验、异或校验、程序的可执行性文件的代码段的关键部分的信息摘要算法5。
在本发明所述的程序合法性验证方法中,所述比较结果以下列中的其中一种方式来存储:链表、排序数组、哈希表。
本发明还构造一种程序合法性验证系统,包括:
获取单元,用于获取程序的运行通知及程序的可执行性文件的读写操作通知;
计算单元,用于按照预先确定的算法计算程序的可执行性文件的代码段校验值;
比较单元,用于将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果,存储在程序的可执行性文件PE头部中的代码段校验值是按照所述算法计算而得到的;
判断单元,用于在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,当前程序为合法程序;若否,则当前程序为非法程序。
在本发明所述的程序合法性验证系统中,所述系统还包括:
目录设置单元,用于在判断当前程序为合法程序时设置当前程序的目录;
路径获取单元,用于在判断当前程序为合法程序时获取当前程序的可执行文件的路径。
在本发明所述的程序合法性验证系统中,所述预先确定的算法为下列中的其中一个:奇偶校验、CRC校验、异或校验、程序的可执行性文件的代码段的关键部分的信息摘要算法5。
在本发明所述的程序合法性验证系统中,所述比较结果以下列中的其中一种方式来存储:链表、排序数组、哈希表。
实施本发明的技术方案,即使需要进行合法性验证的程序数量比较多,且需要实时响应用户运行程序的文件操作控制,也不会严重影响操作系统的运行速度,大大提高了用户使用体验。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明程序合法性验证方法实施例一的流程图;
图2是本发明程序合法性验证方法实施例二的流程图;
图3是本发明程序合法性验证系统实施例一的逻辑结构图;
图4是本发明程序合法性验证系统实施例二的逻辑结构图。
具体实施方式
如图1所示,在本发明程序合法性验证方法实施例一的流程图中,该验证方法包括以下步骤:
S100.获取程序的运行通知及程序的可执行性文件的读写操作通知,例如,在Windows操作系统中,利用Windows系统的应用层或驱动层的Hook编程技术来获取程序的运行通知及程序的可执行性文件的读写操作通知;
S200.按照预先确定的算法计算程序的可执行性文件的代码段校验值;
S300.将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果,存储在程序的可执行性文件PE头部中的代码段校验值是按照所述算法计算而得到的;
S400.在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,则执行步骤S500;若否,则执行步骤S600;
S500.当前程序为合法程序;
S600.当前程序为非法程序。
在上述实施例中,应当说明的是,合法的软件开发商在颁发软件之前,需进行该软件程序进行校验值签名,具体包含以下步骤:按照预先确定的算法计算程序的可执行性文件的代码段校验值,在该程序的可执行文件的PE头部寻找未使用的段,再把计算好的验证值保存在所寻找到的段的位置。经过了上述步骤后,该软件程序就打上了合法性标签。在客户端使用该程序时,需首先对程序进行合法性验证,具体包含以下步骤:获取程序的运行通知及程序的可执行性文件的读写操作通知;接着,按照预先确定的算法计算程序的可执行性文件的代码段校验值,该算法与合法的软件开发商所使用的算法相同;其次,将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果;最后,在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,则认为是合法的程序,进而允许对当前程序进行读写操作;若否,则认为是非法的程序,进而拒绝对当前程序进行读写操作。使用该验证方法对程序的合法性进行验证,即使需要进行合法性验证的程序数量比较多,且需要实时响应用户运行程序的文件操作控制,也不会严重影响操作系统的运行速度,大大提高了用户使用体验。
在图2所示的本发明程序合法性验证方法实施例二的流程图中,该实施例的验证方法包括步骤S100至S800,其中,步骤S100至S600与图1所示的实施例一中步骤S100至S600相同,在此不再赘述。在步骤S500之后,也即进行合法性验证,且验证结果为该程序为合法的软件开发商颁发的程序后,可进行:
步骤S700.设置当前程序的目录;
步骤S800.获取当前程序的可执行文件的路径。
上述实施例中所提及的算法可优选为下列中的其中一个:奇偶校验、CRC校验、异或校验、程序的可执行性文件的代码段的关键部分的信息摘要算法5(Message Digest Algorithm 5, MD5)。
在上述实施例中,存储比较结果时,可按下列中的其中一种方式来存储:链表、排序数组、哈希表,其中,在利用哈希表时,需要O(1)的时间复杂度;在利用排序数组时,需要O(log(n))的时间复杂度;在利用链表时,需要O(n)的时间复杂度。
如图3所示,在本发明的程序合法性验证系统实施例一的逻辑结构图中,该合法性验证系统包括依次连接的获取单元100、计算单元200、比较单元300和判断单元400。其中,获取单元100用于获取程序的运行通知及程序的可执行性文件的读写操作通知;计算单元200用于按照预先确定的算法计算程序的可执行性文件的代码段校验值;比较单元300用于将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果,存储在程序的可执行性文件PE头部中的代码段校验值是按照所述算法计算而得到的;判断单元400用于在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,则当前程序为合法的程序;若否,则当前程序为非法的程序。
如图4所示,在本发明的程序合法性验证系统实施例二的逻辑结构图中,该验证系统中的获取单元100、计算单元200、比较单元300和判断单元400与图3所示的实施例移动逻辑结构相同,在此不做赘述,以下仅说明不同的部分:在判断单元400判断当前程序为合法的程序后,目录设置单元500用于在判断当前程序为合法程序时设置当前程序的目录;路径获取单元600用于在判断当前程序为合法程序时获取当前程序的可执行文件的路径。
在上述实施例中,所述预先确定的算法优选为下列中的其中一个:奇偶校验、CRC校验、异或校验、程序的可执行性文件的代码段的关键部分的信息摘要算法5。
在上述实施例中,所述比较结果优选以下列中的其中一种方式来存储:链表、排序数组、哈希表。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (6)
1.一种程序合法性验证方法,其特征在于,包括:
A.按照预先确定的算法计算程序的可执行文件的代码段校验值;
B.在程序的可执行文件的PE头部寻找未使用的段;
C.把所计算好的校验值保存在所寻找到的段的位置;
D.利用Windows系统的应用层或驱动层的Hook编程技术,获取程序的运行通知及程序的可执行性文件的读写操作通知;
E.按照预先确定的算法计算程序的可执行性文件的代码段校验值;
F.将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果,存储在程序的可执行性文件PE头部中的代码段校验值是按照所述算法计算而得到的;所述比较结果以下列中的其中一种方式来存储:链表、排序数组、哈希表;
G.在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,则当前程序为合法程序;若否,则当前程序为非法程序。
2.根据权利要求1所述的程序合法性验证方法,其特征在于,在判断当前程序为合法程序后,所述合法性验证方法还包括:
设置当前程序的目录;
获取当前程序的可执行文件的路径。
3.根据权利要求1所述的程序合法性验证方法,其特征在于,所述预先确定的算法为下列中的其中一个:奇偶校验、CRC校验、异或校验、程序的可执行性文件的代码段的关键部分的信息摘要算法5。
4.一种程序合法性验证系统,其特征在于,包括:
获取单元,利用Windows系统的应用层或驱动层的Hook编程技术,获取程序的运行通知及程序的可执行性文件的读写操作通知;
计算单元,用于在获取单元获取程序的运行通知及可执行文件的读写操作通知前,按照预先确定的算法计算程序的可执行性文件的代码段校验值,并把所计算好的校验值放到可执行文件的PE头部未使用的段中,在获取单元获取程序的运行通知及可执行文件的读写操作通知后,再次按照预先确定的算法计算程序的可执行性文件的代码段校验值;
比较单元,用于将所计算的代码段校验值与预先存储在程序的可执行性文件的PE头部中的代码段校验值进行比较,并存储比较结果,存储在程序的可执行性文件PE头部中的代码段校验值是按照所述算法计算而得到的,比较结果以下列中的其中一种方式来存储:链表、排序数组、哈希表;
判断单元,用于在程序的读写操作中,判断是否存储有当前程序的代码段校验值的比较结果,若是,当前程序为合法程序;若否,则当前程序为非法程序。
5.根据权利要求4所述的程序合法性验证系统,其特征在于,所述系统还包括:
目录设置单元,用于在判断当前程序为合法程序时设置当前程序的目录;
路径获取单元,用于在判断当前程序为合法程序时获取当前程序的可执行文件的路径。
6.根据权利要求4所述的程序合法性验证系统,其特征在于,所述预先确定的算法为下列中的其中一个:奇偶校验、CRC校验、异或校验、程序的可执行性文件的代码段的关键部分的信息摘要算法5。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110359644.6A CN102509049B (zh) | 2011-11-14 | 2011-11-14 | 一种程序合法性验证方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110359644.6A CN102509049B (zh) | 2011-11-14 | 2011-11-14 | 一种程序合法性验证方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102509049A CN102509049A (zh) | 2012-06-20 |
CN102509049B true CN102509049B (zh) | 2014-11-26 |
Family
ID=46221130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110359644.6A Active CN102509049B (zh) | 2011-11-14 | 2011-11-14 | 一种程序合法性验证方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102509049B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577173A (zh) * | 2012-07-30 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 任务处理方法和装置 |
CN104301292B (zh) * | 2013-07-19 | 2018-05-18 | 中国银联股份有限公司 | 安全性信息交互系统、装置及方法 |
CN104424434A (zh) * | 2013-08-29 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 数据校验方法及装置 |
CN103886229B (zh) * | 2014-03-10 | 2017-01-04 | 珠海市君天电子科技有限公司 | 一种提取pe文件特征的方法及装置 |
CN105180378A (zh) * | 2015-10-15 | 2015-12-23 | 珠海格力电器股份有限公司 | 空调及其升级控制方法和装置 |
CN105373747A (zh) * | 2015-12-09 | 2016-03-02 | 上海斐讯数据通信技术有限公司 | 防止系统被篡改的文件生成方法、文件验证方法及系统 |
CN106933556A (zh) * | 2015-12-29 | 2017-07-07 | 珠海市君天电子科技有限公司 | 一种驱动程序的打开方法及装置 |
FR3050044B1 (fr) * | 2016-04-11 | 2019-06-21 | Schneider Electric Industries Sas | Procede de verification automatique d'un fichier informatique cible par rapport a un fichier informatique de reference |
CN107301105B (zh) * | 2016-04-14 | 2020-03-10 | 华为技术有限公司 | 校验热补丁或者动态库的方法及装置 |
CN106708555B (zh) * | 2016-06-29 | 2019-01-22 | 腾讯科技(深圳)有限公司 | 一种加载插件的方法和装置 |
US10503894B2 (en) * | 2016-08-30 | 2019-12-10 | Ncr Corporation | Secure process impersonation |
CN110135152B (zh) * | 2019-03-28 | 2021-07-02 | 江苏通付盾信息安全技术有限公司 | 应用程序攻击检测方法及装置 |
CN110147655A (zh) * | 2019-03-28 | 2019-08-20 | 江苏通付盾信息安全技术有限公司 | 应用程序的安全防护系统及方法 |
CN112433930A (zh) * | 2019-08-26 | 2021-03-02 | 无锡江南计算技术研究所 | 基于信息摘要值实现的程序结果校验方法 |
CN111291371A (zh) * | 2020-01-10 | 2020-06-16 | 北京深之度科技有限公司 | 一种应用程序安全验证方法及装置 |
CN111832012B (zh) * | 2020-07-15 | 2024-04-05 | 北京经纬恒润科技股份有限公司 | 一种ecu及其启动方法 |
CN112613893A (zh) * | 2020-12-28 | 2021-04-06 | 杭州拼便宜网络科技有限公司 | 一种用户恶意注册识别方法、系统、设备及介质 |
CN112613023B (zh) * | 2020-12-28 | 2023-04-28 | 厦门市美亚柏科信息股份有限公司 | 一种认证信息生成算法的保护方法和终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350669A (zh) * | 1999-05-18 | 2002-05-22 | 桑纳拉斯麦脱信托有限公司 | 用于鉴定程序代码真实性的方法和设备 |
US7447912B2 (en) * | 2000-03-27 | 2008-11-04 | Microsoft Corporation | Protecting digital goods using oblivious checking |
CN101431594A (zh) * | 2007-11-07 | 2009-05-13 | 富士施乐株式会社 | 信息处理装置和信息处理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319001C (zh) * | 2001-09-27 | 2007-05-30 | 雅虎公司 | 互联网关键字的解析方法及系统 |
CN100345078C (zh) * | 2004-07-09 | 2007-10-24 | 中国民生银行股份有限公司 | 计算机键盘信息干扰实现密码保护的方法 |
CN101923474B (zh) * | 2009-06-15 | 2013-10-30 | 联想(北京)有限公司 | 一种程序运行参数配置方法及计算机 |
-
2011
- 2011-11-14 CN CN201110359644.6A patent/CN102509049B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350669A (zh) * | 1999-05-18 | 2002-05-22 | 桑纳拉斯麦脱信托有限公司 | 用于鉴定程序代码真实性的方法和设备 |
US7447912B2 (en) * | 2000-03-27 | 2008-11-04 | Microsoft Corporation | Protecting digital goods using oblivious checking |
CN101431594A (zh) * | 2007-11-07 | 2009-05-13 | 富士施乐株式会社 | 信息处理装置和信息处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102509049A (zh) | 2012-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102509049B (zh) | 一种程序合法性验证方法和系统 | |
CN103677891B (zh) | 用于选择性软件回退的方法 | |
KR101740256B1 (ko) | 모바일 앱 무결성 보증 장치 및 방법 | |
US20200106775A1 (en) | Method, device, system for authenticating an accessing terminal by server, server and computer readable storage medium | |
US8881308B2 (en) | Method to enable development mode of a secure electronic control unit | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN111538517B (zh) | 一种服务器固件升级方法、系统及电子设备和存储介质 | |
US8250630B2 (en) | Detecting unauthorized computer access | |
TW201732669A (zh) | 受控的安全碼鑑認 | |
TW201516733A (zh) | 用以核對uefi認證變量變化之系統及方法 | |
CN103001936B (zh) | 一种第三方应用接口授权方法和系统 | |
JP5916737B2 (ja) | サービスとして信用できるデバイスクレーム | |
CN109617926A (zh) | 业务权限的控制方法、装置和存储介质 | |
AU2015390172B2 (en) | Usage control method and system for medical detection device and medical detection device | |
CN114065176A (zh) | 安全运算装置、安全运算方法、验证器及装置验证方法 | |
WO2013000439A1 (zh) | 安全策略脚本执行方法、装置以及安全策略系统 | |
US20140157368A1 (en) | Software authentication | |
CN103634328A (zh) | 用于网络平台认证服务器的认证方法、装置和系统 | |
CN110572396A (zh) | 一种功能使用授权的控制方法和系统 | |
WO2022083046A1 (zh) | 智能电表校验方法、装置、智能电表及计算机存储介质 | |
CN113168482A (zh) | 用于确保源码的可信性的方法 | |
CN111131144B (zh) | IoT设备管理方法、装置、服务器及存储介质 | |
CN112583594B (zh) | 数据处理方法、采集设备和网关、可信平台及存储介质 | |
CN112102078B (zh) | 区块链共识计算方法、装置、计算机设备及存储介质 | |
US9177123B1 (en) | Detecting illegitimate code generators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |