CN102855439A - 一种执行文件自校验方法及装置 - Google Patents
一种执行文件自校验方法及装置 Download PDFInfo
- Publication number
- CN102855439A CN102855439A CN2012102607217A CN201210260721A CN102855439A CN 102855439 A CN102855439 A CN 102855439A CN 2012102607217 A CN2012102607217 A CN 2012102607217A CN 201210260721 A CN201210260721 A CN 201210260721A CN 102855439 A CN102855439 A CN 102855439A
- Authority
- CN
- China
- Prior art keywords
- execute file
- eigenwert
- self checking
- encryption
- self
- 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
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种执行文件自校验方法,在编写执行程序代码时,在Main函数前,添加预设的自校验函数,运行该执行文件时,先调用该自校验函数,若该自校验函数返回成功,则继续运行;失败,则程序结束运行。该执行文件自校验方法还包括:对所述执行程序代码编译生成的执行文件进行外壳加密,基于此外壳加密数据执行上述自校验函数。本发明还提供了一种用于上述执行文件自校验方法的自校验装置,使用本发明的优点在于不仅可以屏蔽病毒及防止木马攻击,在运行前还能验证是否为开发商所开发的程序从而防止盗版及验证是否已经被篡改,且易于使用及方便操作。
Description
技术领域
本发明涉及软件保护技术领域,更具体地说,涉及一种执行文件自校验方法及装置。
背景技术
为了防止软件的非法复制、盗版及攻击,保护软件开发商的利益,就必须对软件进行你加密保护。而软件防病毒、防攻击及防修改一直是计算机安全领域的一个重要课题,在众多的软件保护技术中,软件加壳技术是软件保护的重要手段,软件加壳技术是指通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(包括压缩、加密可执行程序文件),以达到加密可执行文件的目的。当被加壳的文件运行时,外壳程序先被运行,然后由这个外壳程序将原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序,这个过程完全隐蔽,在内存中自动完成,用户不知道其具体运行过程。但是,目前软件加壳技术往往是为了保护执行文件防止被攻击或改动,或将执行文件进行压缩以方便使用,并不具有自我校验功能,当运行该软件时,无法判断所运行的执行文件是否已经被病毒攻击或被篡改。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述技术问题,提供一种执行文件自校验方法及装置,使执行文件在运行之前,自动判断是否被攻击或篡改。
本发明解决其技术问题所采用的技术方案如下所述。
本发明所述的执行文件自校验方法中,包括设置执行文件与自校验,其中,
设置执行文件包括:
S1)在编写执行程序代码时,在Main函数前,加入预设的自校验函数,并将此执行程序代码编译生成执行文件;
S2)对上述执行文件进行外壳加密,将外壳加密数据添加在所述执行文件尾部;
自校验包括:
S3)运行执行文件时,先调用预设的自校验函数,利用上述外壳加密数据判断该执行文件是否为原始的执行文件,是,程序继续运行;否,程序则结束运行。
其中,步骤S2)中外壳加密过程包括:
A1)对特征值进行加密,将特征值加密数据添加在所述执行文件尾部,其中所述特征值预先设置并编写入所述执行文件内部;所述特征值包括软件开发商名称、执行文件名称及版本号;
A2)利用MD5加密所述执行程序的全部内容及所述特征值,将MD5加密数据添加在所述特征值加密数据后,所述MD5加密数据大小为16字节。
因此,所述外壳加密数据包括特征值加密数据、所述执行程序的全部内容及所述特征值的MD5加密数据。
本发明所述的执行文件自校验方法中,所述自校验函数的执行过程包括:
B1)从硬盘把所述执行文件读入内存,计算所述执行文件除尾部16字节外的内容的MD5值;
B2)判断上述计算结果是否与所述执行文件的尾部16字节相同,否,返回失败;是,则执行下述步骤;
B3)解密所述执行文件后除尾部16字节外的特征值加密数据,判断解密结果是否与特征值一致,是,返回成功;否,返回失败。
本发明还提供了一种执行文件自校验装置,包括执行文件设置单元及自校验单元,其中,所述执行文件设置单元包括:自校验函数设置单元及外壳加密单元,所述自校验函数设置单元用于对在执行程序代码前加入自校验函数,并将此执行程序代码编译成执行文件;所述外壳加密单元用于对所述执行文件进行外壳加密,使所述执行文件尾部带有外壳加密数据;所述自校验单元,用于调用所述执行文件中的自校验函数,并判断该执行文件是否与原始的执行文件一致。
实施本发明的一种执行文件自保护方法及装置,具有以下有益效果:1)屏蔽病毒及木马攻击;2)能验证执行文件是否为软件开发商所开发的程序,从而防止盗版;3)成本低、容易实现及使用方便。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例中执行文件自校验方法的流程示意图;
图2是本发明实施例中执行文件自校验装置的结构示意图;
图3是本发明实施例中执行文件自校验装置中的外壳加密单元的结构示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
在本发明的第一实施例中所述的执行文件自校验方法中,首先对执行文件进行设置,包括:在编写执行程序代码时,在Main函数前,添加一个预设的自保护函数F,若该函数F返回成功,则执行文件正常运行;反之,若返回失败,则执行文件结束运行。然后,对所述执行程序代码编译生成的执行文件进行外壳加密,将外壳加密数据添加在上述执行文件尾部,具体包括:
步骤一,对特征值进行加密,将特征值加密数据添加在所述执行文件尾部;
其中特征值是由软件开发商根据需要预先设置,可包含软件开发商名称、执行程序名称及版本号,同时也可以加入使用该执行文件的用户的个人信息,在本实施例中,假定特征值为100字节,该特征值编写入执行文件内部。
步骤二,利用MD5加密所述执行程序的全部内容及所述特征值,将该MD5加密数据添加在所述特征值加密数据后,该MD5加密数据大小为16字节。MD5是指信息-摘要算法5,为计算机安全领域广泛使用的散列函数,能将任意长度的字节串变成16字节。
上述外壳加密过程利用另一个加密程序实现,如图1所示,为本实施例中所述经设置后的执行文件自校验方法的流程示意图,当运行该执行文件时,其自校验包括:
步骤101,调用自校验函数F,从硬盘把所述执行文件读入内存;
步骤102,计算所述执行文件除尾部16字节外的内容的MD5值;
步骤103,判断上述MD5值是否与所述执行文件的尾部16字节相同,否,返回失败,程序结束运行;是,则执行下述步骤;
步骤104,解密所述执行文件后除尾部16字节外的特征值加密数据;
步骤105,判断上述解密结果是否与预先设置的特征值(100字节)一致,是,程序正常运行;否,返回失败,结束运行。
其中,进行自校验步骤105时,需读取预先设置的特征值,由于此特征值编写入执行程序内部,无需从执行文件外部获取该特征值,从而实现无需借助外部工具的自校验。
在该自校验的过程中,对执行文件进行了外壳加密,使该执行文件自校验方法防止病毒及木马攻击,不仅如此,更能在运行时能检查该执行文件是否已经被病毒攻击或恶意篡改,通过对特征值的判断,还能验证该执行文件是否为软件开发商所开发的软件,另外,该方法成本很低,用户使用也十分方便,软件开发商管理其开发的软件也很方便。
上述实施例中的自校验经过两种分别对MD5值及特征值的校验,两次校验会增加校验时间,因而导致执行文件开始运行的时间较长,考虑这方面的因素,可以只选择其中一种来进行校验,当然,这是基于节约时间的考虑。在实际使用上述实施例中的执行文件自校验方法时,可权衡考虑时间、安全等因素来选择。当然本发明所述的外壳加密过程不限于上述实施例中所述的加密过程,通过其他加密方法或步骤而产生外壳加密数据,然后将此外壳加密数据添加在所述执行文件尾部也是可行的,当采用其他方法产生加密数据时,也对应的修改自校验函数F的执行步骤,以此来实现执行文件的自校验。
如图2所示,本发明实施例中还公开了一种执行文件自校验装置,包括:
执行文件设置单元(1)及自校验单元(2),其中,所述执行文件设置单元(1)包括自校验函数设置单元(11)及外壳加密单元(12),其中所述自校验函数设置单元(11)用于对在执行程序代码前加入自校验函数F,并将此执行程序代码编译成执行文件;所述外壳加密单元(12)用于对所述执行文件进行外壳加密,使所述执行文件尾部带有外壳加密数据,该外壳加密单元独立于所述执行文件。
所述自校验单元(2),用于调用所述执行文件中的自校验函数F,并判断该执行文件是否与原始的执行文件一致,是所述执行文件实现自校验的重要组成部分。
在本实施例中的执行文件自校验装置,如图3所示,所述外壳加密单元(12)还进一步包括:特征值加密单元(121),用于对特征值进行加密,并将特征值加密数据添加在所述执行文件尾部,所述特征值加密数据是通过加密算法对预先设置的特征值(100字节)加密而来;MD5加密单元(122),用于使用MD5加密所述执行程序的全部内容及所述特征值,并将MD5加密数据添加在上述特征值加密数据后。
本实施例中执行文件自校验装置,如图2所示,所述自校验单元(2)还进一步包括:MD5校验单元(21),用于计算所述执行文件除尾部16字节外的内容的MD5值并判断其是否所述执行文件尾部16字节相同;特征值校验单元(22),用于解密所述执行文件后除尾部16字节外的特征值加密数据,并判断解密结果是否与预先设置的特征值一致。而所述MD5校验单元(21)及所述特征值校验单元(22)可根据需要只包括一种或同时包括两种。
以上所述,对于本领域的普通技术人员来说,可以根据本发明的技术方案和技术构思做出其他各种相应的改变和变形,而所有这些改变和变形都应属于本发明的权利要求的保护范围。
Claims (7)
1. 一种执行文件自校验方法,其特征在于,所述执行文件自校验方法包括设置执行文件与自校验,其中,
设置执行文件包括:
S1)在编写执行程序代码时,在Main函数前,加入预设的自校验函数,并将此执行程序代码编译生成执行文件;
S2)对上述执行文件进行外壳加密,将外壳加密数据添加在所述执行文件尾部;
自校验包括:
S3)运行执行文件时,先调用预设的自校验函数,利用上述外壳加密数据判断该执行文件是否为原始的执行文件,是,程序继续运行;否,程序则结束运行。
2.如权利要求1所述的执行文件自校验方法,其特征在于,步骤S2)中外壳加密过程包括:
A1)对特征值进行加密,将特征值加密数据添加在所述执行文件尾部,其中所述特征值预先设置并编写入所述执行文件内部;所述特征值包括软件开发商名称、执行文件名称及版本号;
A2)利用MD5加密所述执行程序的全部内容及所述特征值,将MD5加密数据添加在所述特征值加密数据后,所述MD5加密数据大小为16字节。
3.如权利要求2所述的执行文件自校验方法,其特征在于,所述外壳加密数据包括特征值加密数据、所述执行程序的全部内容及所述特征值的MD5加密数据。
4.如权利要求1所述的执行文件自校验方法,其特征在于,步骤S3)中所述自校验函数的执行过程包括:
B1)从硬盘把所述执行文件读入内存,计算所述执行文件除尾部16字节外的内容的MD5值;
B2)判断上述计算结果是否与所述执行文件的尾部16字节相同,否,返回失败;是,则执行下述步骤;
B3)解密所述执行文件后除尾部16字节外的特征值加密数据,判断解密结果是否与特征值一致,是,返回成功;否,返回失败。
5.一种执行文件自校验装置,其特征在于,包括执行文件设置单元(1)及自校验单元(2),其中,
所述执行文件设置单元(1)包括:自校验函数设置单元(11)及外壳加密单元(12),所述自校验函数设置单元(11)用于对在执行程序代码前加入自校验函数,并将此执行程序代码编译成执行文件;所述外壳加密单元(12)用于对所述执行文件进行外壳加密,使所述执行文件尾部带有外壳加密数据;
所述自校验单元(2),用于调用所述执行文件中的自校验函数,并判断该执行文件是否与原始的执行文件一致。
6.如权利要求5所述的执行文件自校验装置,其特征在于,所述外壳加密单元(12)包括:
特征值加密单元(121),用于对特征值进行加密,并将特征值加密数据添加在所述执行文件尾部;
MD5加密单元(122),用于使用MD5加密所述执行程序的全部内容及所述特征值,并将MD5加密数据添加在上述特征值加密数据后。
7.如权利要求5所述的执行文件自校验装置,其特征在于,所述自校验单元(2)还包括:
MD5校验单元(21),用于计算所述执行文件除尾部16字节外的内容的MD5值并判断其是否所述执行文件尾部16字节相同;
特征值校验单元(22),用于解密所述执行文件后除尾部16字节外的特征值加密数据,并判断解密结果是否与预先设置的特征值一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210260721.7A CN102855439B (zh) | 2012-07-26 | 2012-07-26 | 一种执行文件自校验方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210260721.7A CN102855439B (zh) | 2012-07-26 | 2012-07-26 | 一种执行文件自校验方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102855439A true CN102855439A (zh) | 2013-01-02 |
CN102855439B CN102855439B (zh) | 2018-05-01 |
Family
ID=47402022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210260721.7A Active CN102855439B (zh) | 2012-07-26 | 2012-07-26 | 一种执行文件自校验方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102855439B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573490A (zh) * | 2013-10-29 | 2015-04-29 | 桂林电子科技大学 | Android平台上已安装软件保护方法 |
CN105869309A (zh) * | 2016-03-24 | 2016-08-17 | 广州广电运通信息科技有限公司 | 驱动模块内存数据监测方法及装置 |
CN107609359A (zh) * | 2017-09-30 | 2018-01-19 | 北京深思数盾科技股份有限公司 | 用于保护软件的方法和系统 |
CN110071782A (zh) * | 2019-04-12 | 2019-07-30 | 广州小鹏汽车科技有限公司 | 报文的处理方法和处理装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1621992A (zh) * | 2004-12-20 | 2005-06-01 | 四川大学 | 一种软件版权保护的方法 |
WO2007123492A1 (en) * | 2006-04-25 | 2007-11-01 | Khee Seng Chua | Method of safeguarding against malicious software (malware) |
CN101777108A (zh) * | 2010-01-22 | 2010-07-14 | 深圳创维数字技术股份有限公司 | 一种可执行exe文件的加密方法 |
CN101901313A (zh) * | 2010-06-10 | 2010-12-01 | 中科方德软件有限公司 | 一种Linux文件保护系统及方法 |
CN102314578A (zh) * | 2011-09-26 | 2012-01-11 | 浪潮(北京)电子信息产业有限公司 | 一种实现软件保护的系统及方法 |
-
2012
- 2012-07-26 CN CN201210260721.7A patent/CN102855439B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1621992A (zh) * | 2004-12-20 | 2005-06-01 | 四川大学 | 一种软件版权保护的方法 |
WO2007123492A1 (en) * | 2006-04-25 | 2007-11-01 | Khee Seng Chua | Method of safeguarding against malicious software (malware) |
CN101777108A (zh) * | 2010-01-22 | 2010-07-14 | 深圳创维数字技术股份有限公司 | 一种可执行exe文件的加密方法 |
CN101901313A (zh) * | 2010-06-10 | 2010-12-01 | 中科方德软件有限公司 | 一种Linux文件保护系统及方法 |
CN102314578A (zh) * | 2011-09-26 | 2012-01-11 | 浪潮(北京)电子信息产业有限公司 | 一种实现软件保护的系统及方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573490A (zh) * | 2013-10-29 | 2015-04-29 | 桂林电子科技大学 | Android平台上已安装软件保护方法 |
CN105869309A (zh) * | 2016-03-24 | 2016-08-17 | 广州广电运通信息科技有限公司 | 驱动模块内存数据监测方法及装置 |
CN107609359A (zh) * | 2017-09-30 | 2018-01-19 | 北京深思数盾科技股份有限公司 | 用于保护软件的方法和系统 |
CN107609359B (zh) * | 2017-09-30 | 2019-05-03 | 北京深思数盾科技股份有限公司 | 用于保护软件的方法和系统 |
CN110071782A (zh) * | 2019-04-12 | 2019-07-30 | 广州小鹏汽车科技有限公司 | 报文的处理方法和处理装置 |
CN110071782B (zh) * | 2019-04-12 | 2022-03-18 | 广州小鹏汽车科技有限公司 | 报文的处理方法和处理装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102855439B (zh) | 2018-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
JP6227772B2 (ja) | 動的ライブラリを保護する方法及び装置 | |
CN102760219B (zh) | 一种Android平台软件保护系统、方法及设备 | |
EP2795829B1 (en) | Cryptographic system and methodology for securing software cryptography | |
CA3023939C (en) | Method and apparatus for dynamic executable verification | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
US20170116410A1 (en) | Software protection | |
CN104318135B (zh) | 一种基于可信执行环境的Java代码安全动态载入方法 | |
CN107169324A (zh) | 一种基于动态加解密的Android应用加固方法 | |
US9298947B2 (en) | Method for protecting the integrity of a fixed-length data structure | |
CN103530535A (zh) | 一种Android平台应用程序保护的加脱壳方法 | |
CN104298932A (zh) | 一种so文件的调用方法及装置 | |
CN102576391A (zh) | 嵌入在shell代码中的软件许可 | |
Kim et al. | Design and performance evaluation of binary code packing for protecting embedded software against reverse engineering | |
KR100973733B1 (ko) | 메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크 | |
US20170242986A1 (en) | Method and system for providing cloud-based application security service | |
CN107103214A (zh) | 一种应用于Android系统的应用程序反调试方法及装置 | |
US9251098B2 (en) | Apparatus and method for accessing an encrypted memory portion | |
CN102855439A (zh) | 一种执行文件自校验方法及装置 | |
Lim et al. | Structural analysis of packing schemes for extracting hidden codes in mobile malware | |
KR101638257B1 (ko) | 애플리케이션의 소스 코드 보호 방법 및 이를 수행하는 장치 | |
KR101749209B1 (ko) | 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치 | |
CN104504310A (zh) | 基于壳技术的软件保护方法和装置 | |
CN111522555B (zh) | apk文件的加固方法、解密方法及相关装置 | |
Xu et al. | Toward a secure android software protection system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |