CN109446759B - 一种软件接口保护方法及装置 - Google Patents
一种软件接口保护方法及装置 Download PDFInfo
- Publication number
- CN109446759B CN109446759B CN201811266169.6A CN201811266169A CN109446759B CN 109446759 B CN109446759 B CN 109446759B CN 201811266169 A CN201811266169 A CN 201811266169A CN 109446759 B CN109446759 B CN 109446759B
- Authority
- CN
- China
- Prior art keywords
- software interface
- memory area
- operation result
- parameters
- actual calling
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000006870 function Effects 0.000 claims abstract description 22
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种软件接口保护方法及装置,包括:确定软件接口及对应的参数;在安全内存区中根据所述软件接口及对应的参数,执行所述软件接口对应的运算逻辑。本发明通过对实际的软件接口转换成实际调用软件接口,通过实际调用软件接口传递软件接口所需参数,调用实际调用软件接口时,在安全内存区中基于软件接口所需参数执行软件接口对应的运算逻辑,实现软件接口的功能,既可实现软件功能,又将软件接口的源代码数据隔离于受保护的安全内存区中,保障核心源代码不被获取破解,保证软件接口的安全性。
Description
技术领域
本发明涉及信息安全技术领域,特别是指一种软件接口保护方法及装置。
背景技术
软件应用程序的功能是通过调用各个软件接口执行相应的软件功能实现的,实现应用程序的源代码是软件开发者的核心技术。结合第三方工具,利用逆向工程有可能分析获得应用程序的源代码,对软件开发者造成损失,对应用程序造成安全威胁。
发明内容
有鉴于此,本发明的目的在于提出一种软件接口保护方法及装置,能够对软件接口进行保护,提高软件的安全性。
基于上述目的,本发明提供了一种软件接口保护方法,包括:
确定软件接口及对应的参数;
在安全内存区中根据所述软件接口及对应的参数,执行所述软件接口对应的运算逻辑。
可选的,所述软件接口保护方法,包括:
对所述软件接口进行格式转换,生成实际调用软件接口;
于普通内存区执行所述实际调用软件接口,于所述安全内存区中,基于所述软件接口对应的参数执行所述软件接口的运算逻辑,得到运算结果;
将所述运算结果返回给所述实际调用软件接口。
可选的,所述软件接口保护方法还包括:
对所述软件接口对应的参数进行编码处理,生成编码后的参数;
于普通内存区执行所述实际调用软件接口,于所述安全内存区中,对所述编码后的参数进行解码,生成所述软件接口对应的参数,基于所述软件接口的参数执行所述软件接口的运算逻辑,得到所述运算结果。
可选的,所述软件接口保护方法还包括:
对所述运算结果进行编码处理,生成编码后的运算结果;
将所述编码后的运算结果返回给所述实际调用软件接口,所述实际调用软件接口对所述编码后的运算结果进行解码,将解码后的运算结果作为所述实际调用软件接口的执行结果。
可选的,所述软件接口保护方法还包括:
在所述安全内存区中划分出第一存储区与第二存储区,对于执行所述软件接口对应的运算逻辑过程中生成的动态数据,将长度小于第一长度阈值的字符数据保存于所述第一存储区中,将长度大于第二长度阈值的文件数据保存于所述第二存储区中。
可选的,所述软件接口不包括无法在所述安全内存区中执行的函数。
本发明实施例还提供一种软件接口保护装置,包括:
接口转换模块,用于对软件接口进行格式转换,生成实际调用软件接口:
安全内存区,用于于普通内存区执行所述实际调用软件接口时,于所述安全内存区中,基于所述软件接口对应的参数执行所述软件接口的运算逻辑,得到运算结果,并将所述运算结果返回给所述实际调用软件接口。
可选的,所述软件接口保护装置还包括:
参数编码模块,用于对所述软件接口对应的参数进行编码处理,生成编码后的参数;
所述安全内存区包括参数解码模块,用于对所述编码后的参数进行解码,生成所述软件接口对应的参数。
可选的,所述软件接口保护装置还包括:
所述安全内存区包括运算结果编码模块,用于对所述运算结果进行编码处理,得到编码后的运算结果;
运算结果解码模块,用于对所述编码后的运算结果进行解码处理,将解码后的运算结果作为所述实际调用软件接口的执行结果。
可选的,所述安全内存区包括:
第一存储区,用于保存执行所述软件接口的运算逻辑过程中,动态生成的长度小于第一长度阈值的字符数据;
第二存储区,用于保存执行所述软件接口的运算逻辑过程中,动态生成的长度大于第二长度阈值的文件数据。
从上面所述可以看出,本发明提供的软件接口保护方法及装置,通过在安全内存区中根据软件接口及对应的参数,执行软件接口对应的运算逻辑,既可实现软件功能,又将软件接口的源代码数据隔离于受保护的安全内存区中,保障核心源代码不被获取破解,保证软件接口的安全性。
附图说明
图1为本发明实施例的方法流程示意图;
图2为本发明实施例的装置结构示意图;
图3为本发明又一实施例的装置结构示意图;
图4为现有技术中的软件框架示意图;
图5为本发明实施例的软件框架示意图。
具体实施方式
以下结合附图和实施例对本发明作进一步详细的描述。
图1为本发明实施例的方法流程示意图。如图所示,本发明实施例提供的软件接口保护方法,包括:
S10:确定软件接口及对应的参数;
本发明实施例中,首先确定需要保护的软件接口以及软件接口对应的参数。其中,可进行保护的软件接口具有一定的限制条件,以下软件接口无法利用本发明的方法进行保护:函数实现过于复杂,严重依赖无法进行数据保护的普通内存区,函数实现本身存在安全隐患,函数实现包含了受限制的CPU指令等无法在安全内存区中执行的函数,例如字符串相关处理函数(如strcpy、strcat等),进程线程相关处理函数(线程同步函数、abort函数等),CPUID函数等。
S11:在受保护的安全内存区中根据软件接口及对应的参数,执行相应的运算逻辑,实现相应的功能。
具体包括:
S110:对软件接口进行格式转换,生成实际调用软件接口;
S111:于普通内存区执行实际调用软件接口,于受保护的安全内存区中,基于软件接口的参数执行软件接口的运算逻辑,得到运算结果;
S113:将运算结果返回给实际调用软件接口。
本发明实施例中,进一步对向安全内存区传递的数据进行格式统一化处理。则,所述步骤S110、S111为:
S110`:对软件接口进行格式转换,生成实际调用软件接口;对软件接口对应的参数进行数据编码,生成编码后的参数;
即软件接口与其参数相对应,实际调用软件接口与编码后的参数相对应。
S111`:于普通内存区执行实际调用软件接口,于受保护的安全内存区中,对编码后的参数进行解码,生成软件接口对应的参数,基于软件接口的参数执行软件接口的运算逻辑,得到运算结果。
进一步的,对软件接口的运算结果进行统一的格式化处理,将格式化处理后的运算结果由安全内存区内传递至普通内存区的实际调用软件接口。则所述步骤S111或S111`之后还包括:
S112:对运算结果进行编码处理,生成编码后的运算结果;
S113`:将编码后的运算结果返回给实际调用软件接口,实际调用软件接口对编码后的运算结果进行解码,将解码后的运算结果作为实际调用软件接口的执行结果。
图4为现有技术中的软件框架示意图。如图所示,现有技术中,于软件应用程序执行过程中,是通过调用软件接口,基于传入该软件接口的参数执行软件接口对应的运算逻辑,进而实现软件接口的相应功能。
图5为本发明实施例的软件框架示意图。如图所示,本发明实施例中,是于软件应用程序执行过程中,于普通内存区调用实际调用软件接口,传入该实际调用软件接口的参数为编码后的参数,调用实际调用软件接口后,将编码后的参数传递至安全内存区中,于安全内存区中,对编码后的参数进行解码处理,生成软件接口对应的参数;然后,于安全内存区中,基于软件接口对应的参数,执行软件接口对应的运算逻辑,得到逻辑运算后的运算结果;之后,将运算结果返回给普通内存区,作为软件应用程序执行实际调用软件接口的执行结果。可见,本发明是将软件接口的参数通过传递至安全内存区中,在安全内存区中实现并执行软件接口的运算逻辑,实现软件接口的相应功能,一方面,能够保证软件功能的正常实现,另一方面,由于软件接口的源代码数据均在安全内存区中,能够避免软件接口的源代码数据被非法破解获取,保护软件接口的数据安全性。
本发明实施例中,所述的编码处理可以是,将原始的参数和/或运算结果转换为JSON数据结构的参数和/或运算结果,相应的,解码处理可以是将JSON数据结构的参数和/或运算结果转换为原始的参数及/或运算结果,JSON数据结构易于编码与机器解析,便于在接口之间实现数据传输。
本发明实施例中,对于软件应用程序运行过程中产生的运行态数据进行动态保护。即,执行软件接口的运算逻辑过程中,将动态生成的数据保存于安全内存区中,动态生成的数据例如是解密后生成的明文数据、核心算法运算过程中生成的临时重要数据等。可选的,在安全内存区中划分出第一存储区与第二存储区,对于动态生成的长度小于第一长度阈值的字符数据,保存于第一存储区中,对于动态生成的长度大于第二长度阈值的文件数据,保存于第二存储区中。这样,通过对软件接口的源代码进行隔离保护,对执行软件接口的运算逻辑过程中,动态生成的数据进行隔离保护,能够全面保护软件的安全性。
本发明实施例的软件接口保护方法基于SGX框架实现,所述的受保护的安全内存区可以是SGX的enclave内存区,enclave内存区中的数据会进行加密及硬件检测,只有CPU才有访问权限,最大限度的保护enclave内存区中的数据,避免其中的数据被非法访问获取。
图2为本发明实施例的装置结构示意图。如图所示,本发明实施例提供的软件接口保护装置,包括:
接口转换模块,用于对软件接口进行格式转换,生成实际调用软件接口;
安全内存区,用于于普通内存区执行实际调用软件接口时,于安全内存区中,基于软件接口的参数执行软件接口的运算逻辑,得到运算结果,并将运算结果返回给实际调用软件接口。
图3为本发明又一实施例的装置结构示意图。如图所示,本发明实施例中,所述软件接口保护装置还包括:
参数编码模块,用于对软件接口的参数进行编码处理,生成编码后的参数;
所述安全内存区包括参数解码模块,用于对编码后的参数进行解码,生成软件接口对应的参数,所述安全内存区基于软件接口的参数执行软件接口的运算逻辑,得到运算结果,并将运算结果返回给实际调用软件接口。
本发明实施例中,所述软件接口保护装置还包括:
所述安全内存区包括运算结果编码模块,用于对运算结果进行编码处理,得到编码后的运算结果,所述安全内存区将编码后的运算结果返回给实际调用软件接口;
运算结果解码模块,用于对编码后的运算结果进行解码处理,将解码后的运算结果作为实际调用软件接口的执行结果。
本发明实施例中,所述安全内存区包括:
第一存储区,用于保存执行软件接口的运算逻辑过程中,动态生成的长度小于第一长度阈值的字符数据;
第二存储区,用于保存执行软件接口的运算逻辑过程中,动态生成的长度大于第二长度阈值的文件数据。
其中,可利用本发明的软件接口保护装置进行保护的软件接口不包括无法在安全内存区中执行的函数。
本发明实施例的软件接口保护装置基于SGX框架实现,所述安全内存区可以是SGX的enclave内存区。
本发明的软件接口保护方法及装置,通过对实际的软件接口“伪装”成实际调用软件接口,通过实际调用软件接口传递软件接口所需参数,于普通内存区调用实际调用软件接口时,在安全内存区中基于软件接口所需参数执行软件接口对应的运算逻辑,实现软件接口的功能,既可实现软件功能,又将软件接口的源代码数据“隔离”于受保护的安全内存区中,保障核心源代码不被获取破解,保证软件接口的安全性。同时,执行软件接口的运算逻辑过程中,将动态生成的数据保存于安全内存区中,保证软件运行过程中生成的动态数据的安全性,全面保证软件的安全性。。
以上所述是本发明的较佳实施例及其所运用的技术原理,对于本领域的技术人员来说,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案基础上的等效变换、简单替换等显而易见的改变,均属于本发明保护范围之内。
Claims (7)
1.一种软件接口保护方法,其特征在于,包括:
确定软件接口及对应的参数;
对所述软件接口进行格式转换,生成实际调用软件接口;
于普通内存区执行所述实际调用软件接口,于安全内存区中,基于所述软件接口对应的参数执行所述软件接口的运算逻辑,得到运算结果;
将所述运算结果返回给所述实际调用软件接口;
在所述安全内存区中划分出第一存储区与第二存储区,对于执行所述软件接口对应的运算逻辑过程中生成的动态数据,将长度小于第一长度阈值的字符数据保存于所述第一存储区中,将长度大于第二长度阈值的文件数据保存于所述第二存储区中。
2.根据权利要求1所述的方法,其特征在于,还包括:
对所述软件接口对应的参数进行编码处理,生成编码后的参数;
于普通内存区执行所述实际调用软件接口,于所述安全内存区中,对所述编码后的参数进行解码,生成所述软件接口对应的参数,基于所述软件接口的参数执行所述软件接口的运算逻辑,得到所述运算结果。
3.根据权利要求2所述的方法,其特征在于,还包括:
对所述运算结果进行编码处理,生成编码后的运算结果;
将所述编码后的运算结果返回给所述实际调用软件接口,所述实际调用软件接口对所述编码后的运算结果进行解码,将解码后的运算结果作为所述实际调用软件接口的执行结果。
4.根据权利要求1所述的方法,其特征在于,所述软件接口不包括无法在所述安全内存区中执行的函数。
5.一种软件接口保护装置,其特征在于,包括:
接口转换模块,用于对软件接口进行格式转换,生成实际调用软件接口;
安全内存区,用于在普通内存区执行所述实际调用软件接口时,于所述安全内存区中,基于所述软件接口对应的参数执行所述软件接口的运算逻辑,得到运算结果,并将所述运算结果返回给所述实际调用软件接口;
所述安全内存区包括:
第一存储区,用于保存执行所述软件接口的运算逻辑过程中,动态生成的长度小于第一长度阈值的字符数据;
第二存储区,用于保存执行所述软件接口的运算逻辑过程中,动态生成的长度大于第二长度阈值的文件数据。
6.根据权利要求5所述的装置,其特征在于,还包括:
参数编码模块,用于对所述软件接口对应的参数进行编码处理,生成编码后的参数;
所述安全内存区包括参数解码模块,用于对所述编码后的参数进行解码,生成所述软件接口对应的参数。
7.根据权利要求6所述的装置,其特征在于,还包括:
所述安全内存区包括运算结果编码模块,用于对所述运算结果进行编码处理,得到编码后的运算结果;
运算结果解码模块,用于对所述编码后的运算结果进行解码处理,将解码后的运算结果作为所述实际调用软件接口的执行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811266169.6A CN109446759B (zh) | 2018-10-29 | 2018-10-29 | 一种软件接口保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811266169.6A CN109446759B (zh) | 2018-10-29 | 2018-10-29 | 一种软件接口保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109446759A CN109446759A (zh) | 2019-03-08 |
CN109446759B true CN109446759B (zh) | 2021-02-09 |
Family
ID=65548831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811266169.6A Active CN109446759B (zh) | 2018-10-29 | 2018-10-29 | 一种软件接口保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109446759B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183416A (zh) * | 2007-12-10 | 2008-05-21 | 东信和平智能卡股份有限公司 | 软件保护方法及其*** |
CN103218549A (zh) * | 2012-01-19 | 2013-07-24 | 阿里巴巴集团控股有限公司 | 一种Java源代码加解密的方法及装置 |
CN103761457A (zh) * | 2013-12-27 | 2014-04-30 | 华为技术有限公司 | 一种软件保护方法、装置及*** |
CN106228076A (zh) * | 2016-07-25 | 2016-12-14 | 武汉大学 | 一种基于sgx的图片验证码保护方法及*** |
CN106533694A (zh) * | 2016-11-03 | 2017-03-22 | 浙江大学 | Openstack令牌访问保护机制的实现方法及*** |
CN107016283A (zh) * | 2017-02-15 | 2017-08-04 | 中国科学院信息工程研究所 | 基于完整性验证的Android权限提升攻击安全防御方法和装置 |
CN108536523A (zh) * | 2018-04-20 | 2018-09-14 | 朱长德 | 浏览器内ActiveX嵌套Flash正常交互的方法 |
-
2018
- 2018-10-29 CN CN201811266169.6A patent/CN109446759B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183416A (zh) * | 2007-12-10 | 2008-05-21 | 东信和平智能卡股份有限公司 | 软件保护方法及其*** |
CN103218549A (zh) * | 2012-01-19 | 2013-07-24 | 阿里巴巴集团控股有限公司 | 一种Java源代码加解密的方法及装置 |
CN103761457A (zh) * | 2013-12-27 | 2014-04-30 | 华为技术有限公司 | 一种软件保护方法、装置及*** |
CN106228076A (zh) * | 2016-07-25 | 2016-12-14 | 武汉大学 | 一种基于sgx的图片验证码保护方法及*** |
CN106533694A (zh) * | 2016-11-03 | 2017-03-22 | 浙江大学 | Openstack令牌访问保护机制的实现方法及*** |
CN107016283A (zh) * | 2017-02-15 | 2017-08-04 | 中国科学院信息工程研究所 | 基于完整性验证的Android权限提升攻击安全防御方法和装置 |
CN108536523A (zh) * | 2018-04-20 | 2018-09-14 | 朱长德 | 浏览器内ActiveX嵌套Flash正常交互的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109446759A (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3000068B1 (en) | Protecting data | |
CN110008745B (zh) | 一种加密方法、计算机设备和计算机存储介质 | |
CN109918917B (zh) | 防止h5源码泄漏的方法、计算机设备和存储介质 | |
KR101350390B1 (ko) | 코드 난독화 장치 및 그 방법 | |
US10657262B1 (en) | Method and apparatus for securing embedded device firmware | |
CN110266682B (zh) | 数据加密方法、装置、移动终端及解密方法 | |
CN105282090B (zh) | 一种互联网上防非法访问的公开url加密编码方法 | |
CN106548046B (zh) | 一种保护代码的装置和方法 | |
CN110019075B (zh) | 日志加密方法与解密方法及装置 | |
CN113722683B (zh) | 模型保护方法、装置、设备、***以及存储介质 | |
CN114124364B (zh) | 密钥安全处理方法、装置、设备及计算机可读存储介质 | |
CN109446759B (zh) | 一种软件接口保护方法及装置 | |
CN111181898A (zh) | 基于后台服务器、app客户端的数据安全防护方法 | |
CN104392153A (zh) | 一种软件保护方法及*** | |
WO2015166701A1 (ja) | 暗号化方法、プログラム、および、システム | |
CN104636662A (zh) | 一种数据处理方法和终端设备 | |
CN117093964A (zh) | 一种源代码的加密方法、装置、存储介质及电子设备 | |
CN114282181A (zh) | 代码执行方法、装置、服务器及存储介质 | |
CN107135064B (zh) | 一种基于深度自编码器的信息加密方法 | |
CN114968206A (zh) | 一种编程语言代码动态混淆方法及*** | |
CN111460464B (zh) | 数据加解密方法、装置、电子设备及计算机存储介质 | |
CN106843853B (zh) | 保护用户信息的方法和装置 | |
CN111291333A (zh) | 一种Java应用程序加密方法及装置 | |
Phong et al. | Password recovery for encrypted ZIP archives using GPUs | |
CN109564615B (zh) | 模型数据的载入方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |