CN107103211B - Sdk发送、应用发布、应用运行方法及装置 - Google Patents

Sdk发送、应用发布、应用运行方法及装置 Download PDF

Info

Publication number
CN107103211B
CN107103211B CN201610093791.6A CN201610093791A CN107103211B CN 107103211 B CN107103211 B CN 107103211B CN 201610093791 A CN201610093791 A CN 201610093791A CN 107103211 B CN107103211 B CN 107103211B
Authority
CN
China
Prior art keywords
function
sdk
application
interface
source 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
CN201610093791.6A
Other languages
English (en)
Other versions
CN107103211A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610093791.6A priority Critical patent/CN107103211B/zh
Publication of CN107103211A publication Critical patent/CN107103211A/zh
Application granted granted Critical
Publication of CN107103211B publication Critical patent/CN107103211B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种SDK发送、应用发布、应用运行方法及装置,属于数据通信技术领域。所述SDK发送方法包括:当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;基于接口文件、加密函数文件和存储的保护逻辑库,生成第二SDK,保护逻辑库用于对加密函数文件进行加载和解密;将第二SDK发送给应用开发方,以供应用开发方基于第二SDK发布目标应用。本发明可以实现对SDK源代码的保护,增强SDK源代码的保密性。

Description

SDK发送、应用发布、应用运行方法及装置
技术领域
本发明涉及数据通信技术领域,特别涉及一种SDK(Software Development Kit,软件开发工具包)发送、应用发布、应用运行方法及装置。
背景技术
在移动互联网盛行的今天,应用开发方在开发某一应用时,往往需要从开发工具提供方获取SDK,基于该SDK来完成该应用的开发。由于该SDK是对该SDK的源代码进行编译得到,所以该SDK的源代码可以轻易地通过反编译工具对该SDK破解得到,因此,为了避免在该SDK的传输过程中该SDK的源代码被攻击者获取后进行恶意使用,亟需一种SDK发送方法。
目前,提供了一种SDK发送方法,具体可以为:开发人员在编写SDK的源代码时,可以手动地将该SDK的源代码中标准的函数名称、方法名称或者类名称修改为自定义的名称,得到混淆后的源代码,对该混淆后的源代码进行编译得到加密后的SDK,将该加密后的SDK发送给应用开发方,以供应用开发方基于该加密后的SDK来开发应用。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
通过混淆后的源代码得到加密后的SDK只是增加了反编译的难度和工作量,并不能完全阻止反编译,攻击者仍然可以对该加密后的SDK进行反编译,得到混淆后的源代码,通过将该混淆后的源代码中混淆的名称替换为有意义的名称,可以获取到该源代码,源代码的保密性较低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种SDK发送、应用发布、应用运行方法及装置。所述技术方案如下:
第一方面,提供了一种SDK发送方法,所述方法包括:
当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于所述第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
基于所述接口文件、所述加密函数文件和存储的保护逻辑库,生成第二SDK,所述保护逻辑库用于对所述加密函数文件进行加载和解密;
将所述第二SDK发送给应用开发方,以供所述应用开发方基于所述第二SDK发布目标应用。
第二方面,提供了一种应用发布方法,所述方法包括:
接收开发工具提供方发送的第二SDK,所述第二SDK包括接口文件、加密函数文件和保护逻辑库,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
基于所述接口文件,对应用源代码进行编译,所述应用源代码为待开发的目标应用的源代码;
将所述加密函数文件、所述保护逻辑库和编译后的应用源代码进行集成,得到所述目标应用;
将所述目标应用发送给应用发布平台,以对所述目标应用进行发布。
第三方面,提供了一种应用运行方法,所述方法包括:
从应用发布平台下载目标应用,所述目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,所述加密函数文件是对第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
当接收到所述目标应用的运行指令时,基于所述编译后的应用源代码和所述保护逻辑库,调用所述加密函数文件,以运行所述目标应用。
第四方面,提供了一种SDK发送装置,所述装置包括:
处理模块,用于当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于所述第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
生成模块,用于基于所述接口文件、所述加密函数文件和存储的保护逻辑库,生成第二SDK,所述保护逻辑库用于对所述加密函数文件进行加载和解密;
发送模块,用于将所述第二SDK发送给应用开发方,以供所述应用开发方基于所述第二SDK发布目标应用。
第五方面,提供了一种应用发布装置,所述装置包括:
接收模块,用于接收开发工具提供方发送的第二SDK,所述第二SDK包括接口文件、加密函数文件和保护逻辑库,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
编译模块,用于基于所述接口文件,对应用源代码进行编译,所述应用源代码为待开发的目标应用的源代码;
集成模块,用于将所述加密函数文件、所述保护逻辑库和编译后的应用源代码进行集成,得到所述目标应用;
发送模块,用于将所述目标应用发送给应用发布平台,以对所述目标应用进行发布。
第六方面,提供了一种应用运行装置,所述装置包括:
下载模块,用于从应用发布平台下载目标应用,所述目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,所述加密函数文件是对第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
调用模块,用于当接收到所述目标应用的运行指令时,基于所述编译后的应用源代码和所述保护逻辑库,调用所述加密函数文件,以运行所述目标应用。
本发明实施例提供的技术方案带来的有益效果是:在本发明实施例中,当开发工具提供方接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,基于该接口文件、该加密函数文件和存储的保护逻辑库,生成第二SDK,操作简单,生成效率较高,之后,开发工具提供方将该第二SDK发送给应用开发方,以供该应用开发方基于该第二SDK发布目标应用。由于第二SDK中包括接口文件、加密函数文件和保护逻辑库,因此,第二SDK可以大大提高反编译的难度和工具量。且由于接口文件包括的是接口和接口函数声明,加密函数文件包括的是函数密文,保护逻辑库中没有第一SDK中的内容,因此,即使攻击者可以对该第二SDK成功进行反编译,也无法获取到SDK源代码,从而实现了对SDK源代码的保护,增强了SDK源代码的保密性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种SDK发送、应用发布、应用运行方法所涉及的实施环境的示意图。
图2是本发明实施例提供的一种SDK发送方法流程图。
图3是本发明实施例提供的一种应用发布方法流程图。
图4是本发明实施例提供的一种应用运行方法流程图。
图5是本发明实施例提供的另一种SDK发送方法流程图。
图6是本发明实施例提供的另一种应用发布方法流程图。
图7是本发明实施例提供的另一种应用运行方法流程图。
图8是本发明实施例提供的一种SDK发送装置的结构示意图。
图9是本发明实施例提供的一种处理模块的结构示意图。
图10是本发明实施例提供的另一种处理模块的结构示意图。
图11是本发明实施例提供的另一种SDK发送装置的结构示意图。
图12是本发明实施例提供的一种应用发布装置的结构示意图。
图13是本发明实施例提供的一种编译模块的结构示意图。
图14是本发明实施例提供的一种应用运行装置的结构示意图。
图15是本发明实施例提供的一种调用模块的结构示意图。
图16是本发明实施例提供的另一种调用模块的结构示意图。
图17是本发明实施例提供的一种调用单元的结构示意图。
图18是本发明实施例提供的再一种SDK发送装置的结构示意图。
图19是本发明实施例提供的另一种应用发布装置的结构示意图。
图20是本发明实施例提供的再一种应用发布装置的结构示意图。
图21是本发明实施例提供的另一种应用运行装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细地解释说明之前,先对本发明实施例的应用场景予以说明。图1是本发明实施例提供的一种SDK发送、应用发布、应用运行方法所涉及的实施环境的示意图,参见图1,该实施环境包括:开发工具提供方110、应用开发方120、应用发布平台130和终端140,开发工具提供方110与应用开发方120之间可以通过有线或者无线网络进行连接,应用开发方120与应用发布平台130之间可以通过有线或者无线网络进行连接,应用发布平台130和终端140之间可以通过有线或者无线网络进行连接。其中,开发工具提供方110用于生成SDK,并将该SDK发送给应用开发方120,该开发工具提供方110可以是该SDK提供商的服务器等。应用开发方120用于基于SDK开发应用,并将该应用发送到应用发布平台130,该应用开发方120可以是终端或者服务器,例如,该应用开发方120可以为移动电话、平板电脑等、工作站、服务器等。应用发布平台130用于发布应用,该应用分发平台130可以为应用宝、手机助手等。终端140用于从应用发布平台130中下载应用并运行该应用,该终端140可以为移动电话,计算机,平板设备,个人数字助理等。
图2是本发明实施例提供的一种SDK发送方法流程图,该方法用于开发工具提供方,参见图2,该方法包括:
步骤201:当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK。
步骤202:基于接口文件、加密函数文件和存储的保护逻辑库,生成第二SDK,保护逻辑库用于对加密函数文件进行加载和解密。
步骤203:将第二SDK发送给应用开发方,以供应用开发方基于第二SDK发布目标应用。
在本发明实施例中,当开发工具提供方接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,基于该接口文件、该加密函数文件和存储的保护逻辑库,生成第二SDK,操作简单,生成效率较高,之后,开发工具提供方将该第二SDK发送给应用开发方,以供该应用开发方基于该第二SDK发布目标应用。由于第二SDK中包括接口文件、加密函数文件和保护逻辑库,因此,第二SDK可以大大提高反编译的难度和工具量。且由于接口文件包括的是接口和接口函数声明,加密函数文件包括的是函数密文,保护逻辑库中没有第一SDK中的内容,因此,即使攻击者可以对该第二SDK成功进行反编译,也无法获取到SDK源代码,从而实现了对SDK源代码的保护,增强了SDK源代码的保密性。
可选地,对第一SDK进行预处理,得到接口文件和加密函数文件,包括:
从第一SDK中,获取至少一个接口和至少一个函数;
从至少一个函数中,获取至少一个接口函数,至少一个接口函数为至少一个接口所对应的函数;
获取至少一个接口函数声明,至少一个接口函数声明为至少一个接口函数的函数声明;
基于至少一个接口和至少一个接口函数声明,生成接口文件;
对至少一个函数分别进行加密,得到至少一个函数密文;
基于至少一个函数密文,生成加密函数文件。
可选地,基于至少一个函数密文,生成加密函数文件之后,还包括:
对于至少一个函数中的每个函数,对函数进行哈希运算,得到函数的信息摘要;
对信息摘要进行加密,得到函数的数字签名;
将数字签名添加到加密函数文件中。
可选地,将第二SDK发送给应用开发方之前,还包括:
获取第二SDK所适用的应用标识;
对获取的应用标识进行哈希运算,得到第一哈希值;
将第一哈希值添加到第二SDK中。
上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。
图3是本发明实施例提供的一种应用发布方法流程图,该方法用于应用开发方,参见图3,该方法包括:
步骤301:接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK。
步骤302:基于接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码。
步骤303:将加密函数文件、保护逻辑库和编译后的应用源代码进行集成,得到目标应用。
步骤304:将目标应用发送给应用发布平台,以对目标应用进行发布。
在本发明实施例中,应用开发方接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,基于该接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码,由于该接口文件中包括的是接口和接口函数声明,因此,即使攻击者可以从编译后的应用源代码中获取到该接口文件并对该接口文件进行反编译,也不能获取到SDK源代码,提高了SDK源代码的保密性。之后,应用开发方将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用,将该目标应用发送给应用发布平台,以对目标应用进行发布。由于加密函数文件中包括的是函数密文,后续目标应用运行时实际上调用的是加密函数文件,因此,即使攻击者可以从编译后的应用源代码中获取接口文件并对该接口文件进行篡改,也不会影响目标应用的正常运行。
可选地,基于接口文件,对应用源代码进行编译,包括:
当第二SDK中包括第一哈希值时,获取目标应用的应用标识;
对目标应用的应用标识进行哈希运算,得到第二哈希值;
当第二哈希值与第一哈希值相同时,基于接口文件,对应用源代码进行编译。
上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。
图4是本发明实施例提供的一种应用运行方法流程图,该方法用于终端中,参见图4,该方法包括:
步骤401:从应用发布平台下载目标应用,目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK。
步骤402:当接收到目标应用的运行指令时,基于编译后的应用源代码和保护逻辑库,调用加密函数文件,以运行目标应用。
在本发明实施例中,终端从应用发布平台下载目标应用,该目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,当接收到该目标应用的运行指令时,通过保护逻辑库对该加密函数文件进行加载和解密,并通过该编译后的应用源代码调用解密后的该加密函数文件,以运行该目标应用,从而在保证目标应用正常运行的同时提高了该加密函数文件的保密性。
可选地,基于编译后的应用源代码和保护逻辑库,调用加密函数文件,包括:
通过保护逻辑库对加密函数文件中的至少一个函数密文进行加载和解密,得到至少一个函数;
确定运行指令所调用的目标接口;
基于编译后的应用源代码和目标接口,从至少一个函数中获取目标函数;
通过编译后的应用源代码调用目标函数。
可选地,基于编译后的应用源代码和保护逻辑库,调用加密函数文件,包括:
确定运行指令所调用的目标接口;
基于编译后的应用源代码和目标接口,通过保护逻辑库对加密函数文件中的目标函数密文进行加载和解密,得到目标函数;
通过编译后的应用源代码调用目标函数。
可选地,通过编译后的应用源代码调用目标函数,包括:
当加密函数文件中包括至少一个数字签名时,对目标函数进行哈希运算,得到第一摘要;
从至少一个数字签名中,获取目标函数的数字签名;
对获取的数字签名进行解密,得到第二摘要;
当第一摘要与第二摘要相同时,通过编译后的应用源代码调用目标函数。
上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。
图5是本发明实施例提供的一种SDK发送方法流程图,该方法用于开发工具提供方,参见图5,该方法包括:
步骤501:当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,该接口文件包括至少一个接口和至少一个接口函数声明,该至少一个接口和该至少一个接口函数声明包含于第一SDK中,该加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK。
需要说明的是,第一SDK是对SDK源代码进行编译得到的,该SDK源代码为开发工具提供方的开发人员编写的用于进行应用开发的源代码。
另外,对第一SDK进行预处理时,可以通过指定保护工具对第一SDK进行预处理,该指定保护工具可以预先设置,本发明实施例对此不做具体限定。
其中,对第一SDK进行预处理,得到接口文件和加密函数文件的操作可以包括如下步骤(1)-(6):
(1)、从第一SDK中,获取至少一个接口和至少一个函数。
其中,当从第一SDK中获取至少一个接口时,可以基于存储的接口列表中的至少一个接口名称,从第一SDK中获取至少一个接口,或者,可以对第一SDK中的至少一个接口进行识别,对所识别的至少一个接口进行获取,本发明实施例对此不做具体限定。
其中,对第一SDK中的至少一个接口进行识别的操作可以参考相关技术,本发明实施例对此不进行详细阐述。
需要说明的是,从第一SDK中获取至少一个接口和至少一个函数的操作还可以参考相关技术,本发明实施例对此不再进行详细阐述。
(2)、从该至少一个函数中,获取至少一个接口函数,该至少一个接口函数为该至少一个接口所对应的函数。
具体地,对于该至少一个接口中的每个接口,可以从该接口中获取接口函数名称,基于该接口函数名称,从该至少一个函数中,获取接口函数。
需要说明的是,从该至少一个函数中,获取至少一个接口函数的操作还可以参考相关技术,本发明实施例对此不再进行详细阐述。
(3)、获取至少一个接口函数声明,该至少一个接口函数声明为该至少一个接口函数的函数声明。
其中,当获取至少一个接口函数声明时,对于该至少一个接口函数中的每个接口函数,可以对该接口函数中的函数声明进行识别,对所识别的函数声明进行获取,得到接口函数声明;或者,可以对该接口函数中的函数体进行识别,从该接口函数中删除所识别的函数体,得到接口函数声明。
需要说明的是,该接口函数的函数声明中可以包括该接口函数的函数返回类型、函数名称、参数名称和参数类型,该接口函数的函数体中可以包括该接口函数的具体实现。
另外,对接口函数的函数声明或者函数体进行识别的操作可以参考相关技术,本发明实施例对此不进行详细阐述。
(4)、基于该至少一个接口和该至少一个接口函数声明,生成接口文件。
具体地,可以将该至少一个接口和该至少一个接口函数进行打包,得到接口文件,当然,也可以以其它方式基于该至少一个接口和该至少一个接口函数声明生成接口文件,本发明实施例对此不做具体限定。
(5)、对该至少一个函数分别进行加密,得到至少一个函数密文。
具体地,对于该至少一个函数中的每个函数,可以将该函数进行加密,得到函数密文;或者,可以对该函数进行拆分,得到多个函数段和该多个函数段的位置信息,对该多个函数段和该多个函数段的位置信息进行加密,得到函数密文。
需要说明的是,该多个函数段为将该函数拆分后得到的多段字节码。另外,该多个函数段的位置信息中包括该多个函数段中各个函数段在函数中的位置。
其中,对该函数进行加密时,可以利用指定加密算法和该开发工具提供方的密钥对该函数进行加密,当然,也可以利用其它的方法进行加密,本发明实施例对此不做具体限定。
需要说明的是,指定加密算法可以预先设置,如该指定加密算法可以为DES(DataEncryption Standard,数据加密标准)算法、AES(Advanced Encryption Standard,高级加密标准)算法等等,本发明实施例对此不做具体限定。
其中,对该多个函数段和该多个函数段的位置信息进行加密时,也可以利用指定加密算法和该开发工具提供方的密钥对该多个函数段和该多个函数段的位置信息整体进行加密,或者,利用指定加密算法和该开发工具提供方的密钥对该多个函数段和该多个函数段的位置信息分别进行加密,当然,也可以利用其它的方法对该多个函数段和该多个函数段的位置信息进行加密,本发明实施例对此不作具体限定。再者,本发明实施例中对该多个函数段和该多个函数段的位置信息进行加密,得到函数密文,可以进一步提高函数的保密性。
其中,对该函数进行拆分,得到多个函数段时,可以按照指定格式对该函数进行拆分,得到多个函数段。另外,指定格式可以预先设置,如该指定格式可以为函数声明+函数体、函数名+形式参数+函数体等等,本发明实施例对此不做具体限定。
例如,当该指定格式为函数声明+函数体时,按照该指定格式对函数进行拆分,得到多个函数段为该函数的函数声明和函数体。当该指定格式为函数名+形式参数+函数体时,按照该指定格式对函数进行拆分,得到多个函数段为该函数的函数名、形式参数和函数体。
(6)、基于该至少一个函数密文,生成加密函数文件。
具体地,可以将该至少一个函数密文进行打包,得到加密函数文件,当然,也可以以其它方式基于该至少一个函数密文,生成加密函数文件,本发明实施例对此不做具体限定。
进一步地,基于该至少一个函数密文,生成加密函数文件之后,对于至少一个函数中的每个函数,还可以对该函数进行哈希运算,得到该函数的信息摘要;对该信息摘要进行加密,得到该函数的数字签名;将该数字签名添加到加密函数文件中。
其中,对该函数进行哈希运算时,可以利用指定哈希算法对该函数进行哈希运算。另外,该指定哈希算法可以预先设置,如该指定哈希算法可以为MD5(Message-DigestAlgorithm 5,信息-摘要算法5)、SHA1(Secure Hash Algorithm,安全哈希算法)等等,本发明实施例对此不做具体限定。
其中,对该信息摘要进行加密时,可以利用指定加密算法和该开发工具提供方的密钥对该信息摘要进行加密,当然,也通过利用其它的方法进行加密,本发明实施例对此不做具体限定。
其中,将该数字签名添加到加密函数文件中时,可以将该数字签名打包到该加密函数文件中,当然,也可以以其它方式将该数字签名添加到该加密函数文件中,本发明实施例对此不做具体限定。
步骤502:基于接口文件、加密函数文件和存储的保护逻辑库,生成第二SDK,保护逻辑库用于对加密函数文件进行加载和解密。
具体地,可以将接口文件、加密函数文件和存储的保护逻辑库进行打包,得到该第二SDK,当然,也可以以其它方式基于接口文件、加密函数文件和存储的保护逻辑库,生成第二SDK,本发明实施例对此不做具体限定。
需要说明的是,该保护逻辑库可以通过指定保护工具生成,且该指定保护工具可以在完成对第一SDK的预处理时对该保护逻辑库进行生成。
需要说明的是,由于第二SDK中包括接口文件、加密函数文件和保护逻辑库,因此,第二SDK可以大大提高反编译的难度和工作量。且由于接口文件包括的是接口和接口函数声明,加密函数文件包括的是函数密文,保护逻辑库中没有第一SDK中的内容,因此,即使攻击者可以对该第二SDK成功进行反编译,也无法获取到SDK源代码,从而实现了对SDK源代码的保护,增强了SDK源代码的保密性。
另外,在本发明实施例中,无需提供SDK源代码,只需对第一SDK进行预处理,基于预处理得到的接口文件、加密函数文件和已存储的保护逻辑库,即可生成第二SDK,操作简单,易于对SDK源代码进行保护。另外,由于第二SDK是基于第一SDK得到的,第一SDK是对SDK的源代码进行编译得到的,因此,开发工具提供方在集成该第二SDK时,可以先采用普通集成方式集成第一SDK,再基于第一SDK集成第二SDK,集成过程简单,集成效率较高。
步骤503:将第二SDK发送给应用开发方,以供应用开发方基于第二SDK发布目标应用。
需要说明的是,可以通过有线或者无线网络将第二SDK发送给应用开发方,本发明实施例对此不做具体限定。
进一步地,将第二SDK发送给应用开发方之前,还可以获取第二SDK所适用的应用标识;对获取的应用标识进行哈希运算,得到第一哈希值;将第一哈希值添加到第二SDK中。
需要说明的是,应用标识可以为应用的应用名称和应用签名中的至少一个,且当该应用标识为应用名称时,该应用标识用于唯一标识该应用,当该应用标识为应用签名时,该应用标识用于唯一标识应用提供商,当该应用标识为该应用名称和应用签名时,该应用标识用于唯一标识该应用提供商提供的该应用。
需要说明的是,应用签名为应用提供商在开发某一应用时,对该应用附加的序列号,该序列号用于表示提供该应用的应用提供商。
其中,对获取的应用标识进行哈希运算时,可以利用指定哈希算法对获取的应用标识进行哈希运算。
其中,将第一哈希值添加到第二SDK中时,可以将第一哈希值打包到第二SDK中,当然,也可以以其它方式将第一哈希值添加到第二SDK中,本发明实施例对此不做具体限定。
在本发明实施例中,当开发工具提供方接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,基于该接口文件、该加密函数文件和存储的保护逻辑库,生成第二SDK,操作简单,生成效率较高,之后,开发工具提供方将该第二SDK发送给应用开发方,以供该应用开发方基于该第二SDK发布目标应用。由于第二SDK中包括接口文件、加密函数文件和保护逻辑库,因此,第二SDK可以大大提高反编译的难度和工具量。且由于接口文件包括的是接口和接口函数声明,加密函数文件包括的是函数密文,保护逻辑库中没有第一SDK中的内容,因此,即使攻击者可以对该第二SDK成功进行反编译,也无法获取到SDK源代码,从而实现了对SDK源代码的保护,增强了SDK源代码的保密性。
需要说明的是,在本发明实施例中,开发工具提供方可以通过上述步骤501-503生成第二SDK并将该第二SDK发送给应用开发方,而应用开发方基于该第二SDK发布目标应用的操作可以通过如下步骤601-604实现。
图6是本发明实施例提供的一种应用发布方法流程图,该方法用于应用开发方,参见图6,该方法包括:
步骤601:接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库。
需要说明的是,应用开发方接收的第二SDK即为上述步骤503中开发工具提供方向应用开发方发送的第二SDK。
步骤602:基于该接口文件,对应用源代码进行编译,该应用源代码为待开发的目标应用的源代码。
具体地,当第二SDK中包括第一哈希值时,获取该目标应用的应用标识;对该目标应用的应用标识进行哈希运算,得到第二哈希值;当该第二哈希值与该第一哈希值相同时,基于该接口文件,对该应用源代码进行编译。
其中,对目标应用的应用标识进行哈希运算时,可以利用指定哈希算法对该目标应用的应用标识进行哈希运算。
需要说明的是,本发明实施例中,可以当该第二哈希值与该第一哈希值相同时,基于该接口文件,对该应用源代码进行编译,从而可以避免第二SDK不适用的应用或者应用提供商对该接口文件的非法使用。
另外,当该应用标识为应用的应用名称时,本发明实施例可以实现对特定应用的检验,从而限制该接口文件只能由该特定应用使用,该特定应用为第二SDK所适用的应用;当该应用标识为应用的应用签名时,本发明实施例可以实现对特定应用提供商的检验,从而限制该接口文件只能由该特定应用提供商使用,该特定应用提供商为第二SDK所适用的应用提供商;当该应用标识为应用的应用名称和应用签名时,本发明实施例可以实现对特定应用提供商提供的特定应用的检验,从而实现该接口文件只能由该特定应用提供商提供的特定应用使用,该特定应用提供商提供的特定应用为第二SDK所适用的应用。
需要说明的是,本发明实施例中可以基于接口文件,对应用源代码进行编译,得到编译后的应用源代码,该编译后的应用源代码中包括接口文件中的至少一个接口和至少一个接口函数声明,因此,即使攻击者可以从编译后的应用源代码中获取到该接口文件并对该接口文件进行反编译,也不能获取到SDK源代码,提高了SDK源代码的保密性。
步骤603:将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用。
需要说明的是,将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用时,可以将该加密函数文件、该保护逻辑库和编译后的应用源代码进行打包,得到目标应用,当然,也可以以其它方式将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用,本发明实施例对此不做具体限定。
另外,由于加密函数文件中包括的是函数密文,后续目标应用运行时实际上调用的是加密函数文件,因此,即使攻击者可以从编译后的应用源代码中获取该接口文件并对该接口文件进行篡改,也不会影响目标应用的正常运行。
步骤604:将目标应用发送给应用发布平台,以对目标应用进行发布。
需要说明的是,可以通过有线或者无线网络将目标应用发送给应用发布平台,本发明实施例对此不做具体限定。
需要说明的是,应用发布平台用于发布应用,该应用发布平台可以为应用宝、手机助手等等,本发明实施例对此不做具体限定。
在本发明实施例中,应用开发方接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,基于该接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码,由于该接口文件中包括的是接口和接口函数声明,因此,即使攻击者可以从编译后的应用源代码中获取到该接口文件并对该接口文件进行反编译,也不能获取到SDK源代码,提高了SDK源代码的保密性。之后,应用开发方将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用,将该目标应用发送给应用发布平台,以对目标应用进行发布。由于加密函数文件中包括的是函数密文,后续目标应用运行时实际上调用的是加密函数文件,因此,即使攻击者可以从编译后的应用源代码中获取接口文件并对该接口文件进行篡改,也不会影响目标应用的正常运行。
需要说明的是,在本发明实施例中,应用开发方可以通过上述步骤601-604基于第二SDK生成目标应用,并将该目标应用发送给应用发布平台,以对所述目标应用进行发布,而终端从该应用发布平台下载该目标应用,并运行该目标应用的操作可以通过如下步骤701-702实现。
图7是本发明实施例提供的一种应用运行方法流程图,该方法用于终端,参见图7,该方法包括:
步骤701:从应用发布平台下载目标应用,该目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码。
需要说明的是,终端下载的目标应用即为上述步骤604中应用开发方向应用发布平台发送的目标应用。
步骤702:当接收到该目标应用的运行指令时,基于该编译后的应用源代码和该保护逻辑库,调用该加密函数文件,以运行该目标应用。
需要说明的是,运行指令用于指示运行该目标应用,该运行指令可以由用户触发,用户可以通过指定操作触发,该指定操作可以为滑动操作、单击操作、语音操作等等,本发明实施例对此不做具体限定。
具体地,基于该编译后的应用源代码和该保护逻辑库,调用该加密函数文件的操作可以包括如下两种方式:
第一种方式:通过该保护逻辑库对该加密函数文件中的至少一个函数密文进行加载和解密,得到至少一个函数;确定该运行指令所调用的目标接口;基于该编译后的应用源代码和该目标接口,从该至少一个函数中获取目标函数;通过该编译后的应用源代码调用该目标函数。
其中,通过该保护逻辑库对该加密函数文件中的至少一个函数密文进行加载和解密,得到至少一个函数时,可以通过该保护逻辑库中的安全类加载器对该至少一个函数密文进行加载,并通过该保护逻辑库对该加载后的至少一个函数密文进行解密,得到至少一个函数。
由于函数密文是对函数加密后得到的,该函数密文不符合终端的类加载器的加载格式,因此,为了保证该函数密文可以被终端正常加载,可以使用保护逻辑库中的安全类加载器将函数密文加载到终端中。其中,该安全类加载器用于加载函数密文。
其中,通过保护逻辑库对该加载后的至少一个函数密文进行解密,得到至少一个函数的操作可以为:当函数密文是对函数进行加密得到时,通过保护逻辑库提供的指定加密算法的逆算法和开发工具提供方的密钥对该至少一个函数密文进行解密,得到至少一个函数;当函数密文是对多个函数段和该多个函数段的位置信息进行加密得到时,对于该至少一个函数密文中的每个函数密文,通过保护逻辑库提供的指定加密算法的逆算法和开发工具提供方的密钥对该函数密文进行解密,得到多个函数段和该多个函数段的位置信息,基于该多个函数段的位置信息,对该多个函数段进行组装,得到该函数。
需要说明的是,基于开发工具提供方对函数的加密方法的不同,通过保护逻辑库对该加载后的至少一个函数密文的解密方法也不同,该加密方法与该解密方法是对应的。
其中,确定该运行指令所调用的目标接口的操作可以参考相关技术,本发明实施例对此不进行详细阐述。
其中,基于该编译后的应用源代码和该目标接口,从该至少一个函数中获取目标函数时,可以基于该编译后的应用源代码和该目标接口,确定目标函数名称,基于该目标函数名称,从该至少一个函数中获取目标函数。
其中,由于编译后的应用源代码中包括至少一个接口和至少一个接口函数声明,因此,基于该编译后的应用源代码和该目标接口,确定目标函数名称时,可以基于该目标接口,从编译后的应用源代码中确定该目标接口对应的接口函数声明,并从该目标接口对应的接口函数声明中,获取接口函数名称,将该获取的接口函数名称确定为目标函数名称。
其中,基于该目标函数名称,从该至少一个函数中获取目标函数时,可以基于该目标函数名称,从该至少一个函数中获取该目标函数名称对应的函数,将获取的函数确定为目标函数。
其中,通过该编译后的应用源代码调用该目标函数的操作可以为:当该加密函数文件中包括至少一个数字签名时,对该目标函数进行哈希运算,得到第一摘要;从该至少一个数字签名中,获取该目标函数的数字签名;对获取的数字签名进行解密,得到第二摘要;当该第一摘要与该第二摘要相同时,通过该编译后的应用源代码调用该目标函数。
其中,对该目标函数进行哈希运算时,可以利用指定哈希算法对该目标函数进行哈希运算。
其中,对获取的数字签名进行解密,得到第二摘要时,可以通过保护逻辑库提供的指定加密算法的逆算法和开发工具提供方的密钥对该获取的数字签名进行解密,得到第二摘要。
需要说明的是,基于开发工具提供方对函数的信息摘要的加密方法的不同,通过保护逻辑库对该获取的数字签名的解密方法也不同,该加密方法与该解密方法是对应的。
需要说明的是,在本发明实施例中,当第一摘要与第二摘要相同时,终端可以确定该目标函数未被篡改,进而可以通过该编译后的应用源代码调用该目标函数,保证该目标应用的正常运行。
另外,在本发明实施例中,在初次运行该目标应用时,可以通过保护逻辑库对该加密函数文件中的至少一个函数密文进行加载和加密,得到至少一个函数,从而可以使得终端在初次运行该目标应用之后再次运行该目标应用时,无需再进行加载和解密的操作,直接从该至少一个函数中获取所要调用的函数并对该函数进行调用即可,提高了函数调用效率,节省了终端的处理资源。
第二种方式:确定该运行指令所调用的目标接口;基于该编译后的应用源代码和该目标接口,确定目标函数名称;基于该目标函数名称,通过该保护逻辑库对该加密函数文件中的目标函数密文进行加载和解密,得到目标函数;通过该编译后的应用源代码调用该目标函数。
其中,确定该运行指令所调用的目标接口,基于该编译后的应用源代码和该目标接口,确定目标函数名称的操作与步骤702第一种方式中的操作相同,本发明实施例在此不再赘述。
其中,基于该目标函数名称,通过该保护逻辑库对该加密函数文件中的目标函数密文进行加载和解密,得到目标函数时,可以基于该目标函数名称,通过该保护逻辑库中的安全类加载器对该目标函数密文进行加载,并通过该保护逻辑库对该加载后的目标函数密文进行解密,得到目标函数。
其中,通过保护逻辑库对该加载后的目标函数密文进行解密,得到目标函数的操作可以为:当函数密文是对函数进行加密得到时,通过保护逻辑库提供的指定加密算法的逆算法和开发工具提供方的密钥对该目标函数密文进行解密,得到目标函数;当函数密文是对多个函数段和该多个函数段的位置信息进行加密得到时,通过保护逻辑库提供的指定加密算法的逆算法和开发工具提供方的密钥对该目标函数密文进行解密,得到该多个目标函数段和该多个目标函数段的位置信息,基于该多个目标函数段的位置信息,对该多个目标函数段进行组装,得到该目标函数。
需要说明的是,基于开发工具提供方对函数的加密方法的不同,通过保护逻辑库对该加载后的目标函数密文的解密方法也不同,该加密方法与该解密方法是对应的。
其中,通过该编译后的应用源代码调用该目标函数的操作与步骤702第一种方式中的操作相同,本发明实施例在此不再赘述。
需要说明的是,本发明实施例中,可以实现对该加密函数文件的按需加载,也即是,可以在确定所要调用的目标函数后,只对该目标函数进行加载和解密,从而避免该终端中出现该加密函数文件中的所有函数,进而避免攻击者从该终端中获取到该加密函数文件中的所有函数,提高了该加密函数文件的保密性。
进一步地,通过编译后的应用源代码调用该目标函数之后,还可以将该目标函数进行卸载,从而保证在目标应用每次运行时,该终端中都只会存在该次运行所需调用的函数,进一步避免该终端中出现该加密函数文件中的所有函数,避免攻击者从该终端中获取到该加密函数文件中的所有函数,进一步提高了该加密函数文件的保密性。
在本发明实施例中,终端从应用发布平台下载目标应用,该目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,当接收到该目标应用的运行指令时,通过保护逻辑库对该加密函数文件进行加载和解密,并通过该编译后的应用源代码调用解密后的该加密函数文件,以运行该目标应用,从而在保证目标应用正常运行的同时提高了该加密函数文件的保密性。
参见图8,本发明实施例提供了一种SDK发送装置,该装置包括处理模块801,生成模块802和发送模块803。
处理模块801,用于当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;
生成模块802,用于基于接口文件、加密函数文件和存储的保护逻辑库,生成第二SDK,保护逻辑库用于对加密函数文件进行加载和解密;
发送模块803,用于将第二SDK发送给应用开发方,以供应用开发方基于第二SDK发布目标应用。
可选地,参见图9,该处理模块801包括第一获取单元8011,第二获取单元8012,第三获取单元8013,第一生成单元8014,第一加密单元8015和第二生成单元8016。
第一获取单元8011,用于当接收到处理指令时,从第一SDK中,获取至少一个接口和至少一个函数;
第二获取单元8012,用于从至少一个函数中,获取至少一个接口函数,至少一个接口函数为至少一个接口所对应的函数;
第三获取单元8013,用于获取至少一个接口函数声明,至少一个接口函数声明为至少一个接口函数的函数声明;
第一生成单元8014,用于基于至少一个接口和至少一个接口函数声明,生成接口文件;
第一加密单元8015,用于对至少一个函数分别进行加密,得到至少一个函数密文;
第二生成单元8016,用于基于至少一个函数密文,生成加密函数文件。
可选地,参见图10,该处理模块还包括运算单元8017,第二加密单元8018和添加单元8019。
运算单元8017,用于对于至少一个函数中的每个函数,对函数进行哈希运算,得到函数的信息摘要;
第二加密单元8018,用于对信息摘要进行加密,得到函数的数字签名;
添加单元8019,用于将数字签名添加到加密函数文件中。
可选地,参见图11,该装置还包括获取模块804,运算模块805和添加模块806。
获取模块804,用于获取第二SDK所适用的应用标识;
运算模块805,用于对获取的应用标识进行哈希运算,得到第一哈希值;
添加模块806,用于将第一哈希值添加到第二SDK中。
在本发明实施例中,当开发工具提供方接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,基于该接口文件、该加密函数文件和存储的保护逻辑库,生成第二SDK,操作简单,生成效率较高,之后,开发工具提供方将该第二SDK发送给应用开发方,以供该应用开发方基于该第二SDK发布目标应用。由于第二SDK中包括接口文件、加密函数文件和保护逻辑库,因此,第二SDK可以大大提高反编译的难度和工具量。且由于接口文件包括的是接口和接口函数声明,加密函数文件包括的是函数密文,保护逻辑库中没有第一SDK中的内容,因此,即使攻击者可以对该第二SDK成功进行反编译,也无法获取到SDK源代码,从而实现了对SDK源代码的保护,增强了SDK源代码的保密性。
需要说明的是:上述实施例提供的SDK发送装置在SDK发送时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的SDK发送装置与SDK发送实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图12,本发明实施例提供了一种应用发布装置,该装置包括接收模块1201,编译模块1202,集成模块1203和发送模块1204。
接收模块1201,用于接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;
编译模块1202,用于基于接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码;
集成模块1203,用于将加密函数文件、保护逻辑库和编译后的应用源代码进行集成,得到目标应用;
发送模块1204,用于将目标应用发送给应用发布平台,以对目标应用进行发布。
可选地,参见图13,该编译模块1202包括获取单元12021,运算单元12022和编译单元12023。
获取单元12021,用于当第二SDK中包括第一哈希值时,获取目标应用的应用标识;
运算单元12022,用于对目标应用的应用标识进行哈希运算,得到第二哈希值;
编译单元12023,用于当第二哈希值与第一哈希值相同时,基于接口文件,对应用源代码进行编译。
在本发明实施例中,应用开发方接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,基于该接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码,由于该接口文件中包括的是接口和接口函数声明,因此,即使攻击者可以从编译后的应用源代码中获取到该接口文件并对该接口文件进行反编译,也不能获取到SDK源代码,提高了SDK源代码的保密性。之后,应用开发方将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用,将该目标应用发送给应用发布平台,以对目标应用进行发布。由于加密函数文件中包括的是函数密文,后续目标应用运行时实际上调用的是加密函数文件,因此,即使攻击者可以从编译后的应用源代码中获取接口文件并对该接口文件进行篡改,也不会影响目标应用的正常运行。
需要说明的是:上述实施例提供的应用发布装置在应用发布时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用发布装置与应用发布实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图14,本发明实施例提供了一种应用运行装置,该装置包括下载模块1401和调用模块1402。
下载模块1401,用于从应用发布平台下载目标应用,目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;
调用模块1402,用于当接收到目标应用的运行指令时,基于编译后的应用源代码和保护逻辑库,调用加密函数文件,以运行目标应用。
可选地,参见图15,该调用模块1402包括第一加载解密单元14021,第一确定单元14022,获取单元14023和调用单元14024。
第一加载解密单元14021,用于当接收到目标应用的运行指令时,通过保护逻辑库对加密函数文件中的至少一个函数密文进行加载和解密,得到至少一个函数;
第一确定单元14022,用于确定运行指令所调用的目标接口;
获取单元14023,用于基于编译后的应用源代码和目标接口,从至少一个函数中获取目标函数;
调用单元14024,用于通过编译后的应用源代码调用目标函数。
可选地,参见图16,该调用模块1402包括第二确定单元14025,第二加载解密单元14026和调用单元14024。
第二确定单元14025,用于当接收到目标应用的运行指令时,确定运行指令所调用的目标接口;
第二加载解密单元14026,用于基于编译后的应用源代码和目标接口,通过保护逻辑库对加密函数文件中的目标函数密文进行加载和解密,得到目标函数;
调用单元14024,用于通过编译后的应用源代码调用目标函数。
可选地,参见图17,该调用单元14024包括运算子单元140241,获取子单元140242,解密子单元140243和调用子单元140244。
运算子单元140241,用于当加密函数文件中包括至少一个数字签名时,对目标函数进行哈希运算,得到第一摘要;
获取子单元140242,用于从至少一个数字签名中,获取目标函数的数字签名;
解密子单元140243,用于对获取的数字签名进行解密,得到第二摘要;
调用子单元140244,用于当第一摘要与第二摘要相同时,通过编译后的应用源代码调用目标函数。
在本发明实施例中,终端从应用发布平台下载目标应用,该目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,当接收到该目标应用的运行指令时,通过保护逻辑库对该加密函数文件进行加载和解密,并通过该编译后的应用源代码调用解密后的该加密函数文件,以运行该目标应用,从而在保证目标应用正常运行的同时提高了该加密函数文件的保密性。
需要说明的是:上述实施例提供的应用运行装置在应用运行时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用运行装置与应用运行发实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图18示出了本发明一个实施例提供的SDK发送装置服务器的结构示意图。该服务器可以是后台服务器集群中的服务器。具体来讲:
服务器1800包括中央处理单元(CPU)1801、包括随机存取存储器(RAM)1802和只读存储器(ROM)1803的系统存储器1804,以及连接系统存储器1804和中央处理单元1801的系统总线1805。服务器1800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1806,和用于存储操作系统1813、应用程序1814和其他程序模块1815的大容量存储设备1807。
基本输入/输出系统1806包括有用于显示信息的显示器1808和用于用户输入信息的诸如鼠标、键盘之类的输入设备1809。其中显示器1808和输入设备1809都通过连接到系统总线1805的输入输出控制器1810连接到中央处理单元1801。基本输入/输出系统1806还可以包括输入输出控制器1810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1810还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备1807通过连接到系统总线1805的大容量存储控制器(未示出)连接到中央处理单元1801。大容量存储设备1807及其相关联的计算机可读介质为服务器1800提供非易失性存储。也就是说,大容量存储设备1807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1804和大容量存储设备1807可以统称为存储器。
根据本发明的各种实施例,服务器1800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1800可以通过连接在系统总线1805上的网络接口单元1811连接到网络1812,或者说,也可以使用网络接口单元1811来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行,所述一个或者一个以上程序包含用于进行本发明实施例提供的如下所述的SDK发送方法的指令,包括:
当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;
基于接口文件、加密函数文件和存储的保护逻辑库,生成第二SDK,保护逻辑库用于对加密函数文件进行加载和解密;
将第二SDK发送给应用开发方,以供应用开发方基于第二SDK发布目标应用。
可选地,对第一SDK进行预处理,得到接口文件和加密函数文件,包括:
从第一SDK中,获取至少一个接口和至少一个函数;
从至少一个函数中,获取至少一个接口函数,至少一个接口函数为至少一个接口所对应的函数;
获取至少一个接口函数声明,至少一个接口函数声明为至少一个接口函数的函数声明;
基于至少一个接口和至少一个接口函数声明,生成接口文件;
对至少一个函数分别进行加密,得到至少一个函数密文;
基于至少一个函数密文,生成加密函数文件。
可选地,基于至少一个函数密文,生成加密函数文件之后,还包括:
对于至少一个函数中的每个函数,对函数进行哈希运算,得到函数的信息摘要;
对信息摘要进行加密,得到函数的数字签名;
将数字签名添加到加密函数文件中。
可选地,将第二SDK发送给应用开发方之前,还包括:
获取第二SDK所适用的应用标识;
对获取的应用标识进行哈希运算,得到第一哈希值;
将第一哈希值添加到第二SDK中。
在本发明实施例中,当开发工具提供方接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,基于该接口文件、该加密函数文件和存储的保护逻辑库,生成第二SDK,操作简单,生成效率较高,之后,开发工具提供方将该第二SDK发送给应用开发方,以供该应用开发方基于该第二SDK发布目标应用。由于第二SDK中包括接口文件、加密函数文件和保护逻辑库,因此,第二SDK可以大大提高反编译的难度和工具量。且由于接口文件包括的是接口和接口函数声明,加密函数文件包括的是函数密文,保护逻辑库中没有第一SDK中的内容,因此,即使攻击者可以对该第二SDK成功进行反编译,也无法获取到SDK源代码,从而实现了对SDK源代码的保护,增强了SDK源代码的保密性。
图19和图20是本发明实施例提供的应用发布装置的结构示意图。该应用发布装置可以为服务器或者终端。
图19示出了本发明一个实施例提供的应用发布装置服务器的结构示意图。该服务器可以是后台服务器集群中的服务器。具体来讲:
服务器1900包括中央处理单元(CPU)1901、包括随机存取存储器(RAM)1902和只读存储器(ROM)1903的系统存储器1904,以及连接系统存储器1904和中央处理单元1901的系统总线1905。服务器1900还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1906,和用于存储操作系统1913、应用程序1914和其他程序模块1915的大容量存储设备1907。
基本输入/输出系统1906包括有用于显示信息的显示器1908和用于用户输入信息的诸如鼠标、键盘之类的输入设备1909。其中显示器1908和输入设备1909都通过连接到系统总线1905的输入输出控制器1910连接到中央处理单元1901。基本输入/输出系统1906还可以包括输入输出控制器1910以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1910还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备1907通过连接到系统总线1905的大容量存储控制器(未示出)连接到中央处理单元1901。大容量存储设备1907及其相关联的计算机可读介质为服务器1900提供非易失性存储。也就是说,大容量存储设备1907可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1904和大容量存储设备1907可以统称为存储器。
根据本发明的各种实施例,服务器1900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1900可以通过连接在系统总线1905上的网络接口单元1911连接到网络1912,或者说,也可以使用网络接口单元1911来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行,所述一个或者一个以上程序包含用于进行本发明实施例提供的如下所述的应用发布方法的指令,包括:
接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;
基于接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码;
将加密函数文件、保护逻辑库和编译后的应用源代码进行集成,得到目标应用;
将目标应用发送给应用发布平台,以对目标应用进行发布。
可选地,基于接口文件,对应用源代码进行编译,包括:
当第二SDK中包括第一哈希值时,获取目标应用的应用标识;
对目标应用的应用标识进行哈希运算,得到第二哈希值;
当第二哈希值与第一哈希值相同时,基于接口文件,对应用源代码进行编译。
在本发明实施例中,应用开发方接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,基于该接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码,由于该接口文件中包括的是接口和接口函数声明,因此,即使攻击者可以从编译后的应用源代码中获取到该接口文件并对该接口文件进行反编译,也不能获取到SDK源代码,提高了SDK源代码的保密性。之后,应用开发方将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用,将该目标应用发送给应用发布平台,以对目标应用进行发布。由于加密函数文件中包括的是函数密文,后续目标应用运行时实际上调用的是加密函数文件,因此,即使攻击者可以从编译后的应用源代码中获取接口文件并对该接口文件进行篡改,也不会影响目标应用的正常运行。
图20是本发明实施例提供的一种应用发布装置终端的结构示意图。参见图20,终端2000可以包括通信单元2010、包括有一个或一个以上计算机可读存储介质的存储器2020、输入单元2030、显示单元2040、传感器2050、音频电路2060、WIFI(WirelessFidelity,无线保真)模块2070、包括有一个或者一个以上处理核心的处理器2080、以及电源2090等部件。本领域技术人员可以理解,图20中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
通信单元2010可用于收发信息或通话过程中,信号的接收和发送,该通信单元2010可以为RF(Radio Freque至少一cy,射频)电路、路由器、调制解调器、等网络通信设备。特别地,当通信单元2010为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器2080处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、L至少一A(Low至少一oise Amplifier,低噪声放大器)、双工器等。此外,通信单元2010还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile commu至少一icatio至少一,全球移动通讯系统)、GPRS(Ge至少一eral Packet Radio Service,通用分组无线服务)、CDMA(Code Divisio至少一Multiple Access,码分多址)、WCDMA(Wideba至少一d Code Divisio至少一Multiple Access,宽带码分多址)、LTE(Lo至少一g Term Evolutio至少一,长期演进)、电子邮件、SMS(Short Messagi至少一g Service,短消息服务)等。存储器2020可用于存储软件程序以及模块,处理器2080通过运行存储在存储器2020的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器2020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端2000的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器2020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器2020还可以包括存储器控制器,以提供处理器2080和输入单元2030对存储器2020的访问。
输入单元2030可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。优选地,输入单元2030可包括触敏表面2031以及其他输入设备2032。触敏表面2031,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面2031上或在触敏表面2031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面2031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器2080,并能接收处理器2080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面2031。除了触敏表面2031,输入单元2030还可以包括其他输入设备2032。优选地,其他输入设备2032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元2040可用于显示由用户输入的信息或提供给用户的信息以及终端2000的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元2040可包括显示面板2041,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Orga至少一ic Light-Emitti至少一g Diode,有机发光二极管)等形式来配置显示面板2041。进一步的,触敏表面2031可覆盖显示面板2041,当触敏表面2031检测到在其上或附近的触摸操作后,传送给处理器2080以确定触摸事件的类型,随后处理器2080根据触摸事件的类型在显示面板2041上提供相应的视觉输出。虽然在图20中,触敏表面2031与显示面板2041是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面2031与显示面板2041集成而实现输入和输出功能。
终端2000还可包括至少一种传感器2050,比如光传感器、运动传感器以及其他传感器。光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板2041的亮度,接近传感器可在终端2000移动到耳边时,关闭显示面板2041和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端2000还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路2060、扬声器2061,传声器2062可提供用户与终端2000之间的音频接口。音频电路2060可将接收到的音频数据转换后的电信号,传输到扬声器2061,由扬声器2061转换为声音信号输出;另一方面,传声器2062将收集的声音信号转换为电信号,由音频电路2060接收后转换为音频数据,再将音频数据输出处理器2080处理后,经通信单元2010以发送给比如另一终端,或者将音频数据输出至存储器2020以便进一步处理。音频电路2060还可能包括耳塞插孔,以提供外设耳机与终端2000的通信。
为了实现无线通信,该终端上可以配置有无线通信单元2070,该无线通信单元2070可以为WIFI模块。WIFI属于短距离无线传输技术,终端2000通过无线通信单元2070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图中示出了无线通信单元2070,但是可以理解的是,其并不属于终端2000的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器2080是终端2000的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器2020内的软件程序和/或模块,以及调用存储在存储器2020内的数据,执行终端2000的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器2080可包括一个或多个处理核心;优选的,处理器2080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器2080中。
终端2000还包括给各个部件供电的电源2090(比如电池),优选的,电源可以通过电源管理系统与处理器2080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源2060还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端2000还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,终端还包括有一个或者一个以上的程序,这一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,所述一个或者一个以上程序包含用于进行本发明实施例提供的如下所述的应用发布方法的指令,包括:
接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,接口文件包括至少一个接口和至少一个接口函数声明,至少一个接口和至少一个接口函数声明包含于第一SDK中,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;
基于接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码;
将加密函数文件、保护逻辑库和编译后的应用源代码进行集成,得到目标应用;
将目标应用发送给应用发布平台,以对目标应用进行发布。
可选地,基于接口文件,对应用源代码进行编译,包括:
当第二SDK中包括第一哈希值时,获取目标应用的应用标识;
对目标应用的应用标识进行哈希运算,得到第二哈希值;
当第二哈希值与第一哈希值相同时,基于接口文件,对应用源代码进行编译。
在本发明实施例中,应用开发方接收开发工具提供方发送的第二SDK,第二SDK包括接口文件、加密函数文件和保护逻辑库,基于该接口文件,对应用源代码进行编译,应用源代码为待开发的目标应用的源代码,由于该接口文件中包括的是接口和接口函数声明,因此,即使攻击者可以从编译后的应用源代码中获取到该接口文件并对该接口文件进行反编译,也不能获取到SDK源代码,提高了SDK源代码的保密性。之后,应用开发方将该加密函数文件、该保护逻辑库和编译后的应用源代码进行集成,得到目标应用,将该目标应用发送给应用发布平台,以对目标应用进行发布。由于加密函数文件中包括的是函数密文,后续目标应用运行时实际上调用的是加密函数文件,因此,即使攻击者可以从编译后的应用源代码中获取接口文件并对该接口文件进行篡改,也不会影响目标应用的正常运行。
图21是本发明实施例提供的一种应用运行装置终端的结构示意图。参见图21,终端2100可以包括通信单元2110、包括有一个或一个以上计算机可读存储介质的存储器2120、输入单元2130、显示单元2140、传感器2150、音频电路2160、WIFI(WirelessFidelity,无线保真)模块2170、包括有一个或者一个以上处理核心的处理器2180、以及电源2190等部件。本领域技术人员可以理解,图21中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
通信单元2110可用于收发信息或通话过程中,信号的接收和发送,该通信单元2110可以为RF(Radio Freque至少一cy,射频)电路、路由器、调制解调器、等网络通信设备。特别地,当通信单元2110为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器2180处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、L至少一A(Low至少一oise Amplifier,低噪声放大器)、双工器等。此外,通信单元2110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile commu至少一icatio至少一,全球移动通讯系统)、GPRS(Ge至少一eral Packet Radio Service,通用分组无线服务)、CDMA(Code Divisio至少一Multiple Access,码分多址)、WCDMA(Wideba至少一d Code Divisio至少一Multiple Access,宽带码分多址)、LTE(Lo至少一g Term Evolutio至少一,长期演进)、电子邮件、SMS(Short Messagi至少一g Service,短消息服务)等。存储器2120可用于存储软件程序以及模块,处理器2180通过运行存储在存储器2120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器2120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端2100的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器2120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器2120还可以包括存储器控制器,以提供处理器2180和输入单元2130对存储器2120的访问。
输入单元2130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。优选地,输入单元2130可包括触敏表面2131以及其他输入设备2132。触敏表面2131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面2131上或在触敏表面2131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面2131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器2180,并能接收处理器2180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面2131。除了触敏表面2131,输入单元2130还可以包括其他输入设备2132。优选地,其他输入设备2132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元2140可用于显示由用户输入的信息或提供给用户的信息以及终端2100的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元2140可包括显示面板2141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Orga至少一ic Light-Emitti至少一g Diode,有机发光二极管)等形式来配置显示面板2141。进一步的,触敏表面2131可覆盖显示面板2141,当触敏表面2131检测到在其上或附近的触摸操作后,传送给处理器2180以确定触摸事件的类型,随后处理器2180根据触摸事件的类型在显示面板2141上提供相应的视觉输出。虽然在图21中,触敏表面2131与显示面板2141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面2131与显示面板2141集成而实现输入和输出功能。
终端2100还可包括至少一种传感器2150,比如光传感器、运动传感器以及其他传感器。光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板2141的亮度,接近传感器可在终端2100移动到耳边时,关闭显示面板2141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端2100还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路2160、扬声器2161,传声器2162可提供用户与终端2100之间的音频接口。音频电路2160可将接收到的音频数据转换后的电信号,传输到扬声器2161,由扬声器2161转换为声音信号输出;另一方面,传声器2162将收集的声音信号转换为电信号,由音频电路2160接收后转换为音频数据,再将音频数据输出处理器2180处理后,经通信单元2110以发送给比如另一终端,或者将音频数据输出至存储器2120以便进一步处理。音频电路2160还可能包括耳塞插孔,以提供外设耳机与终端2100的通信。
为了实现无线通信,该终端上可以配置有无线通信单元2170,该无线通信单元2170可以为WIFI模块。WIFI属于短距离无线传输技术,终端2100通过无线通信单元2170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图中示出了无线通信单元2170,但是可以理解的是,其并不属于终端2100的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器2180是终端2100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器2120内的软件程序和/或模块,以及调用存储在存储器2120内的数据,执行终端2100的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器2180可包括一个或多个处理核心;优选的,处理器2180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器2180中。
终端2100还包括给各个部件供电的电源2190(比如电池),优选的,电源可以通过电源管理系统与处理器2180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源2160还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端2100还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,终端还包括有一个或者一个以上的程序,这一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,所述一个或者一个以上程序包含用于进行本发明实施例提供的如下所述的应用运行方法的指令,包括:
从应用发布平台下载目标应用,目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,加密函数文件是对第一SDK中的函数进行加密得到,第一SDK为用于进行应用开发的SDK;
当接收到目标应用的运行指令时,基于编译后的应用源代码和保护逻辑库,调用加密函数文件,以运行目标应用。
可选地,基于编译后的应用源代码和保护逻辑库,调用加密函数文件,包括:
通过保护逻辑库对加密函数文件中的至少一个函数密文进行加载和解密,得到至少一个函数;
确定运行指令所调用的目标接口;
基于编译后的应用源代码和目标接口,从至少一个函数中获取目标函数;
通过编译后的应用源代码调用目标函数。
可选地,基于编译后的应用源代码和保护逻辑库,调用加密函数文件,包括:
确定运行指令所调用的目标接口;
基于编译后的应用源代码和目标接口,通过保护逻辑库对加密函数文件中的目标函数密文进行加载和解密,得到目标函数;
通过编译后的应用源代码调用目标函数。
可选地,通过编译后的应用源代码调用目标函数,包括:
当加密函数文件中包括至少一个数字签名时,对目标函数进行哈希运算,得到第一摘要;
从至少一个数字签名中,获取目标函数的数字签名;
对获取的数字签名进行解密,得到第二摘要;
当第一摘要与第二摘要相同时,通过编译后的应用源代码调用目标函数。
在本发明实施例中,终端从应用发布平台下载目标应用,该目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,当接收到该目标应用的运行指令时,通过保护逻辑库对该加密函数文件进行加载和解密,并通过该编译后的应用源代码调用解密后的该加密函数文件,以运行该目标应用,从而在保证目标应用正常运行的同时提高了该加密函数文件的保密性。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种软件开发工具包SDK发送方法,其特征在于,所述方法包括:
当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于所述第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
基于所述接口文件、所述加密函数文件和存储的保护逻辑库,生成第二SDK,所述保护逻辑库用于对所述加密函数文件进行加载和解密;
获取所述第二SDK所适用的应用标识;
对获取的应用标识进行哈希运算,得到第一哈希值;
将所述第一哈希值添加到所述第二SDK中;
将所述第二SDK发送给应用开发方,以供所述应用开发方基于所述第二SDK发布目标应用。
2.如权利要求1所述的方法,其特征在于,所述对第一SDK进行预处理,得到接口文件和加密函数文件,包括:
从所述第一SDK中,获取至少一个接口和至少一个函数;
从所述至少一个函数中,获取至少一个接口函数,所述至少一个接口函数为所述至少一个接口所对应的函数;
获取所述至少一个接口函数声明,所述至少一个接口函数声明为所述至少一个接口函数的函数声明;
基于所述至少一个接口和所述至少一个接口函数声明,生成所述接口文件;
对所述至少一个函数分别进行加密,得到至少一个函数密文;
基于所述至少一个函数密文,生成所述加密函数文件。
3.如权利要求2所述的方法,其特征在于,所述基于所述至少一个函数密文,生成所述加密函数文件之后,还包括:
对于所述至少一个函数中的每个函数,对所述函数进行哈希运算,得到所述函数的信息摘要;
对所述信息摘要进行加密,得到所述函数的数字签名;
将所述数字签名添加到所述加密函数文件中。
4.一种应用发布方法,其特征在于,所述方法包括:
接收开发工具提供方发送的第二SDK,所述第二SDK包括接口文件、加密函数文件、保护逻辑库和第一哈希值,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK,所述第一哈希值是对所述第二SDK所适用的应用标识进行哈希运算得到;
基于所述接口文件,对应用源代码进行编译,所述应用源代码为待开发的目标应用的源代码;
将所述加密函数文件、所述保护逻辑库和编译后的应用源代码进行集成,得到所述目标应用;
将所述目标应用发送给应用发布平台,以对所述目标应用进行发布。
5.如权利要求4所述的方法,其特征在于,所述基于所述接口文件,对应用源代码进行编译,包括:
获取所述目标应用的应用标识;
对所述目标应用的应用标识进行哈希运算,得到第二哈希值;
当所述第二哈希值与所述第一哈希值相同时,基于所述接口文件,对所述应用源代码进行编译。
6.一种应用运行方法,其特征在于,所述方法包括:
从应用发布平台下载目标应用,所述目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,所述加密函数文件是对第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
当接收到所述目标应用的运行指令时,基于所述编译后的应用源代码和所述保护逻辑库,调用所述加密函数文件,以运行所述目标应用;
其中,所述基于所述编译后的应用源代码和所述保护逻辑库,调用所述加密函数文件,包括:
通过所述保护逻辑库对所述加密函数文件中的至少一个函数密文进行加载和解密,得到至少一个函数;确定所述运行指令所调用的目标接口;基于所述编译后的应用源代码和所述目标接口,从所述至少一个函数中获取目标函数;通过所述编译后的应用源代码调用所述目标函数;或者,
确定所述运行指令所调用的目标接口;基于所述编译后的应用源代码和所述目标接口,通过所述保护逻辑库对所述加密函数文件中的目标函数密文进行加载和解密,得到目标函数;通过所述编译后的应用源代码调用所述目标函数;
其中,所述通过所述编译后的应用源代码调用所述目标函数,包括:
当所述加密函数文件中包括至少一个数字签名时,对所述目标函数进行哈希运算,得到第一摘要;
从所述至少一个数字签名中,获取所述目标函数的数字签名;
对获取的数字签名进行解密,得到第二摘要;
当所述第一摘要与所述第二摘要相同时,通过所述编译后的应用源代码调用所述目标函数。
7.一种软件开发工具包SDK发送装置,其特征在于,所述装置包括:
处理模块,用于当接收到处理指令时,对第一SDK进行预处理,得到接口文件和加密函数文件,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于所述第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
生成模块,用于基于所述接口文件、所述加密函数文件和存储的保护逻辑库,生成第二SDK,所述保护逻辑库用于对所述加密函数文件进行加载和解密;
获取模块,用于获取所述第二SDK所适用的应用标识;
运算模块,用于对获取的应用标识进行哈希运算,得到第一哈希值;
添加模块,用于将所述第一哈希值添加到所述第二SDK中;
发送模块,用于将所述第二SDK发送给应用开发方,以供所述应用开发方基于所述第二SDK发布目标应用。
8.如权利要求7所述的装置,其特征在于,所述处理模块包括:
第一获取单元,用于当接收到处理指令时,从所述第一SDK中,获取至少一个接口和至少一个函数;
第二获取单元,用于从所述至少一个函数中,获取至少一个接口函数,所述至少一个接口函数为所述至少一个接口所对应的函数;
第三获取单元,用于获取所述至少一个接口函数声明,所述至少一个接口函数声明为所述至少一个接口函数的函数声明;
第一生成单元,用于基于所述至少一个接口和所述至少一个接口函数声明,生成所述接口文件;
第一加密单元,用于对所述至少一个函数分别进行加密,得到至少一个函数密文;
第二生成单元,用于基于所述至少一个函数密文,生成所述加密函数文件。
9.如权利要求8所述的装置,其特征在于,所述处理模块还包括:
运算单元,用于对于所述至少一个函数中的每个函数,对所述函数进行哈希运算,得到所述函数的信息摘要;
第二加密单元,用于对所述信息摘要进行加密,得到所述函数的数字签名;
添加单元,用于将所述数字签名添加到所述加密函数文件中。
10.一种应用发布装置,其特征在于,所述装置包括:
接收模块,用于接收开发工具提供方发送的第二SDK,所述第二SDK包括接口文件、加密函数文件、保护逻辑库和第一哈希值,所述接口文件包括至少一个接口和至少一个接口函数声明,所述至少一个接口和所述至少一个接口函数声明包含于第一SDK中,所述加密函数文件是对所述第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK,所述第一哈希值是对所述第二SDK所适用的应用标识进行哈希运算得到;
编译模块,用于基于所述接口文件,对应用源代码进行编译,所述应用源代码为待开发的目标应用的源代码;
集成模块,用于将所述加密函数文件、所述保护逻辑库和编译后的应用源代码进行集成,得到所述目标应用;
发送模块,用于将所述目标应用发送给应用发布平台,以对所述目标应用进行发布。
11.如权利要求10所述的装置,其特征在于,所述编译模块包括:
获取单元,用于获取所述目标应用的应用标识;
运算单元,用于对所述目标应用的应用标识进行哈希运算,得到第二哈希值;
编译单元,用于当所述第二哈希值与所述第一哈希值相同时,基于所述接口文件,对所述应用源代码进行编译。
12.一种应用运行装置,其特征在于,所述装置包括:
下载模块,用于从应用发布平台下载目标应用,所述目标应用包括加密函数文件、保护逻辑库和编译后的应用源代码,所述加密函数文件是对第一SDK中的函数进行加密得到,所述第一SDK为用于进行应用开发的SDK;
调用模块,用于当接收到所述目标应用的运行指令时,基于所述编译后的应用源代码和所述保护逻辑库,调用所述加密函数文件,以运行所述目标应用;
其中,所述调用模块包括:
第一加载解密单元,用于当接收到所述目标应用的运行指令时,通过所述保护逻辑库对所述加密函数文件中的至少一个函数密文进行加载和解密,得到至少一个函数;第一确定单元,用于确定所述运行指令所调用的目标接口;获取单元,用于基于所述编译后的应用源代码和所述目标接口,从所述至少一个函数中获取目标函数;调用单元,用于通过所述编译后的应用源代码调用所述目标函数;或者,
第二确定单元,用于当接收到所述目标应用的运行指令时,确定所述运行指令所调用的目标接口;第二加载解密单元,用于基于所述编译后的应用源代码和所述目标接口,通过所述保护逻辑库对所述加密函数文件中的目标函数密文进行加载和解密,得到目标函数;调用单元,用于通过所述编译后的应用源代码调用所述目标函数;
其中,所述调用单元包括:
运算子单元,用于当所述加密函数文件中包括至少一个数字签名时,对所述目标函数进行哈希运算,得到第一摘要;
获取子单元,用于从所述至少一个数字签名中,获取所述目标函数的数字签名;
解密子单元,用于对获取的数字签名进行解密,得到第二摘要;
调用子单元,用于当所述第一摘要与所述第二摘要相同时,通过所述编译后的应用源代码调用所述目标函数。
CN201610093791.6A 2016-02-19 2016-02-19 Sdk发送、应用发布、应用运行方法及装置 Active CN107103211B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610093791.6A CN107103211B (zh) 2016-02-19 2016-02-19 Sdk发送、应用发布、应用运行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610093791.6A CN107103211B (zh) 2016-02-19 2016-02-19 Sdk发送、应用发布、应用运行方法及装置

Publications (2)

Publication Number Publication Date
CN107103211A CN107103211A (zh) 2017-08-29
CN107103211B true CN107103211B (zh) 2019-03-08

Family

ID=59658789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610093791.6A Active CN107103211B (zh) 2016-02-19 2016-02-19 Sdk发送、应用发布、应用运行方法及装置

Country Status (1)

Country Link
CN (1) CN107103211B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109195157B (zh) * 2018-09-04 2021-09-07 中国联合网络通信集团有限公司 应用管理方法、装置及终端
CN109409037B (zh) * 2018-09-29 2022-04-29 创新先进技术有限公司 一种数据混淆规则的生成方法、装置及设备
CN109543433B (zh) * 2018-11-27 2022-06-24 杭州网易智企科技有限公司 软件开发工具包加密方法、装置、计算机和存储介质
CN109766161B (zh) * 2019-01-10 2022-02-22 智恒科技股份有限公司 一种基于配置化技术生成水务应用的方法及系统
CN111597586B (zh) * 2020-05-26 2023-06-09 牛津(海南)区块链研究院有限公司 一种区块链隐私保护方法、系统及装置
CN112965705B (zh) * 2021-03-10 2024-06-04 中国民航信息网络股份有限公司 微服务接口的发布方法、装置、电子设备和存储介质
CN113741946B (zh) * 2021-08-25 2023-06-09 烽火通信科技股份有限公司 公共接口函数库的裁剪方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103491111A (zh) * 2012-06-08 2014-01-01 阿里巴巴集团控股有限公司 无线应用发布、实现方法与装置
CN103595770A (zh) * 2013-10-29 2014-02-19 北京奇虎科技有限公司 Sdk实现文件下载的方法与装置
CN104504311A (zh) * 2015-01-19 2015-04-08 炫彩互动网络科技有限公司 一种安全的sdk制作和运行方法
CN105260186A (zh) * 2015-10-19 2016-01-20 厦门骐俊物联科技股份有限公司 用于嵌入式系统的应用程序sdk的构建方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789033B2 (en) * 2012-02-03 2014-07-22 International Business Machines Corporation Reducing application startup time by optimizing spatial locality of instructions in executables
CN105022962A (zh) * 2015-07-02 2015-11-04 四川效率源信息安全技术有限责任公司 网盘数据内容加密保护的方法
CN105022651B (zh) * 2015-07-29 2018-08-28 北京后易科技有限公司 一种设备生产过程中的防盗版方法及固件烧写装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103491111A (zh) * 2012-06-08 2014-01-01 阿里巴巴集团控股有限公司 无线应用发布、实现方法与装置
CN103595770A (zh) * 2013-10-29 2014-02-19 北京奇虎科技有限公司 Sdk实现文件下载的方法与装置
CN104504311A (zh) * 2015-01-19 2015-04-08 炫彩互动网络科技有限公司 一种安全的sdk制作和运行方法
CN105260186A (zh) * 2015-10-19 2016-01-20 厦门骐俊物联科技股份有限公司 用于嵌入式系统的应用程序sdk的构建方法及装置

Also Published As

Publication number Publication date
CN107103211A (zh) 2017-08-29

Similar Documents

Publication Publication Date Title
CN107103211B (zh) Sdk发送、应用发布、应用运行方法及装置
CN107786504B (zh) Elf文件发布方法、elf文件校验方法、服务器及终端
US20210042601A1 (en) Method and device for encrypting model of neural network, and storage medium
CN106598584B (zh) 一种处理资源文件的方法、装置和系统
US11057216B2 (en) Protection method and protection system of system partition key data and terminal
CN103616981B (zh) 应用处理方法、装置及移动终端
CN110417543B (zh) 一种数据加密方法、装置和存储介质
CN108595970A (zh) 处理组件的配置方法、装置、终端及存储介质
CN104598263B (zh) 应用程序运行方法、配置文件生成方法和装置
CN106709282B (zh) 资源文件解密方法及装置
CN106708554B (zh) 程序运行方法及装置
CN104965722B (zh) 一种显示信息的方法及装置
CN106599698B (zh) 一种加密图片、解密图片的方法和装置
CN109558734A (zh) 一种堆栈安全性的检测方法及装置、移动设备
CN108011879A (zh) 文件加密、解密的方法、装置、设备和存储介质
CN105389259B (zh) 一种进行应用程序测试的方法、装置及系统
CN107622200A (zh) 应用程序的安全性检测方法及装置
CN111460516B (zh) 基于非侵入式的数据保护方法、装置、终端及存储介质
CN107590397A (zh) 一种显示内嵌网页的方法和装置
CN107911818A (zh) 移动终端间数据传输的方法、装置及移动终端
CN109753793A (zh) 一种热补丁方法及热补丁装置
CN104700003A (zh) 一种文件加壳及脱壳方法、装置及系统
CN106708555B (zh) 一种加载插件的方法和装置
CN107592409A (zh) 应用程序控制方法及装置
WO2014209266A1 (en) Collaborative streaming system for protected media

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