CN101261666B - 一种通过加密可执行程序文件实现软件版权保护的方法 - Google Patents

一种通过加密可执行程序文件实现软件版权保护的方法 Download PDF

Info

Publication number
CN101261666B
CN101261666B CN2008101036753A CN200810103675A CN101261666B CN 101261666 B CN101261666 B CN 101261666B CN 2008101036753 A CN2008101036753 A CN 2008101036753A CN 200810103675 A CN200810103675 A CN 200810103675A CN 101261666 B CN101261666 B CN 101261666B
Authority
CN
China
Prior art keywords
software
encrypted
code segment
protecting equipment
code
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
CN2008101036753A
Other languages
English (en)
Other versions
CN101261666A (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 Senselock Software 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 Senselock Software Technology Co Ltd filed Critical Beijing Senselock Software Technology Co Ltd
Priority to CN2008101036753A priority Critical patent/CN101261666B/zh
Publication of CN101261666A publication Critical patent/CN101261666A/zh
Application granted granted Critical
Publication of CN101261666B publication Critical patent/CN101261666B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种通过加密可执行程序文件实现软件版权保护的方法。本发明在应用程序发布时对可执行程序中的若干程序代码段进行加密处理,当程序运行到被加密部分时通过软件保护装置进行动态解密。由于解密密钥保存在软件保护装置中,且解密过程是在软件保护装置中进行,而软件保护装置是具有极高安全强度的硬件设备,难以破解或复制,因此没有软件保护装置将无法获得原始的代码而无法运行程序。本发明为软件的版权保护提供了一种简单、高效、安全的方法。

Description

一种通过加密可执行程序文件实现软件版权保护的方法
技术领域
本发明涉及软件版权保护技术,特别涉及一种通过加密可执行程序文件文件实现软件版权保护的方法。
背景技术
现代的软件保护装置,例如USB加密锁,采用高强度智能卡芯片和先进的密码学技术,具有一定的运算和存储能力,同时难以被破解和复制,在高强度软件版权保护中具有广泛的应用。
采用软件保护装置进行软件版权保护的通常的方法是将其视作一个与受保护软件并行的运算平台,将软件中的一部分功能转移到软件保护装置中实现,在软件运行时调用这些功能。软件破解者的目的是使得被保护软件在没有连接软件保护装置时也能正常工作,或者制造可以克隆软件保护装置功能的硬件装置。理想情况下,受保护软件的运行依赖于软件保护装置提供的预算功能,而破解者又无法复制软件保护装置,因此可以很好的保护软件版权。
但实际情况中,被移植到软件保护装置中软件功能模块必须具备一些要求才能有效的抵御破解者的攻击:
1.被移植的模块必须是软件实际有用的功能,否则破解者只要将该功能的调用跳过即可。
2.被移植的模块必须具有一定的复杂性,且应是非常见的算法,否则破解者很容易猜出其功能而用软件的方式替换掉。
3.被移植的模块的输入输出的数据空间必须足够大,否则破解者可以监测记录软件保护装置所有交换数据,构造输入输出的数据库,以软件的方式替代。
4.被移植的模块的代码量和运算量不能太大,这是因为软件保护装置的运算能力有限,移植过多的代码会严重影响软件执行的速度。
由此可见,要找到软件中满足上述要求的功能模块并非易事,通常要在安全强度和运行效率之间权衡。另外,由于软件保护装置和PC主机是完全不同的硬件运算平台,软件开发商需要将原先在PC上的功能在软件保护装置的开发平台上重新编程实现,具有一定的技术难度,因此提高了软件开发和维护成本。
发明内容
有鉴于此,本发明提出了一种利用软件保护装置加密应用程序的可执行程序文件进行软件版权保护的方法。在保护程序的代码同时无需进行代码移植,易于实现,同时具有较高的保护强度。
参见图1,通过加密可执行程序文件进行软件保护的方法,具体包括:
步骤101,软件开发商将受保护软件的可执行程序文件中的部分内容进行加密处理,记录加密处理信息,将加密密钥保存在软件保护装置中。加密处理信息可以以数据文件的形式保存在应用软件里,也可以存储到软件保护装置的数据区中。
步骤102,软件运行到被加密代码段时调用预设的接口函数,接口函数根据被加密代码段的信息,标记出被加密的代码段的起始地址和结束地址,读出被加密部分数据。
步骤103,软件将加密数据和可选的其它信息发送到软件保护装置中,软件保护装置对数据进行解密,将结果返回给软件,软件使用解密结果更新内存中的程序代码,继续执行。
根据本发明的一个方面,提供一种通过加密可执行程序文件实现软件保护的方法,其特征在于,该方法包括步骤:
A、对受保护的软件中的部分内容进行加密;
B、记录加密处理信息;
C、将加密密钥保存在软件保护装置中;
D、软件运行到被加密的代码段时,读出被加密部分数据;
E、将加密数据发送到软件保护装置中,软件保护装置对接收的加密数据进行解密;
F、将解密结果返回给软件,软件利用解密结果更新内存中的程序代码。
根据本发明的一个方面,其特征还在于,加密处理信息可以以数据文件的形式保存在软件中,或者保存到软件保护装置的数据区中。
根据本发明的一个方面,其特征还在于,步骤A中还包括:
A1、选取受保护软件中的多个代码段,标记各个代码段的起始位置和结束位置;
A2、计算各个代码段的长度;
A3、对所选代码段进行编号并加密;
A4、在被加密的代码段之前插入预设的用于调用解密接口的指令。
根据本发明的一个方面,其特征还在于,步骤B中的加密处理信息包括由多个加密记录信息组成的加密处理信息文件。
根据本发明的一个方面,其特征还在于,加密记录信息由代码段编号、代码段被加密的起始位置和长度,以及加密密钥编号构成。
根据本发明的一个方面,其特征还在于,步骤C中的加密密钥为多个密钥。
根据本发明的一个方面,其特征还在于,步骤C中在加密某个代码段时随机选取加密密钥。
根据本发明的一个方面,其特征还在于,步骤C中还包括:将加密密钥和加密处理信息文件存储到软件保护装置中并发布给授权的软件用户。
根据本发明的一个方面,其特征还在于,步骤D中还包括:
D1、软件运行到被加密代码段时调用预设的接口函数;
D2、接口函数根据被加密代码段的信息,标记出被加密的代码段的起始地址和结束地址,读出被加密部分数据。
根据本发明的一个方面,其特征还在于,软件运行到某个加密代码段时,执行预设的解密接口,将该代码段编号发送给软件保护装置,软件保护装置从加密处理信息文件中找到该代码段编号,返回代码段被加密的起始位置和长度。
根据本发明的一个方面,其特征还在于,步骤E中还包括:
E1、软件根据代码段被加密的起始位置和长度,从可执行程序文件中读取相应的加密数据,将读出的加密数据发送给软件保护装置;
E2、软件保护装置根据加密处理信息中加密密钥编号选择解密密钥,对加密数据进行解密,返回结果。
根据本发明的一个方面,其特征还在于,步骤F完成后继续程序的执行。
根据本发明的一个方面,其特征还在于,将同一加密代码段复制多份,分别由不同的加密密钥加密。
根据本发明的一个方面,其特征还在于,由软件保护装置随机选取其中任意一份加密代码段进行解密。
上述过程与软件的功能无关,对可执行程序中任意的代码段进行加密,易于实现自动化的软件保护方法,降低了软件保护的技术难度和开发成本。而使用基于硬件的软件保护装置,保证了密钥和加密处理信息,提高了版权保护的安全性。
附图说明
图1为本发明基于加密可执行程序文件实现软件保护方法的流程示意图。
图2为本发明实施例中基于加密可执行程序文件实现软件保护方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图2为本发明实施例中基于加密可执行程序文件实现软件保护方法的流程示意图。
步骤201,选取受保护软件的若干代码段,标记代码段的起始和结束位置并计算其长度,对所选代码段进行加密。加密密钥可以是多个,在加密某个代码段时随机选取加密密钥。在被加密的代码段之前插入预设的用于调用解密接口的指令。对上述代码段进行编号。代码段编号、代码段被加密的起始位置和长度,以及加密密钥编号构成一条加密记录信息,所有代码段的加密处理信息组合成加密处理信息文件。
步骤202,软件开发商将加密密钥和加密处理文件存储到软件保护装置中,发布给授权的软件用户。
步骤203,软件运行到某个加密代码段时,执行预设的解密接口,将该代码段编号发送给软件保护装置,软件保护装置从加密处理信息文件中找到该代码段编号,返回代码段被加密的起始位置和长度。
步骤204,软件根据代码段被加密的起始位置和长度从数据文件中读取相应的加密代码,发送给软件保护装置,后者根据加密处理信息中加密密钥编号选择解密密钥,对加密数据进行解密,返回结果。
步骤205,软件使用返回的解密数据更新内存中的代码段,继续程序的执行。
在实际应用中,可以将同一加密代码单元复制多份,由不同的加密密钥加密,由软件保护装置随机选取任意一块进行解密,软件根据不同的选择跳转到不同的代码段执行。这样可以有效的增加数据空间,使得破解者难以分析和复制输入输出数据。
综上所见,本发明提供了一种统一而便捷的利用软件保护装置进行软件版权保护的方法,极大的降低了一般的代码移植方法的技术难度和软件局限性,具有易于实施和高安全强度的优点。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种通过加密可执行程序文件实现软件保护的方法,其特征在于,该方法利用软件保护装置加密应用程序的可执行程序文件进行软件保护,在保护程序的代码同时无需进行代码移植,该方法包括步骤:
A、对受保护的软件中的部分代码段内容进行加密;
B、记录加密处理信息,加密处理信息包括由多个加密记录信息组成的加密处理信息文件,其中加密记录信息由代码段编号、代码段被加密的起始位置和长度,以及加密密钥编号构成;
C、将加密密钥保存在软件保护装置中;
D、软件运行到被加密的代码段时,读出被加密部分数据;
E、将加密数据发送到软件保护装置中,软件保护装置对接收的加密数据进行解密;其中,软件根据代码段被加密的起始位置和长度,从可执行程序文件中读取相应的加密数据,将读出的加密数据发送给软件保护装置;软件保护装置根据加密处理信息中加密密钥编号选择解密密钥,对加密数据进行解密,返回结果;
F、将解密结果返回给软件,软件利用解密结果更新内存中的程序代码;
G、继续软件程序的执行。
2.根据权利要求1所述的方法,其特征在于,加密处理信息可以以数据文件的形式保存在软件中,或者保存到软件保护装置的数据区中。
3.根据权利要求1所述的方法,其特征在于,步骤A中还包括:
A1、选取受保护软件中的多个代码段,标记各个代码段的起始位置和结束位置;
A2、计算各个代码段的长度;
A3、对所选代码段进行编号并加密;
A4、在被加密的代码段之前插入预设的用于调用解密接口的指令。
4.根据权利要求1所述的方法,其特征在于,步骤C中的加密密钥为多个密钥。
5.根据权利要求4所述的方法,其特征在于,步骤C中在加密某个代码段时随机选取加密密钥。
6.根据权利要求1所述的方法,其特征在于,步骤C中还包括:将加密密钥和加密处理信息文件存储到软件保护装置中并发布给授权的软件用户。
7.根据权利要求1-6所述的任一方法,其特征在于,步骤D中还包括:
D1、软件运行到被加密代码段时调用预设的接口函数;
D2、接口函数根据被加密代码段的信息,标记出被加密的代码段的起始地址和结束地址,读出被加密部分数据。
8.根据权利要求7所述的方法,其特征在于,软件运行到某个加密代码段时,执行预设的解密接口,将该代码段编号发送给软件保护装置,软件保护装置从加密处理信息文件中找到该代码段编号,返回代码段被加密的起始位置和长度。
9.根据权利要求1-8所述的方法,其特征在于,将同一加密代码段复制多份,分别由不同的加密密钥加密。
10.根据权利要求9所述的方法,其特征在于,由软件保护装置随机选取其中任意一份加密代码段进行解密。
CN2008101036753A 2008-04-10 2008-04-10 一种通过加密可执行程序文件实现软件版权保护的方法 Active CN101261666B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101036753A CN101261666B (zh) 2008-04-10 2008-04-10 一种通过加密可执行程序文件实现软件版权保护的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101036753A CN101261666B (zh) 2008-04-10 2008-04-10 一种通过加密可执行程序文件实现软件版权保护的方法

Publications (2)

Publication Number Publication Date
CN101261666A CN101261666A (zh) 2008-09-10
CN101261666B true CN101261666B (zh) 2010-07-21

Family

ID=39962119

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101036753A Active CN101261666B (zh) 2008-04-10 2008-04-10 一种通过加密可执行程序文件实现软件版权保护的方法

Country Status (1)

Country Link
CN (1) CN101261666B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571900B (zh) * 2009-06-01 2011-01-19 薛明 一种软件版权保护方法、设备和系统
CN102609666B (zh) * 2012-01-20 2014-07-30 飞天诚信科技股份有限公司 一种可执行程序加壳保护方法
CN102938046B (zh) * 2012-10-11 2015-08-26 杭州晟元芯片技术有限公司 一种基于静态加密存储动态解密运行的芯片存储体及代码保护方法
CN103425911B (zh) * 2013-08-07 2017-04-19 北京深思数盾科技股份有限公司 一种增强软件保护易用性的方法
CN105656655B (zh) * 2014-11-14 2019-07-23 华为技术有限公司 一种网络安全管理方法、装置,及系统
CN105426777B (zh) * 2015-11-17 2018-09-21 中科创达软件股份有限公司 一种动态链接库文件加密、解密方法及装置
CN105468940B (zh) * 2015-11-30 2019-01-01 北京深思数盾科技股份有限公司 软件保护方法及装置
CN105975813A (zh) * 2016-05-19 2016-09-28 福建创意嘉和软件有限公司 一种软件授权随机加密方法和装置
CN106534163B (zh) * 2016-12-05 2020-03-24 上海华测导航技术股份有限公司 一种接收机的检测方法
CN107066843A (zh) * 2017-03-31 2017-08-18 武汉斗鱼网络科技有限公司 一种对应用程序进行保护的方法及装置
US10642970B2 (en) * 2017-12-12 2020-05-05 John Almeida Virus immune computer system and method
CN109446757B (zh) * 2018-10-25 2022-03-15 石生花微电子(南京)有限公司 一种用于通用mcu程序保护的方法

Also Published As

Publication number Publication date
CN101261666A (zh) 2008-09-10

Similar Documents

Publication Publication Date Title
CN101261666B (zh) 一种通过加密可执行程序文件实现软件版权保护的方法
CN105426708B (zh) 一种Android系统的应用程序的加固方法
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
CN102890758B (zh) 一种保护可执行文件的方法及系统
JP5167348B2 (ja) ソフトウェア暗号化方法およびソフトウェア暗号解読方法およびソフトウェア暗号化装置およびソフトウェア暗号解読装置
CN110008745B (zh) 一种加密方法、计算机设备和计算机存储介质
CN104834868A (zh) 电子数据保护方法、装置及终端设备
CN101261664B (zh) 一种使用软件保护装置存储程序代码实现软件保护的方法
US9154295B2 (en) Method of generating a correspondence table for a cryptographic white box
CN104268444A (zh) 一种云OS Java源代码保护方法
CN106650327A (zh) 基于动态恢复so文件的Android应用加固方法
US20110083020A1 (en) Securing a smart card
CN111385084A (zh) 数字资产的密钥管理方法、装置及计算机可读存储介质
CN105468940A (zh) 软件保护方法及装置
CN100593788C (zh) 一种通过加密数据文件实现软件保护的方法
JP2007233426A (ja) アプリケーション実行装置
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
CN101710307A (zh) 一种数码设备的数据安全保护方法
CN100446019C (zh) 一种软件版权保护方法
CN102480353A (zh) 口令认证和密钥保护的方法
US9378395B2 (en) Method, a device and a computer program support for execution of encrypted computer code
CA2432445A1 (en) Method for storing encrypted data
CN110457872A (zh) 一种Android App应用资源的隐藏加固方法
CN102708069A (zh) 安卓系统中内存数据的保护方法
CN105426702A (zh) 基于安卓操作系统的应用程序加密解密方法和装置

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
ASS Succession or assignment of patent right

Owner name: BEIJING SHENSI SHUDUN SCIENCE + TECHNOLOGY CO., LT

Free format text: FORMER OWNER: BEIJING SENSELOCK SOFTWARE TECHNOLOGY CO., LTD.

Effective date: 20150119

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100086 HAIDIAN, BEIJING TO: 100872 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20150119

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

Patentee after: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

Address before: 100086 Beijing City, Haidian District Zhongguancun South Street No. 6 Zhucheng building block B room 1201

Patentee before: Beijing Senselock Software Technology Co.,Ltd.

C56 Change in the name or address of the patentee
CP03 Change of name, title or address

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 SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

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.

CP01 Change in the name or title of a patent holder