CN103186746B - 一种可执行文件的保护方法及系统 - Google Patents

一种可执行文件的保护方法及系统 Download PDF

Info

Publication number
CN103186746B
CN103186746B CN201310100171.7A CN201310100171A CN103186746B CN 103186746 B CN103186746 B CN 103186746B CN 201310100171 A CN201310100171 A CN 201310100171A CN 103186746 B CN103186746 B CN 103186746B
Authority
CN
China
Prior art keywords
data
instruction
access
software protecting
immediate
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
Application number
CN201310100171.7A
Other languages
English (en)
Other versions
CN103186746A (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.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield Technology 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 Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201310100171.7A priority Critical patent/CN103186746B/zh
Publication of CN103186746A publication Critical patent/CN103186746A/zh
Application granted granted Critical
Publication of CN103186746B publication Critical patent/CN103186746B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种可执行文件的保护方法及系统,所述方法包括以下步骤:在原始可执行文件中查找用于访问数据的数据访问指令;分析数据访问指令访问的数据是否为关键数据,如果是,则将关键数据存入软件保护装置并从原始可执行文件中清除;将原始可执行文件中访问关键数据的指令变换为用于从软件保护装置中读取关键数据的指令;将用于从软件保护装置中读取关键数据的指令注入到原始可执行文件中构成新的可执行文件。本发明的系统与方法相对应。通过本发明,将可执行文件的关键数据存入软件保护装置内,只有当这些数据被访问时才从软件保护装置内取出,增加了反编译和分析的难度,大大提高了可执行文件的安全性。

Description

一种可执行文件的保护方法及系统
技术领域
本发明涉及软件保护领域,特别涉及一种可执行文件的保护方法及系统。
背景技术
软件作为一种特殊的产品,由于其数字化的特征,从问世起就一直遭受盗版的困扰。盗版的存在不仅给软件开发者造成了巨大的损失,也极大的阻碍了整个软件行业的发展。可执行文件中的关键数据如敏感字符串、加密解密用的密钥等作为盗版者分析的可执行文件的重要资料,通过直接定位关键数据可以直接定位到关键算法处,分析可执行文件的保护逻辑,因此关键数据历来是保护的重点对象,目前对这些数据的纯软件保护方式的抗分析性较差,很容易被编译和分析出来,造成数据的泄露及破坏。
发明内容
本发明的目的是提供一种可执行文件的保护方法及系统,以解决现有技术中的可执行文件因关键数据采用纯软件保护方式而导致抗分析性差的问题。
为了实现上述目的,本发明提供了一种可执行文件的保护方法,包括以下步骤:
S101:在原始可执行文件中查找用于访问数据的数据访问指令;
S102:分析所述数据访问指令访问的数据是否为关键数据,如果是,则执行步骤S103;
S103:将所述关键数据存入软件保护装置并从原始可执行文件中清除;
S104:将原始可执行文件中访问所述关键数据的指令变换为用于从所述软件保护装置中读取所述关键数据的指令;
S105:将用于从所述软件保护装置中读取所述关键数据的指令注入到原始可执行文件中构成新的可执行文件。
作为优选,所述软件保护装置为独立物理形式的加密锁。
为了实现上述目的,本发明还提供了一种可执行文件的保护系统,包括软件保护装置、指令分析模块、数据分析模块、数据存储模块、指令变换模块和文件链接模块,其中,
所述指令分析模块用于在原始可执行文件中查找用于访问数据的数据访问指令;
所述数据分析模块用于分析所述指令分析模块查找到的数据访问指令访问的数据是否为关键数据;
所述数据存储模块用于当所述数据分析模块判定所述数据访问指令访问的数据是关键数据时,将所述关键数据存入软件保护装置并从原始可执行文件中清除;
所述指令变换模块用于将原始可执行文件中访问所述关键数据的指令变换为用于从所述软件保护装置中读取所述关键数据的指令;
所述文件链接模块用于将用于从所述软件保护装置中读取所述关键数据的指令注入到原始可执行文件中构成新的可执行文件。
作为优选,所述软件保护装置为独立物理形式的加密锁。
与现有技术相比,本发明的可执行文件的保护方法及系统具有以下有益效果:将可执行文件的关键数据存入软件保护装置内,只有当这些数据被访问时才从软件保护装置内取出,增加了反编译和分析的难度,大大提高了可执行文件的安全性。
附图说明
图1为本发明的可执行文件的保护方法的流程示意图;
图2为本发明的可执行文件的保护系统的结构框图;
图3为采用本发明的方法及系统处理过的可执行文件运行时的流程示意图;
图4为Windows操作系统中PE文件的结构示意图。
具体实施方式
下面结合附图对本发明的具体实施例进行详细说明。
图1为本发明的可执行文件的保护方法的流程示意图。如图1所示,本发明的可执行文件的保护方法包括以下步骤:
S101:在原始可执行文件中查找用于访问数据的数据访问指令;
S102:分析所述数据访问指令访问的数据是否为关键数据,如果是,则执行步骤S103;
S103:将所述关键数据存入软件保护装置并从原始可执行文件中清除;
S104:将原始可执行文件中访问所述关键数据的指令变换为用于从所述软件保护装置中读取所述关键数据的指令;
S105:将用于从所述软件保护装置中读取所述关键数据的指令注入到原始可执行文件中构成新的可执行文件。
其中,所述软件保护装置为独立物理形式的加密锁或其他硬件加密设备,用于存储关键数据,在可执行文件运行时为其提供安全保护功能。
图2为本发明的可执行文件的保护系统的结构框图。如图2所示,本发明的可执行文件的保护系统,包括软件保护装置6、指令分析模块1、数据分析模块2、数据存储模块3、指令变换模块4和文件链接模块5,其中,
指令分析模块1用于在原始可执行文件中查找用于访问数据的数据访问指令;
数据分析模块2用于分析指令分析模块1查找到的数据访问指令访问的数据是否为关键数据;
数据存储模块3用于当数据分析模块2判定所述数据访问指令访问的数据是关键数据时,将所述关键数据存入软件保护装置6并从原始可执行文件中清除;
指令变换模块4用于将原始可执行文件中访问所述关键数据的指令变换为用于从软件保护装置6中读取所述关键数据的指令;
文件链接模块5用于将用于从软件保护装置6中读取所述关键数据的指令注入到原始可执行文件中构成新的可执行文件。
其中,软件保护装置6为独立物理形式的加密锁或其他硬件加密设备,用于存储关键数据,在可执行文件运行时为其提供安全保护功能。
图3为采用本发明的方法及系统处理过的可执行文件运行时的流程示意图。如图3所示,采用本发明的方法及系统处理过的可执行文件运行时包括以下步骤:
S301:可执行文件正常运行;
S302:可执行文件运行到访问关键数据的地址处;
S303:从软件保护装置6中取出关键数据;
S304:执行处理关键数据的指令。
图4为Windows操作系统中PE文件的结构示意图。下面以微软Windows系统下32位的PE文件为例,对本发明的可执行文件的保护方法及系统进行具体说明。PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。PE(PortableExecute)文件被称为可移植的执行体,常见的EXE、DLL、OCX、SYS、COM都是PE文件。
PE文件结构如图4所示,主要包括区段(Section)、区段表(SectionTable)、PE头部(PEHeader)和Dos头部(DosHeader)。PE文件各个部分的详细定义可参阅微软Windows系统的联机帮助,在此不做过多介绍。
指令分析模块1,根据文件的DosHeader的e_lfanew找到IMAGE_NT_HEADER数据结构,根据IMAGE_NT_HEADER中的IMAGE_FILE_HEADER中的NumberOfSections找到文件中的区块表的数目,根据IMAGE_NT_HEADER中的数据结构IMAGE_OPTIONAL_HEADER32中的ImageBase找到可执行文件的默认装入地址,IMAGE_FILE_HEADER后面为区块表,根据IMAGE_SECTION_HEADER中的Characteristics中是否包含IMAGE_SCN_CNT_CODE来判断是否是代码段,根据代码段中的VirtualAddress和VirtualSize以及IMAGE_OPTIONAL_HEADER32中的ImageBase来对指令进行分析,如果指令的机器码为“push”,“mov”,“lea”,后面的操作数为立即数,如果该立即数和某些算法的特征常量符合,或者该立即数在进程中代表有效的数据内存地址,则该指令为有效的数据访问指令,记录对数据访问的指令的地址。
数据分析模块2,根据指令分析模块1记录数据访问指令的地址,对于数据访问指令中的立即数,如果该立即数和加密算法的中的特征值匹配,则直接保存该立即数,如果数据访问指令的立即数为有效的内存地址,则读取内存地址处的数据,并进行保存。
数据存储模块3,用于将数据分析模块2分析的关键数据存入保护装置。
指令变换模块4,用于将原始可执行文件中访问所述关键数据的指令替换为用于从软件保护装置6中读取所述关键数据的指令,后面附加上处理数据的指令,需要访问关键数据时,由用于读取所述关键数据的指令取出后,继续执行处理关键数据的指令。
文件链接模块5,用于将用于从软件保护装置6中读取所述关键数据的指令注入到原始可执行文件中构成新的可执行文件,供运行时使用。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (4)

1.一种可执行文件的保护方法,其特征在于,包括以下步骤:
S101:在原始可执行文件中查找用于访问数据的数据访问指令;
S102:分析所述数据访问指令访问的数据是否为有效的内存地址或者是否为与加密算法中的特征值相匹配的立即数,如果是,则执行步骤S103;
S103:将所述立即数或所述内存地址处的数据存入软件保护装置并从原始可执行文件中清除;
S104:将原始可执行文件中访问所述立即数或所述内存地址的指令变换为用于从所述软件保护装置中读取所述立即数或原所述内存地址处的所述数据的指令;
S105:将用于从所述软件保护装置中读取所述立即数或原所述内存地址处的所述数据的指令注入到原始可执行文件中构成新的可执行文件。
2.根据权利要求1所述的可执行文件的保护方法,其特征在于,所述软件保护装置为独立物理形式的加密锁。
3.一种可执行文件的保护系统,其特征在于,包括软件保护装置、指令分析模块、数据分析模块、数据存储模块、指令变换模块和文件链接模块,其中,
所述指令分析模块用于在原始可执行文件中查找用于访问数据的数据访问指令;
所述数据分析模块用于分析所述指令分析模块查找到的数据访问指令访问的数据是否为有效的内存地址或者是否为与加密算法中的特征值相匹配的立即数;
所述数据存储模块用于当所述数据分析模块判定所述数据访问指令访问的数据是有效的内存地址或者是与加密算法中的特征值相匹配的立即数时,将所述立即数或所述内存地址处的数据存入软件保护装置并从原始可执行文件中清除;
所述指令变换模块用于将原始可执行文件中访问所述立即数或所述内存地址的指令变换为用于从所述软件保护装置中读取所述立即数或原所述内存地址处的所述数据的指令;
所述文件链接模块用于将用于从所述软件保护装置中读取所述立即数或原所述内存地址处的所述数据的指令注入到原始可执行文件中构成新的可执行文件。
4.根据权利要求3所述的可执行文件的保护系统,其特征在于,所述软件保护装置为独立物理形式的加密锁。
CN201310100171.7A 2013-03-26 2013-03-26 一种可执行文件的保护方法及系统 Active CN103186746B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310100171.7A CN103186746B (zh) 2013-03-26 2013-03-26 一种可执行文件的保护方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310100171.7A CN103186746B (zh) 2013-03-26 2013-03-26 一种可执行文件的保护方法及系统

Publications (2)

Publication Number Publication Date
CN103186746A CN103186746A (zh) 2013-07-03
CN103186746B true CN103186746B (zh) 2016-05-18

Family

ID=48677909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310100171.7A Active CN103186746B (zh) 2013-03-26 2013-03-26 一种可执行文件的保护方法及系统

Country Status (1)

Country Link
CN (1) CN103186746B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104517044B (zh) * 2013-09-27 2019-02-26 腾讯科技(深圳)有限公司 一种防止二进制文件被反编译的方法和装置
CN104572713A (zh) * 2013-10-18 2015-04-29 英业达科技有限公司 文件搜寻保护系统及其方法
CN105740706B (zh) * 2015-12-25 2019-05-07 哈尔滨安天科技股份有限公司 基于api名称和立即数的启发式样本检测方法及系统
CN106096404B (zh) * 2016-08-18 2019-05-21 北京深思数盾科技股份有限公司 一种数据保护方法及系统
CN108133126B (zh) * 2017-12-04 2021-04-06 北京奇虎科技有限公司 一种安卓应用的加固方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102890758A (zh) * 2012-10-11 2013-01-23 北京深思洛克软件技术股份有限公司 一种保护可执行文件的方法及系统
CN102930185A (zh) * 2012-11-28 2013-02-13 中国人民解放军国防科学技术大学 运行时程序安全关键数据的完整性验证方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102890758A (zh) * 2012-10-11 2013-01-23 北京深思洛克软件技术股份有限公司 一种保护可执行文件的方法及系统
CN102930185A (zh) * 2012-11-28 2013-02-13 中国人民解放军国防科学技术大学 运行时程序安全关键数据的完整性验证方法及装置

Also Published As

Publication number Publication date
CN103186746A (zh) 2013-07-03

Similar Documents

Publication Publication Date Title
CN103186746B (zh) 一种可执行文件的保护方法及系统
Balakrishnan et al. Code obfuscation literature survey
CN105787305B (zh) 一种抵抗符号执行和污点分析的软件保护方法
US7644440B2 (en) Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context
US11822654B2 (en) System and method for runtime detection, analysis and signature determination of obfuscated malicious code
CN105426708A (zh) 一种Android系统的应用程序的加固方法
CN106650327A (zh) 基于动态恢复so文件的Android应用加固方法
CN102890758A (zh) 一种保护可执行文件的方法及系统
US8775826B2 (en) Counteracting memory tracing on computing systems by code obfuscation
CN110096853A (zh) 基于Mono的Unity安卓应用加固方法、存储介质
CN105653905A (zh) 一种基于api安全属性隐藏与攻击威胁监控的软件保护方法
Balachandran et al. Software code obfuscation by hiding control flow information in stack
Alrehily et al. Computer security and software watermarking based on return-oriented programming
RU2467389C1 (ru) Способ защиты программно-информационного обеспечения от несанкционированного использования
Zhang et al. Cape: compiler-aided program transformation for htm-based cache side-channel defense
EP2674892B1 (en) A method, a device and a computer program support for execution of encrypted computer code
Péchoux et al. A categorical treatment of malicious behavioral obfuscation
Jauernig et al. Lobotomy: An architecture for jit spraying mitigation
CN104866740A (zh) 一种防静态分析文件的方法及装置
JPWO2019049217A1 (ja) システム、改変装置、方法及びプログラム
EP3040895A1 (en) System and method for protecting a device against return-oriented programming attacks
KR102258408B1 (ko) 반환 명령어 난독화 방법 및 난독화된 반환 명령어 실행방법
Aga Thwarting Advanced Code-reuse Attacks
Zhang et al. COVER: Enhancing virtualization obfuscation through dynamic scheduling using flash controller-based secure module
Shinagawa Segmentshield: Exploiting segmentation hardware for protecting against buffer overflow attacks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP02 Change in the address of a patent holder

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Patentee after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.