CN107766701B - 电子设备、动态库文件保护方法及装置 - Google Patents

电子设备、动态库文件保护方法及装置 Download PDF

Info

Publication number
CN107766701B
CN107766701B CN201610696884.8A CN201610696884A CN107766701B CN 107766701 B CN107766701 B CN 107766701B CN 201610696884 A CN201610696884 A CN 201610696884A CN 107766701 B CN107766701 B CN 107766701B
Authority
CN
China
Prior art keywords
application program
library file
dynamic library
target application
judging
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
CN201610696884.8A
Other languages
English (en)
Other versions
CN107766701A (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 Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201610696884.8A priority Critical patent/CN107766701B/zh
Publication of CN107766701A publication Critical patent/CN107766701A/zh
Application granted granted Critical
Publication of CN107766701B publication Critical patent/CN107766701B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Abstract

本公开提供了一种电子设备、动态库文件保护方法及装置。该方法包括:在一应用程序调用一动态库文件的一接口函数时,验证所述应用程序是否为目标应用程序;在验证所述应用程序为所述目标应用程序时,将所述动态库文件中至少作用于所述接口函数的一状态变量的值由第一值设置为第二值;在所述状态变量为所述第一值时设置所述接口函数为不可被执行以及在所述状态变量为第二值时设置所述接口函数为可被执行。该方法可防止动态库文件被非目标应用程序调用。

Description

电子设备、动态库文件保护方法及装置
技术领域
本公开涉及应用软件开发技术领域,具体而言,涉及一种动态库文件保护方法、动态库文件保护装置及应用该动态库文件保护装置的电子设备。
背景技术
动态库文件是实现共享函数库概念的一种方式。动态链接方式使应用程序可以调用不属于其可执行代码的函数,该函数的可执行代码位于一个动态库文件中,该动态库文件可以包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。
以安卓系统为例,动态库文件开发者可以将核心实现方案写在一动态库文件so库(so格式动态库文件)中供应用程序调用,编译时so库将随应用程序的其他部分被打包成apk格式文件。
然而,若该应用程序被放到公共网络上供用户下载、安装以及使用,apk格式文件被反解压缩反编译的风险就会存在。将apk格式文件解压缩之后,非法使用者就能够拿到应用程序中的so库,通过反编译就能够拿到这个so库的接口类。非法使用者拿到了so库后,即可将其集成到自己的应用程序中,通过接口类非法使用这个so库。so库一般是整个应用程序的核心技术,应用程序的开发公司或者开发者往往并不希望别人未经授权非法使用so库。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种动态库文件保护方法、动态库文件保护装置及应用该动态库文件保护装置的电子设备,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或多个问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本公开实施例的第一方面,提供一种动态库文件保护方法,包括在一应用程序调用一动态库文件的一接口函数时,验证所述应用程序是否为目标应用程序;在验证所述应用程序为所述目标应用程序时,将所述动态库文件中至少作用于所述接口函数的一状态变量的值由第一值设置为第二值;在所述状态变量为所述第一值时设置所述接口函数为不可被执行以及在所述状态变量为第二值时设置所述接口函数为可被执行。
在本公开的一种示例性实施例中,所述状态变量作用于所述动态库文件中的多个接口函数。
在本公开的一种示例性实施例中,所述状态变量默认为所述第一值。
在本公开的一种示例性实施例中,所述目标应用程序具有一预设私钥;其中,验证所述应用程序是否为目标应用程序包括:生成一个随机数发送至所述应用程序;接收所述应用程序使用一私钥对所述随机数加密得到的密文;使用与所述预设私钥相对应的一预设公钥对所述密文进行解密并判断是否解密得到所述随机数;在得到所述随机数时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
在本公开的一种示例性实施例中,所述目标应用程序具有一预设验证信息;其中,验证所述应用程序是否为目标应用程序包括:接收所述应用程序发送的一验证信息,并比对所述验证信息是否与所述预设验证信息一致;在所述验证信息与所述预设验证信息一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
在本公开的一种示例性实施例中,验证所述应用程序是否为目标应用程序包括:获取所述应用程序的包名以及数字签名,并判断所述应用程序的包名以及数字签名是否与所述目标应用程序的包名以及数字签名一致;在所述应用程序的包名以及数字签名与所述目标应用程序的包名以及数字签名一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
根据本公开实施例的第二方面,提供一种动态库文件保护装置,包括:身份验证模块,用于在一应用程序调用一动态库文件文件的一接口函数时,验证所述应用程序是否为目标应用程序;变量设置模块,用于在验证所述应用程序为所述目标应用程序时,将所述动态库文件中至少作用于所述接口函数的一状态变量的值由第一值设置为第二值;执行设置模块,用于在所述状态变量为所述第一值时设置所述接口函数为不可被执行以及在所述状态变量为第二值时设置所述接口函数为可被执行。
在本公开的一种示例性实施例中,所述状态变量作用于所述动态库文件中的多个接口函数。
在本公开的一种示例性实施例中,所述状态变量默认为所述第一值。
在本公开的一种示例性实施例中,所述目标应用程序具有一预设私钥;其中,验证所述应用程序是否为目标应用程序包括:生成一个随机数发送至所述应用程序;接收所述应用程序使用一私钥对所述随机数加密得到的密文;使用与所述预设私钥相对应的一预设公钥对所述密文进行解密并判断是否解密得到所述随机数;在得到所述随机数时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
在本公开的一种示例性实施例中,所述目标应用程序具有一预设验证信息;其中,验证所述应用程序是否为目标应用程序包括:接收所述应用程序发送的一验证信息,并比对所述验证信息是否与所述预设验证信息一致;在所述验证信息与所述预设验证信息一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
在本公开的一种示例性实施例中,验证所述应用程序是否为目标应用程序包括:获取所述应用程序的包名以及数字签名,并判断所述应用程序的包名以及数字签名是否与所述目标应用程序的包名以及数字签名一致;在所述应用程序的包名以及数字签名与所述目标应用程序的包名以及数字签名一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
根据本公开实施例的第三方面,提供一种电子设备,所述电子设备安装有至少一应用程序,所述应用程序包括至少一动态库文件,所述动态库文件保护装置用于对所述动态库文件进行保护。
根据本公开的动态库文件保护方法,通过验证调用动态库文件的应用程序身份,判断所述应用程序是否有权限调用所述动态库文件,可以防止动态库文件被除目标应用程序之外的应用程序调用,保护了动态库文件中的核心技术,使该核心技术不被非法利用。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出本公开示例性实施例中一种动态库文件保护方法流程图。
图2示意性示出本公开示例性实施例中一种验证应用程序是否为目标应用程序的步骤的流程图。
图3示意性示出本公开示例性实施例中另一种验证应用程序是否为目标应用程序的步骤的流程图。
图4示意性示出本公开示例性实施例中再一种验证应用程序是否为目标应用程序的步骤的流程图。
图5示意性示出本公开示例性实施例中一种动态库文件保护装置的框图。
图6示意性示出本公开示例性实施例中一种电子设备的框图。
图7示意性示出本公开示例性实施例中一种电子设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
本示例实施方式中首先提供了一种动态库文件保护方法,图1是本公开示例性实施例中动态库文件保护方法流程图。如图1所示的动态库文件保护方法可以包括:
步骤S10,在一应用程序调用一动态库文件的一接口函数时,验证所述应用程序是否为目标应用程序。
以安卓操作系统为例,当一安卓应用程序被反编译后,非法使用者得到了所述安卓应用程序的so库(.so格式动态库文件)。非法使用者将该so库集成到自己的应用程序中,希望通过调用该so库中的某些库函数实现利用他人核心技术的目的。so库一般由一组接口函数和内部功能逻辑组成,功能逻辑支持接口函数的工作。so库接口函数接到一应用程序的调用命令时,先判断该应用程序是否为目标应用程序。本示例实施方式中的目标应用程序为具有调用所述动态库文件权限的应用程序,例如,最初使用该so库的应用程序、同一公司的应用程序、具有使用授权的应用程序等等。当然,在其他操作系统,例如IOS操作系统中,所述动态库文件也可能为其他形式,本示例性实施例中对此不做特殊限定。
步骤S20,在验证所述应用程序为所述目标应用程序时,将所述动态库文件中至少作用于所述接口函数的一状态变量的值由第一值设置为第二值。
本示例性实施例中,可以预先在被保护动态库文件中定义一种状态变量,该状态变量作用域例如可以为该动态库文件中的所有接口函数或部分接口函数。当该状态变量为第一值时,所述接口函数不可被执行;当该状态变量为第二值时,所述接口函数可被执行。本示例实施方式中,该状态变量可以默认为所述第一值,并且所述状态变量可以为一个或多个,每一所述状态变量的作用域可以为一个或多个接口函数。
进一步地,可以在所述动态库文件中设置特殊接口函数,用于改变所述状态变量的值。与所述状态变量相对应,本实施例中,所述特殊接口函数可以为一个或多个。
例如,在应用程序App_A的so库(记为A.so)中设置一个全局变量switch,这个switch是允许或者不允许A.so被App使用的总开关。
所述全局变量switch的默认值代表的是“不允许使用”,也就是说,打开应用程序时A.so缺省是不允许应用程序使用的,应用程序要想使用A.so,就必须通过调用一特殊接口函数来将这个switch的值变成“允许使用”。举例而言,所述特殊接口函数写为如下逻辑架构:
Figure BDA0001084778980000061
Figure BDA0001084778980000071
步骤S30,在所述状态变量为所述第一值时设置所述接口函数为不可被执行以及在所述状态变量为第二值时设置所述接口函数为可被执行。
例如,结合步骤S20,每个受switch保护的接口函数可以都写为如下逻辑架构:
Figure BDA0001084778980000072
在步骤S10中,验证应用程序是否为目标应用程序的方法可以包括公私钥验证方法、保密数据验证方法以及应用程序包名及签名验证方法等。当然,在本公开的其他示例性实施例中,也可以采用其他验证方法。
本实施方式提供的动态库文件保护方法,通过验证调用动态库文件的应用程序身份,判断动态库文件是否执行被应用程序调用,可以防止动态库文件被除目标应用程序之外的应用程序调用,保护了动态库文件中的核心技术,使该核心技术不被非法利用。
图2是上述步骤S10中验证应用程序是否为目标应用程序的一种流程图。如图2所示的验证应用程序是否为目标应用程序的步骤可以包括:
步骤S101,生成一个随机数发送至所述应用程序。
本示例实施方式中,目标应用程序和动态库文件可以分别保存一对公私钥中的私钥和公钥,所述公私钥可以由RSA(Ron-Adi-Leonard,公钥加密算法)算法、ECC(EllipticCurves Cryptography,椭圆曲线密码编码学)算法等生成。
例如,应用程序APP_A的so库A.so生成一个随机数random,并发送给调用A.so的应用程序。所述随机数可以由随机数生成算法产生,例如线性同余法等随机数生成算法。
步骤S102,接收所述应用程序使用一私钥对所述随机数加密得到的密文。
例如,应用程序使用所述私钥对随机数random加密得到密文encrypt_random,并将密文encrypt_random回传给A.so。
本示例实施方式中,所述私钥可以保存在云端,由所述应用程序预先从云端提取出来。在提取私钥过程中,云端需对应用程序身份进行验证。所述云端泛指网络,云端服务就是“网络服务网络”。举凡运用网络沟通多台计算机的运算工作,或是透过网络联机取得由远程主机提供的服务等,都可以算是一种云端服务。
因此,将私钥保存在云端可以实现目标应用程序不局限于设备即可获取私钥,并且在取用私钥时通过确认应用程序的身份保证了私钥的安全性。但本示例性实施例中并不以此为限,将所述私钥保存在本地,同样属于本公开的保护范围。
步骤S103,使用与所述预设私钥相对应的一预设公钥对所述密文进行解密并判断是否解密得到所述随机数。
例如,A.so使用公钥对encrypt_random进行解密并得到解密后的数据random1,A.so对random1和random进行比对。
步骤S104,在得到所述随机数时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
例如,random1等于random,说明调用者拥有所述私钥,即调用者就是目标应用程序。如果random1不等于random,说明调用者不拥有所述私钥,即调用者不是目标应用程序。
图3是上述步骤S10中验证应用程序是否为目标应用程序的另一种流程图。如图3所示的验证应用程序是否为目标应用程序的流程也可以包括:
步骤S101,应用程序和动态库文件均保存一保密数据;动态库文件接收所述应用程序发送的一验证信息,并比对所述验证信息是否与所述预设验证信息一致。
例如,目标应用程序App_A拥有一段保密数据secret,这段保密数据是其他应用程序所不具有的。App_A的so库A.so也拥有这段保密数据secret。在一应用程序调用A.so时,A.so接收该应用程序发来的一段数据data并比对data和secret。
步骤S102,在所述验证信息与所述预设验证信息一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
例如,结合步骤S102,如果data和secret一致,那么就认为调用者是App_A;如果不一致就认为调用者不是App_A。
图4是上述步骤S10中验证应用程序是否为目标应用程序的再一种流程图。如图4所示的验证应用程序是否为目标应用程序的流程还可以是包括:
步骤S101,获取所述应用程序的包名以及数字签名,并判断所述应用程序的包名以及数字签名是否与所述目标应用程序的包名以及数字签名一致。
本示例实施方式中,动态库文件可以预先保存目标应用程序的包名以及签名信息。此外,在该步骤中,所述包名以及签名信息还可以通过加密算法进行加密,动态库文件保存加密后的密文。当动态库文件调用动作发生时,动态库文件例如可以通过下述方法获取应用程序的包名以及签名信息,并使用加密算法进行加密。
例如,该获取应用程序信息的方法可以为使用JNI(Java Native Interface,Java本地接口)通过Java的反射机制获取应用程序的包名和签名。JNI提供了若干的API(Application Programming Interface,应用程序编程接口)实现了Java和其他语言的通信(主要是C和C++)。从Java1.1开始,JNI标准成为Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能被称为Java语言的反射机制。容易理解的是,在本公开的其他示例性实施例中,获取应用程序信息的方法还可以是其他方法。
步骤S102,在所述应用程序的包名以及数字签名与所述目标应用程序的包名以及数字签名一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
例如,动态库文件核对所得密文与预先保存的密文是否相同,若相同,则判定该应用程序为目标应用程序;若不同,则判定该应用程序不是目标应用程序。
此外,在本公开的其他示例性实施例中,如上所述三种判断应用程序身份的步骤也可以结合使用,从而进一步增强动态库文件的保护力度。
本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图5是根据一示例性实施方式示出的一种动态库文件保护装置的框图。如图5所示的动态库文件保护装置50包括身份验证模块501,变量设置模块502,以及执行设置模块503。
其中身份验证模块501用于在一应用程序调用一动态库文件文件的一接口函数时,验证所述应用程序是否为目标应用程序。
变量设置模块502用于在验证所述应用程序为所述目标应用程序时,将所述动态库文件中至少作用于所述接口函数的一状态变量的值由第一值设置为第二值。
执行设置模块503用于在所述状态变量为所述第一值时设置所述接口函数为不可被执行以及在所述状态变量为第二值时设置所述接口函数为可被执行。
在模块501中,本公开提供的验证所述应用程序权限的方法,包括公私钥验证方法、保密数据验证方法以及应用程序包名及签名验证方法。所述公私钥验证方法为:目标应用程序具有一预设私钥;其中,验证所述应用程序是否为目标应用程序包括:生成一个随机数发送至所述应用程序;接收所述应用程序使用一私钥对所述随机数加密得到的密文;使用与所述预设私钥相对应的一预设公钥对所述密文进行解密并判断是否解密得到所述随机数;在得到所述随机数时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
所述保密数据验证方法为:所述目标应用程序具有一预设验证信息;其中,验证所述应用程序是否为目标应用程序包括:接收所述应用程序发送的一验证信息,并比对所述验证信息是否与所述预设验证信息一致;在所述验证信息与所述预设验证信息一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
所述应用程序包名及签名验证方法为:获取所述应用程序的包名以及数字签名,并判断所述应用程序的包名以及数字签名是否与所述目标应用程序的包名以及数字签名一致;在所述应用程序的包名以及数字签名与所述目标应用程序的包名以及数字签名一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
本实施方式提供的动态库文件保护装置50,通过验证调用动态库文件的应用程序身份,判断动态库文件是否执行被应用程序调用,可以防止动态库文件被除目标应用程序之外的应用程序调用,保护了动态库文件中的核心技术,使该核心技术不被非法利用。
上述动态库文件保护装置中各模块/单元的具体细节已经在对应的动态库文件保护方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
进一步的,本示例实施方式中还提供了一种电子设备,包括上述任意一种的动态库文件保护装置。例如,所述电子设备中安装有至少一应用程序;所述应用程序包括至少一动态库文件以及上述的任意一种动态库文件保护装置,用于对所述动态库文件进行保护。图6示出根据本公开示例实施方式中一种电子设备300的示意图。例如,电子设备300可以是移动电话,计算机,数字广播终端,消息收发设备,智能音箱,智能电视,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,电子设备300可以包括以下一个或多个组件:处理组件302,存储器304,电源组件306,多媒体组件308,音频组件310,输入/输出(I/O)的接口312,传感器组件314,以及通信组件316。
处理组件302通常控制电子设备300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件302可以包括一个或多个处理器320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件302可以包括一个或多个模块,便于处理组件302和其他组件之间的交互。例如,处理组件302可以包括多媒体模块,以方便多媒体组件304和处理组件302之间的交互。
存储器304被配置为存储各种类型的数据以支持在设备300的操作。这些数据的示例包括用于在电子设备300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件306为电子设备300的各种组件提供电力。电源组件306可以包括电源管理系统,一个或多个电源,及其他与为电子设备300生成、管理和分配电力相关联的组件。
多媒体组件308包括在所述电子设备300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件308包括一个前置摄像头和/或后置摄像头。当设备300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件310被配置为输出和/或输入音频信号。例如,音频组件310包括一个麦克风(MIC),当电子设备300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器304或经由通信组件316发送。在一些实施例中,音频组件310还包括一个扬声器,用于输出音频信号。
I/O接口312为处理组件302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件314包括一个或多个传感器,用于为电子设备300提供各个方面的状态评估。例如,传感器组件314可以检测到设备300的打开/关闭状态,组件的相对定位,例如所述组件为电子设备300的显示器和小键盘,传感器组件314还可以检测电子设备300或电子设备300一个组件的位置改变,用户与电子设备300接触的存在或不存在,电子设备300方位或加速/减速和电子设备300的温度变化。传感器组件314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件316被配置为便于电子设备300和其他设备之间有线或无线方式的通信。电子设备300可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器304,上述指令可由电子设备300的处理器320执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图7示出根据本公开示例实施方式中一种电子设备400的示意图。例如,电子设备400可以被提供为一服务器。参照图7,电子设备400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述方法。
电子设备400还可以包括一个电源组件426被配置为执行电子设备400的电源管理,一个有线或无线网络接口450被配置为将电子设备400连接到网络,和一个输入输出(I/O)接口458。电子设备400可以操作基于存储在存储器432的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
需要注意的是,上述附图中所示的框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、电子设备、或者网络设备等)执行根据本发明实施方式的方法。
以上具体地示出和描述了本发明的示例性实施方式。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

Claims (14)

1.一种动态库文件保护方法,其特征在于,由动态库文件执行,包括:
在一应用程序调用一动态库文件的一接口函数时,验证所述应用程序是否为目标应用程序;
在验证所述应用程序为所述目标应用程序时,将所述动态库文件中至少作用于所述接口函数的一状态变量的值由第一值设置为第二值;
在所述状态变量为所述第一值时设置所述接口函数为不可被执行以及在所述状态变量为第二值时设置所述接口函数为可被执行。
2.根据权利要求1所述的动态库文件保护方法,其特征在于,所述状态变量作用于所述动态库文件中的多个接口函数。
3.根据权利要求1所述的动态库文件保护方法,其特征在于,所述状态变量默认为所述第一值。
4.根据权利要求1~3任意一项所述的动态库文件保护方法,其特征在于,所述目标应用程序具有一预设私钥;其中,验证所述应用程序是否为目标应用程序包括:
生成一个随机数发送至所述应用程序;
接收所述应用程序使用一私钥对所述随机数加密得到的密文;
使用与所述预设私钥相对应的一预设公钥对所述密文进行解密并判断是否解密得到所述随机数;
在得到所述随机数时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
5.根据权利要求1~3任意一项所述的动态库文件保护方法,其特征在于,所述目标应用程序具有一预设验证信息;其中,验证所述应用程序是否为目标应用程序包括:
接收所述应用程序发送的一验证信息,并比对所述验证信息是否与所述预设验证信息一致;
在所述验证信息与所述预设验证信息一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
6.根据权利要求1~3任意一项所述的动态库文件保护方法,其特征在于,其中,验证所述应用程序是否为目标应用程序包括:
获取所述应用程序的包名以及数字签名,并判断所述应用程序的包名以及数字签名是否与所述目标应用程序的包名以及数字签名一致;
在所述应用程序的包名以及数字签名与所述目标应用程序的包名以及数字签名一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
7.一种动态库文件保护装置,其特征在于,设置在动态库文件之中,包括:
身份验证模块,用于在一应用程序调用一动态库文件文件的一接口函数时,验证所述应用程序是否为目标应用程序;
变量设置模块,用于在验证所述应用程序为所述目标应用程序时,将所述动态库文件中至少作用于所述接口函数的一状态变量的值由第一值设置为第二值;
执行设置模块,用于在所述状态变量为所述第一值时设置所述接口函数为不可被执行以及在所述状态变量为第二值时设置所述接口函数为可被执行。
8.根据权利要求7所述的动态库文件保护装置,其特征在于,所述状态变量作用于所述动态库文件中的多个接口函数。
9.根据权利要求7所述的动态库文件保护装置,其特征在于,所述状态变量默认为所述第一值。
10.根据权利要求7~9任意一项所述的动态库文件保护装置,其特征在于,所述目标应用程序具有一预设私钥;其中,验证所述应用程序是否为目标应用程序包括:
生成一个随机数发送至所述应用程序;
接收所述应用程序使用一私钥对所述随机数加密得到的密文;
使用与所述预设私钥相对应的一预设公钥对所述密文进行解密并判断是否解密得到所述随机数;
在得到所述随机数时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
11.根据权利要求7~9任意一项所述的动态库文件保护装置,其特征在于,所述目标应用程序具有一预设验证信息;其中,验证所述应用程序是否为目标应用程序包括:
接收所述应用程序发送的一验证信息,并比对所述验证信息是否与所述预设验证信息一致;
在所述验证信息与所述预设验证信息一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
12.根据权利要求7~9任意一项所述的动态库文件保护装置,其特征在于,其中,验证所述应用程序是否为目标应用程序包括:
获取所述应用程序的包名以及数字签名,并判断所述应用程序的包名以及数字签名是否与所述目标应用程序的包名以及数字签名一致;
在所述应用程序的包名以及数字签名与所述目标应用程序的包名以及数字签名一致时判断所述应用程序为所述目标应用程序,否则,判断所述应用程序不是所述目标应用程序。
13.一种电子设备,其特征在于,安装有至少一应用程序;所述应用程序包括:
至少一动态库文件,所述动态库文件包括根据权利要求7~12任意一项所述的动态库文件保护装置,用于对所述动态库文件进行保护。
14.一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如权利要求1-6任一项所述的动态库文件保护方法。
CN201610696884.8A 2016-08-19 2016-08-19 电子设备、动态库文件保护方法及装置 Active CN107766701B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610696884.8A CN107766701B (zh) 2016-08-19 2016-08-19 电子设备、动态库文件保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610696884.8A CN107766701B (zh) 2016-08-19 2016-08-19 电子设备、动态库文件保护方法及装置

Publications (2)

Publication Number Publication Date
CN107766701A CN107766701A (zh) 2018-03-06
CN107766701B true CN107766701B (zh) 2021-01-26

Family

ID=61262095

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610696884.8A Active CN107766701B (zh) 2016-08-19 2016-08-19 电子设备、动态库文件保护方法及装置

Country Status (1)

Country Link
CN (1) CN107766701B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019210471A1 (zh) * 2018-05-02 2019-11-07 无锡盈达聚力科技有限公司 一种数据调用方法及数据调用装置
CN111381978A (zh) * 2018-12-29 2020-07-07 深圳Tcl数字技术有限公司 一种接入应用程序的方法、存储介质以及智能电视
CN109992934A (zh) * 2019-04-10 2019-07-09 苏州浪潮智能科技有限公司 一种响应方法、装置、设备及介质
CN112542165A (zh) * 2019-09-23 2021-03-23 Tcl集团股份有限公司 一种应用程序的语音控制方法及智能终端
CN111611551B (zh) * 2020-05-06 2023-04-18 山东正中信息技术股份有限公司 一种基于国密算法的动态链接库保护方法及其系统
CN112583591A (zh) * 2020-12-23 2021-03-30 维沃移动通信有限公司 应用程序控制方法及装置
CN115659292B (zh) * 2022-12-28 2023-05-02 北京大学 脚本代码的加密方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617394A (zh) * 2013-12-04 2014-03-05 北京网秦天下科技有限公司 Sdk提供和调用方法及相关设备
CN104199654A (zh) * 2014-08-27 2014-12-10 百度在线网络技术(北京)有限公司 开放平台的调用方法及装置
CN104615933A (zh) * 2015-01-27 2015-05-13 北京奇虎科技有限公司 防软件反编译的方法、防反编译软件启动的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617394A (zh) * 2013-12-04 2014-03-05 北京网秦天下科技有限公司 Sdk提供和调用方法及相关设备
CN104199654A (zh) * 2014-08-27 2014-12-10 百度在线网络技术(北京)有限公司 开放平台的调用方法及装置
CN104615933A (zh) * 2015-01-27 2015-05-13 北京奇虎科技有限公司 防软件反编译的方法、防反编译软件启动的方法和装置

Also Published As

Publication number Publication date
CN107766701A (zh) 2018-03-06

Similar Documents

Publication Publication Date Title
CN107766701B (zh) 电子设备、动态库文件保护方法及装置
CN110619220B (zh) 对神经网络模型加密的方法及装置、存储介质
US20180367315A1 (en) Method and apparatus for signing and verifying application installation package, and storage medium
CN109146470B (zh) 生成付款码的方法及装置
CN113343212B (zh) 设备注册方法及装置、电子设备和存储介质
CN113242224B (zh) 授权方法及装置、电子设备和存储介质
CN103914520B (zh) 数据查询方法、终端设备和服务器
KR20100126472A (ko) 사업자에게 부여된 자격들에 기초하여 장치 내의 소프트웨어 코드의 실행을 인가하는 시스템 및 방법
CN108900553B (zh) 一种通信方法、装置及计算机可读存储介质
CN109246110B (zh) 数据共享方法、装置及计算机可读存储介质
CN111199039B (zh) 应用程序的安全性校验方法、装置及终端设备
CN113055169B (zh) 数据加密方法、装置、电子设备及存储介质
US20220294624A1 (en) Encryption method and device, electronic apparatus and storage medium
US10402562B2 (en) Method and device for encrypting application
CN105553651B (zh) 安卓系统中磁盘镜像文件的签名方法、装置和设备
CN107302519B (zh) 一种终端设备的身份认证方法、装置和终端设备、服务器
CN106485151B (zh) 控制刷机的方法及装置
CN108924136B (zh) 授权认证方法、装置及存储介质
CN114221764A (zh) 基于区块链的公钥更新方法、装置和设备
CN112784243A (zh) 授权管理方法及装置、电子设备和存储介质
CN112733092A (zh) 一种信息处理方法及装置
CN111241522B (zh) 固件签名方法及装置、存储介质
CN107391972B (zh) 软件控制方法、装置和移动终端
CN111382131B (zh) 数据处理方法、装置及存储介质
CN110996088B (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