CN101261664A - 一种使用软件保护装置存储程序代码实现软件保护的方法 - Google Patents

一种使用软件保护装置存储程序代码实现软件保护的方法 Download PDF

Info

Publication number
CN101261664A
CN101261664A CNA200810103665XA CN200810103665A CN101261664A CN 101261664 A CN101261664 A CN 101261664A CN A200810103665X A CNA200810103665X A CN A200810103665XA CN 200810103665 A CN200810103665 A CN 200810103665A CN 101261664 A CN101261664 A CN 101261664A
Authority
CN
China
Prior art keywords
software
protecting equipment
code segment
software protecting
segment data
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
Application number
CNA200810103665XA
Other languages
English (en)
Other versions
CN101261664B (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
SHENSILUOKE DATA PROTECTION CENTER BEIJING
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 SHENSILUOKE DATA PROTECTION CENTER BEIJING filed Critical SHENSILUOKE DATA PROTECTION CENTER BEIJING
Priority to CN200810103665XA priority Critical patent/CN101261664B/zh
Publication of CN101261664A publication Critical patent/CN101261664A/zh
Application granted granted Critical
Publication of CN101261664B publication Critical patent/CN101261664B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明提出了一种使用软件保护装置存储应用程序代码进行软件保护的方法。本发明将可执行程序中的部分机器指令或脚本语言存储在软件保护装置中,在程序运行时动态地从软件保护装置中取出并在PC上执行,在保护程序的代码同时无需进行代码移植,易于实现。同时由于受保护代码是在PC上执行,因此不影响程序的运行效率,可以对程序中多段代码进行存储保护,提高了软件的保护强度。本发明为软件的保护提供了一种简单、高效、安全的方法。

Description

一种使用软件保护装置存储程序代码实现软件保护的方法
技术领域
本发明涉及软件保护技术,特别涉及一种使用软件保护装置存储程序代码实现软件保护的方法。
背景技术
软件保护装置是实现软件安全保护和版权保护的主要手段。软件保护装置特指一种附加在计算机接口(比如,USB接口、串口、并口等接口)上的硬件设备,对运行在计算机上的特定的软件进行软件安全保护和版权保护。现代的软件保护装置,例如USB加密锁,采用高强度智能卡芯片和先进的密码学技术,具有一定的运算和存储能力,同时难以被破解和复制,在高强度软件版权保护中具有广泛的应用。
采用软件保护装置进行软件保护的通常的方法是将其视作一个与受保护软件并行的运算平台,将软件中的一部分功能移植到软件保护装置中实现,在软件运行时调用这些功能。软件破解者的目的是使得被保护软件在没有连接软件保护装置时也能正常工作,或者制造可以克隆软件保护装置功能的硬件装置。理想情况下,受保护软件的运行依赖于软件保护装置提供的预算功能,而破解者又无法复制软件保护装置,因此可以很好的保护软件。
为了达到一定的保护强度,被移植的功能应该是一定复杂性、且非常见的算法,而且输入输出的数据空间必须足够大,同时又适合在软件保护装置中有限的存储和计算条件下运行。在实际情况中要找到软件中满足上述要求的功能模块并非易事,通常要在安全强度和运行效率之间权衡。另外,由于软件保护装置和PC主机是完全不同的硬件运算平台,软件开发商需要将原先在PC上的功能在软件保护装置的开发平台上重新编程实现,具有一定的技术难度,因此提高了软件开发和维护成本。
发明内容
有鉴于此,本发明提出了一种使用软件保护装置存储应用程序代码进行软件保护的方法。本发明将可执行程序中的部分机器指令或脚本语言存储在软件保护装置中,在程序运行时动态的从软件保护装置中取出并在PC上执行,在保护程序的代码同时无需进行代码移植,易于实现。同时由于受保护代码是在PC上执行,因此不影响程序的运行效率,可以对程序中多段代码进行存储保护,提高了软件的保护强度。
参见图1,利用软件保护装置存储程序代码进行软件保护的方法,具体包括:
步骤101,从受保护软件的可执行程序文件中选取若干代码段,将代码段数据和起始地址存储到软件保护装置中,擦除代码段内容,并在代码段起始处写入调用软件保护装置的指令。
步骤102,软件运行到被保护代码部分时执行预先写入的调用软件保护装置的指令,计算被保护代码段的起始地址,将其发送到软件保护装置中。软件保护装置根据被保护代码段的起始地址找到已存储的代码段数据,返回给软件。
步骤103,软件分配一块内存,将软件保护装置返回的代码段数据存储到该内存中,调用其中的入口函数实现受保护功能,完成后擦除并释放该块内存。
在上述过程中,为了进一步提高软件保护强度,可以采用以下措施:
1.被存储的代码以密文形式从软件保护装置发送到软件,须解密后才可被执行,因此防止了破解者通过监控和记录通信数据获得被存储代码的方法。
2.进一步,解密密钥是软件与软件保护装置协商建立的动态会话密钥,保证了每次取回的代码数据密文都不相同。
3.被存储的代码中可以包含对软件保护装置的再次调用,因此软件要正常运行,首先要从软件保护装置中读取被存储代码,而在执行该段代码时仍需要调用软件保护装置的功能,这种二次调用方式可以有效的防止破解者复制被存储代码。
4.进一步,在上述二次调用软件保护装置功能时传入的参数是由软件保护装置在返回该段代码时动态生成的,软件保护装置在处理二次调用时检查传入参数的合法性,这样保证了软件每次执行的被移植代码是不同的,并且与软件保护装置结合紧密。
根据本发明的一个方面,提供一种使用软件保护装置实现软件保护的方法,其特征在于,该方法包括步骤:
A、将受保护软件的可执行程序的若干段代码段数据和起始地址存储到软件保护装置中;
B、在受保护软件中擦除上述代码段数据;
C、在代码段起始位置处写入调用软件保护装置的指令;
D、当软件运行到某个已转移存储到软件保护装置中的被保护代码段时,将所述代码段的起始地址发送给软件保护装置;
E、软件保护装置返回相应的代码段数据;
F、软件将代码段数据存储到内存中,并执行该代码段数据。
根据本发明的一个方面,其特征还在于,在步骤F之后还包括步骤:
G、执行完成后擦除该段内存数据。
根据本发明的一个方面,其特征还在于,在步骤D中还包括:通过执行预先写入的调用软件保护装置的指令,计算被保护代码段的起始地址,然后将其发送到软件保护装置中。
根据本发明的一个方面,其特征还在于,在步骤E中还包括:软件保护装置根据被保护代码段的起始地址找到已存储的代码段数据,返回给软件。
根据本发明的一个方面,其特征还在于,在步骤F中还包括:软件首先分配一块内存,然后将软件保护装置返回的代码段数据存储到所述内存中。
根据本发明的一个方面,其特征还在于,被存储的代码段数据以密文形式从软件保护装置发送到软件,须解密后才可被软件执行。
根据本发明的一个方面,其特征还在于,解密密钥是软件与软件保护装置协商建立的动态会话密钥。
根据本发明的一个方面,其特征还在于,被存储的代码段数据中包含对软件保护装置的再次调用。
根据本发明的一个方面,其特征还在于,软件正常运行时,首先从软件保护装置中读取被存储的代码段数据,在执行所述代码段数据时再次调用软件保护装置的功能。
根据本发明的一个方面,其特征还在于,在上述二次调用软件保护装置的功能时,传入参数由软件保护装置在返回所述代码段数据时动态生成。
根据本发明的一个方面,其特征还在于,软件保护装置在处理上述二次调用时,检查传入参数的合法性。
根据本发明的一个方面,其特征还在于,在上述步骤A中还包括:由软件开发商选取受保护软件的若干段代码,标记代码段的起始和结束位置并计算其长度,将代码段数据和起始地址存储到软件保护装置中。
根据本发明的一个方面,其特征还在于,还包括:软件开发商将上述受保护软件和软件保护装置发布给授权的软件用户。
根据本发明的一个方面,其特征还在于,还包括:软件调用解密后的代码段中的功能函数,执行完功能函数后擦除内存数据并释放内存。
根据本发明的一个方面,其特征还在于,还包括:功能函数中包含对软件保护装置的进一步调用,同时调用的参数是由软件保护装置在返回被存储的代码段数据时动态设定的。
上述过程与软件的功能无关,可对可执行程序中任意的代码段进行转移存储,易于实现自动化的软件保护方法,降低了软件保护的技术难度和开发成本。同时受保护的代码功能不是在软件保护装置中而是在PC上运行,因此对软件的执行效率影响很小。而使用基于硬件的软件保护装置,保证了被存储代码的私密性,提高了保护的安全性。
附图说明
图1为本发明使用软件保护装置存储程序代码实现软件保护的方法的流程示意图。
图2为本发明实施例中使用软件保护装置存储程序代码实现软件保护的方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图2为本发明实施例中基加密数据文件实现软件保护方法的流程示意图。
步骤201,软件开发商选取受保护软件的若干段代码,标记代码的起始和结束位置并计算其长度,将代码段数据和起始地址存储到软件保护装置中,擦除代码段内容,并在代码段起始处写入调用软件保护装置的指令。
步骤202,软件开发商将上述受保护软件和软件保护装置发布给授权的软件用户。
步骤203,软件运行时,当执行到某个被转移存储的代码段时,执行预设的调用软件保护装置指令,将该代码段的起始地址发送给软件保护装置,后者从根据该地址找到相应的代码段数据,用会话密钥加密后发送回软件。
步骤204,软件分配一块内存存储接收到的加密代码段数据,并用会话密钥进行解密。
步骤205,软件调用解密后的代码段中的功能函数,完成后擦除内存数据并释放内存。
在步骤205中,功能函数里可以包含对软件保护装置的进一步调用,同时调用的输入参数可以是由软件保护装置在返回被存储代码段数据时动态设定的。这样可以有效的增加软件和软件保护装置的相互依赖性,使得破解者难以分析和复制输入输出数据。
综上所见,本发明提供了一种统一而便捷的利用软件保护装置进行软件保护的方法,极大的降低了一般的代码移植方法的技术难度和软件局限性,具有易于实施、执行效率高和高安全强度的优点。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。

Claims (15)

1、一种使用软件保护装置存储程序代码实现软件保护的方法,其特征在于,该方法包括步骤:
A、将受保护软件的可执行程序的若干段代码段数据和起始地址存储到软件保护装置中;
B、在受保护软件中擦除上述代码段数据;
C、在代码段起始位置处写入调用软件保护装置的指令;
D、当软件运行到某个已转移存储到软件保护装置中的被保护代码段时,将所述代码段的起始地址发送给软件保护装置;
E、软件保护装置返回相应的代码段数据;
F、软件将代码段数据存储到内存中,并执行该代码段数据。
2、根据权利要求1所述的方法,其特征在于,在步骤F之后还包括步骤:
G、执行完成后擦除内存中所述代码段数据。
3、根据权利要求1所述的方法,其特征在于,在步骤D中还包括:通过执行预先写入的调用软件保护装置的指令,计算被保护代码段的起始地址,然后将其发送到软件保护装置中。
4、根据权利要求1所述的方法,其特征在于,在步骤E中还包括:软件保护装置根据被保护代码段的起始地址找到已存储的代码段数据,返回给软件。
5、根据权利要求1所述的方法,其特征在于,在步骤F中还包括:软件首先分配一块内存,然后将软件保护装置返回的代码段数据存储到所述内存中。
6、根据权利要求1-5所述的任一方法,其特征在于,被存储的代码段数据以密文形式从软件保护装置发送到软件,须解密后才可被软件执行。
7、根据权利要求6所述的方法,其特征在于,解密密钥是软件与软件保护装置协商建立的动态会话密钥。
8、根据权利要求6所述的方法,其特征在于,被存储的代码段数据中包含对软件保护装置的再次调用。
9、根据权利要求8所述的方法,其特征在于,软件正常运行时,首先从软件保护装置中读取被存储的代码段数据,在执行所述代码段数据时再次调用软件保护装置的功能。
10、根据权利要求9所述的方法,其特征在于,在上述二次调用软件保护装置的功能时,传入参数由软件保护装置在返回所述代码段数据时动态生成。
11、根据权利要求10所述的方法,其特征在于,软件保护装置在处理上述二次调用时,检查传入参数的合法性。
12、根据权利要求5所述的方法,其特征在于,在上述步骤A中还包括:由软件开发商选取受保护软件的若干段代码,标记代码段的起始和结束位置并计算其长度,将代码段数据和起始地址存储到软件保护装置中。
13、根据权利要求12所述的方法,其特征在于,还包括:软件开发商将上述受保护软件和软件保护装置发布给授权的软件用户。
14、根据权利要求12所述的方法,其特征在于,还包括:软件调用解密后的代码段中的功能函数,执行完功能函数后擦除内存数据并释放内存。
15、根据权利要求14所述的方法,其特征在于,还包括:功能函数中包含对软件保护装置的进一步调用,同时调用的参数是由软件保护装置在返回被存储的代码段数据时动态设定的。
CN200810103665XA 2008-04-10 2008-04-10 一种使用软件保护装置存储程序代码实现软件保护的方法 Expired - Fee Related CN101261664B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810103665XA CN101261664B (zh) 2008-04-10 2008-04-10 一种使用软件保护装置存储程序代码实现软件保护的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810103665XA CN101261664B (zh) 2008-04-10 2008-04-10 一种使用软件保护装置存储程序代码实现软件保护的方法

Publications (2)

Publication Number Publication Date
CN101261664A true CN101261664A (zh) 2008-09-10
CN101261664B CN101261664B (zh) 2010-07-07

Family

ID=39962117

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810103665XA Expired - Fee Related CN101261664B (zh) 2008-04-10 2008-04-10 一种使用软件保护装置存储程序代码实现软件保护的方法

Country Status (1)

Country Link
CN (1) CN101261664B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004885A (zh) * 2010-10-30 2011-04-06 华南理工大学 一种软件保护方法
CN102930204A (zh) * 2012-09-20 2013-02-13 北京深思洛克软件技术股份有限公司 基于软件保护装置的软件加壳方法、系统及软件保护方法
CN103164640A (zh) * 2011-12-08 2013-06-19 北京深思洛克软件技术股份有限公司 一种控制软件保护装置中可执行文件执行的方法
WO2014176950A1 (zh) * 2013-05-03 2014-11-06 飞天诚信科技股份有限公司 一种保护java程序的方法
CN104573423A (zh) * 2015-01-26 2015-04-29 无锡信捷电气股份有限公司 一种plc软硬件结合加密保护方法
CN106055309A (zh) * 2016-05-27 2016-10-26 上海兆芯集成电路有限公司 中央处理器和在其中执行隐秘操作、协处理器操作的方法
CN106055934A (zh) * 2016-05-19 2016-10-26 福建创意嘉和软件有限公司 一种基于veh的代码保护方法和装置
CN107087002A (zh) * 2017-05-15 2017-08-22 武汉斗鱼网络科技有限公司 一种数据的加解密方法、装置及电子设备
CN107341372A (zh) * 2017-07-25 2017-11-10 北京深思数盾科技股份有限公司 一种软件保护方法和装置
CN112559981A (zh) * 2020-12-11 2021-03-26 北京深思数盾科技股份有限公司 一种软件保护方法及装置
CN113360857A (zh) * 2021-08-10 2021-09-07 支付宝(杭州)信息技术有限公司 一种软件的代码启动方法和系统
CN117235740A (zh) * 2023-11-10 2023-12-15 万帮数字能源股份有限公司 固件的启动方法、启动装置

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004885B (zh) * 2010-10-30 2013-07-03 华南理工大学 一种软件保护方法
CN102004885A (zh) * 2010-10-30 2011-04-06 华南理工大学 一种软件保护方法
CN103164640A (zh) * 2011-12-08 2013-06-19 北京深思洛克软件技术股份有限公司 一种控制软件保护装置中可执行文件执行的方法
CN102930204B (zh) * 2012-09-20 2016-12-21 北京深思数盾科技股份有限公司 基于软件保护装置的软件加壳方法、系统及软件保护方法
CN102930204A (zh) * 2012-09-20 2013-02-13 北京深思洛克软件技术股份有限公司 基于软件保护装置的软件加壳方法、系统及软件保护方法
US9665730B2 (en) 2013-05-03 2017-05-30 Feitian Technologies Co., Ltd. Method for protecting java program
WO2014176950A1 (zh) * 2013-05-03 2014-11-06 飞天诚信科技股份有限公司 一种保护java程序的方法
CN104573423A (zh) * 2015-01-26 2015-04-29 无锡信捷电气股份有限公司 一种plc软硬件结合加密保护方法
CN104573423B (zh) * 2015-01-26 2017-10-31 无锡信捷电气股份有限公司 一种plc软硬件结合加密保护方法
CN106055934A (zh) * 2016-05-19 2016-10-26 福建创意嘉和软件有限公司 一种基于veh的代码保护方法和装置
CN106055934B (zh) * 2016-05-19 2019-04-02 福州利倍得网络技术有限公司 一种基于veh的代码保护方法和装置
CN106055309A (zh) * 2016-05-27 2016-10-26 上海兆芯集成电路有限公司 中央处理器和在其中执行隐秘操作、协处理器操作的方法
CN106055309B (zh) * 2016-05-27 2019-04-02 上海兆芯集成电路有限公司 中央处理器和在其中执行隐秘操作、协处理器操作的方法
CN107087002A (zh) * 2017-05-15 2017-08-22 武汉斗鱼网络科技有限公司 一种数据的加解密方法、装置及电子设备
CN107087002B (zh) * 2017-05-15 2019-09-20 武汉斗鱼网络科技有限公司 一种数据的加解密方法、装置及电子设备
CN107341372A (zh) * 2017-07-25 2017-11-10 北京深思数盾科技股份有限公司 一种软件保护方法和装置
CN112559981A (zh) * 2020-12-11 2021-03-26 北京深思数盾科技股份有限公司 一种软件保护方法及装置
CN112559981B (zh) * 2020-12-11 2021-09-17 北京深思数盾科技股份有限公司 一种软件保护方法及装置
CN113360857A (zh) * 2021-08-10 2021-09-07 支付宝(杭州)信息技术有限公司 一种软件的代码启动方法和系统
CN117235740A (zh) * 2023-11-10 2023-12-15 万帮数字能源股份有限公司 固件的启动方法、启动装置
CN117235740B (zh) * 2023-11-10 2024-03-22 万帮数字能源股份有限公司 固件的启动方法、启动装置

Also Published As

Publication number Publication date
CN101261664B (zh) 2010-07-07

Similar Documents

Publication Publication Date Title
CN101261664B (zh) 一种使用软件保护装置存储程序代码实现软件保护的方法
CN101261666B (zh) 一种通过加密可执行程序文件实现软件版权保护的方法
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
US20170116410A1 (en) Software protection
CN105683990B (zh) 用于保护动态库的方法和装置
CN102890758B (zh) 一种保护可执行文件的方法及系统
CN101404056A (zh) 一种软件的保护方法、装置及设备
CN103106372A (zh) 用于Android系统的轻量级隐私数据加密方法及系统
CN104463002A (zh) 一种加固apk的方法和装置以及apk加固客户端和服务器
CN101807239A (zh) 一种防止源代码反编译的方法
CN106650327A (zh) 基于动态恢复so文件的Android应用加固方法
CN103299284A (zh) 数据安全读取方法及装置
CN110008693A (zh) 安全应用程序加密保证方法及装置与系统和存储介质
CN104462882A (zh) 软件保护方法、硬件加密设备以及包括其的软件保护系统
CN103329141A (zh) 数据安全存储方法及装置
CN103186730A (zh) 保护.net软件安全的方法和设备
CN113893550A (zh) 脚本源码处理方法及相关设备
CN101261665A (zh) 一种通过加密数据文件实现软件保护的方法
CN106687978A (zh) 对栈破坏利用的抑制
CN116910712A (zh) 代码保护方法、系统、电子设备及存储介质
CN106775843B (zh) 基于内存加载的dalvik字节码优化方法
CN103677746B (zh) 指令重组方法及装置
EP2674892B1 (en) A method, a device and a computer program support for execution of encrypted computer code
CN103677769B (zh) 指令重组方法及装置
CN103677770B (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.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100707

CF01 Termination of patent right due to non-payment of annual fee