一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

动态库调用方法、装置、电子设备及存储介质与流程

2021-10-24 06:14:00 来源:中国专利 TAG:电子设备 调用 装置 计算机 方法


1.本技术属于计算机技术领域,尤其涉及一种动态库调用方法、装置、电子设备及存储介质。


背景技术:

2.随着软件技术的发展,各种各样的应用程序的软件功能越来越多,给人们带来极大的便捷。在应用程序中,常常通过调用动态库(也称为动态链接库,dynamic link library,缩写为dll)来高效便捷地实现对应的功能。
3.目前,应用程序在调用动态库时,该动态库通常需要加载至本地操作系统中才能被调用运行。然而,在本地操作系统中被调用运行的无加密的动态库,可能被其他盗版程序非法获取和使用,从而给原本的应用程序的开发者带来一定的损失。


技术实现要素:

4.有鉴于此,本技术实施例提供了动态库调用方法、装置、电子设备及存储介质,以解决现有技术中应用程序的动态库容易被非法获取的问题。
5.本技术实施例的第一方面提供了一种动态库调用方法,包括:
6.创建第一文件夹;
7.在所述第一文件夹中创建第一预设数目个混淆文件,其中,所述混淆文件的大小与已加密的目标动态库的大小一致;
8.将所述已加密的目标动态库解密至所述第一文件夹中,解密后的所述目标动态库的名称格式与所述混淆文件一致;
9.调用所述目标动态库,执行目标功能。
10.可选地,所述在所述第一文件夹中创建第一预设数目个混淆文件,包括:
11.在所述第一文件夹中创建第二预设数目个第二文件夹,其中,每个所述第二文件夹的名称格式保持一致;
12.在至少一个所述第二文件夹中创建混淆文件,得到第一预设数目个混淆文件;
13.对应地,所述将所述已加密的目标动态库解密至所述第一文件夹中,包括:
14.在所述第一文件夹的目录下,从所述第二预设数目个第二文件夹中随机选择一个第二文件夹作为目标文件夹;
15.将所述已加密的目标动态库解密至所述目标文件夹中。
16.可选地,在所述创建第一文件夹之后,还包括:
17.将操作系统的内存文件系统挂载至所述第一文件夹;
18.对应地,在所述调用所述目标动态库,执行目标功能之后,还包括:
19.卸载所述内存文件系统。
20.可选地,所述第一文件夹为隐藏文件夹,和/或所述混淆文件为隐藏文件。
21.可选地,所述第一文件夹和/或所述混淆文件的名称为随机生成的。
22.可选地,所述解密后的目标动态库为隐藏文件,且名称为随机生成的。
23.可选地,在所述调用所述目标动态库,执行目标功能之后,还包括:
24.删除所述第一文件夹。
25.本技术实施例的第二方面提供了一种动态库调用装置,包括:
26.第一创建单元,用于创建第一文件夹;
27.第二创建单元,用于在所述第一文件夹中创建第一预设数目个混淆文件,其中,所述混淆文件的大小与已加密的目标动态库的大小一致;
28.解密单元,用于将所述已加密的目标动态库解密至所述第一文件夹中,解密后的所述目标动态库的名称格式与所述混淆文件一致;
29.调用单元,用于调用所述目标动态库,执行目标功能。
30.可选地,所述第二创建单元,具体用于在在所述第一文件夹中创建第二预设数目个第二文件夹,其中,每个所述第二文件夹的名称格式保持一致;在至少一个所述第二文件夹中创建混淆文件,得到第一预设数目个混淆文件;
31.对应地,所述解密单元,具体用于在所述第一文件夹的目录下,从所述第二预设数目个第二文件夹中随机选择一个第二文件夹作为目标文件夹;将所述已加密的目标动态库解密至所述目标文件夹中。
32.可选地,所述动态库调用装置,还包括:
33.挂载单元,用于将操作系统的内存文件系统挂载至所述第一文件夹;
34.卸载单元,用于卸载所述内存文件系统。
35.可选地,所述第一文件夹为隐藏文件夹,和/或所述混淆文件为隐藏文件。
36.可选地,所述第一文件夹和/或所述混淆文件的名称为随机生成的。
37.可选地,所述解密后的目标动态库为隐藏文件,且名称为随机生成的。
38.可选地,所述动态库调用装置,还包括:
39.删除单元,用于在所述调用单元调用所述目标动态库,执行目标功能之后,删除所述第一文件夹。
40.本技术实施例的第三方面提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当所述处理器执行所述计算机程序时,使得电子设备实现如所述动态库调用方法的步骤。
41.本技术实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,使得电子设备实现如所述动态库调用方法的步骤。
42.本技术实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面中任一项所述的动态库调用方法。
43.本技术实施例与现有技术相比存在的有益效果是:本技术实施例的动态库调用方法,通过创建第一文件夹,并在第一文件夹中创建第一预设数目个混淆文件,以及将已加密的动态库解密至该第一文件夹中,得到目标动态库并进行调用,以实现目标功能。由于该第一文件夹中包含了第一预设数目个混淆文件和加密后的目标动态库,该混淆文件的大小与动态库的大小一致,并且文件名称的格式与目标动态库的文件名称格式均为第一预设格式,即,混淆文件的大小、名称格式均与动态库一致,从而使得其他盗版程序因难以区分混
淆文件和动态库而无法获取准确该动态库,从而能够安全地实现动态库调用,避免动态库被非法使用。
附图说明
44.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
45.图1是本技术实施例提供的第一种动态库调用方法的交互流程示意图;
46.图2是本技术实施例提供的第二种动态库调用方法的交互流程示意图;
47.图3是本技术实施例提供的一种动态库调用装置的示意图;
48.图4是本技术实施例提供的电子设备的示意图。
具体实施方式
49.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
50.为了说明本技术所述的技术方案,下面通过具体实施例来进行说明。
51.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
52.还应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
53.还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
54.如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0055]
另外,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0056]
目前,应用程序在调用动态库时,该动态库通常需要加载至本地操作系统中才能被调用运行。然而,在本地操作系统中被调用运行的无加密的动态库,可能被其他盗版程序非法获取。这些盗版程序能够绕过原本的应用程序的开发者(简称为原开发者)设置的身份认证,并通过操作界面的更改作为掩饰,隐蔽地调用原应用程序的动态库,导致原开发者很难发现和追究盗版者的责任,从而给原开发者带来一定的损失。因此,现有技术中应用程序的动态库容易被非法获取,是亟需解决的问题。
[0057]
为了解决上述的技术问题,本技术实施例提供了一种动态库调用方法、装置、电子设备及存储介质,包括:创建第一文件夹,之后,在第一文件夹中创建第一预设数目个混淆
文件,以及将已加密的动态库解密至该第一文件夹中,得到目标动态库并进行调用,以实现目标功能。由于该第一文件夹中包含了第一预设数目个混淆文件和加密后的目标动态库,该混淆文件的大小与动态库的大小一致,并且文件名称的格式与目标动态库的文件名称格式均为第一预设格式,即,混淆文件的大小、名称格式均与动态库一致,从而使得其他盗版程序因难以区分混淆文件和动态库而无法获取该动态库,从而能够安全地实现动态库调用,防止动态库被非法使用。
[0058]
实施例一:
[0059]
图1示出了本技术实施例提供的第一种动态库调用方法的流程示意图,该动态库调用方法的执行主体为电子设备,例如电脑、移动终端等。如图1所示的动态库调用方法详述如下:
[0060]
在s101中,创建第一文件夹。
[0061]
本技术实施例中,目标应用程序在启动后,按序或者根据用户的操作指令,运行应用程序中对应的各段运行代码,实现对应的功能。其中,若检测到当前的运行代码中包含了动态库调用指令(即用于调用动态库的函数代码),则根据该动态库调用指令,创建第一文件夹,该第一文件夹用于存储后续解密后的目标动态库。具体地,该动态库调用指令可以包括当前所需调用的动态库的名称或者指针信息。
[0062]
可选地,在上述的步骤s101之前,包括:
[0063]
启动目标应用程序,其中,所述目标应用程序对应的应用程序文件夹中包含了预存的已加密的动态库。
[0064]
本技术实施例中,电子设备在获取到目标应用程序启动指令后,启动该目标应用程序。具体地,电子设备的外部存储器(例如硬盘)中存储了该目标应用程序对应的应用程序文件夹,该应用程序文件夹为包含了各种与目标应用程序运行相关的文件的文件夹。具体地,该目标应用程序文件夹至少包括该目标应用程序对应的可执行文件和预存的已加密的动态库。其中,该已加密的动态库具体是由目标应用程序的开发者编写相关程序函数后进行编译、加密后得到的,该已加密的动态库随该应用程序的可执行文件一起打包发布,即得到该可供用户下载使用的应用程序文件夹。
[0065]
在电子设备获取到应用程序启动指令后,具体可以打开该应用程序文件夹中的可执行文件,从而启动该目标应用程序。
[0066]
在s102中,在所述第一文件夹中创建第一预设数目个混淆文件,其中,所述混淆文件为大小与已加密的目标动态库的大小一致。
[0067]
本技术实施例中目标动态库为当前目标应用程序所需调用的动态库。具体地,可以根据当前检测到的动态库调用指令中包含的标识信息(例如动态库名称),从应用程序文件夹中确定该标识信息对应的动态库为已加密的目标动态库。在创建第一文件夹后,根据该已加密的目标动态库的大小,在该第一文件夹下创建第一预设数目个与该已加密的目标动态库的大小一致的混淆文件。其中,第一预设数目为大于或者等于1的正整数,并且,该第一预设数目越大,即第一文件夹中的混淆文件越多,则对解密至第一文件夹中的动态库的保护效果越好,安全性越高。
[0068]
在s103中,将所述已加密的目标动态库解密至所述第一文件夹中,解密后的所述目标动态库的名称格式与所述混淆文件一致。
[0069]
在创建第一文件夹之后,将已加密的目标动态库解密至第一文件夹中,得到解密后的目标动态库。该解密后的目标动态库的名称格式与步骤s102中创建的混淆文件的名称格式一致。即目标动态库和混淆文件虽然名称不同,但名称格式一致(具体可以包括文件名称的长度、前缀、后缀一致),从而使得盗版程序难以区分目标动态库和混淆文件,难以准确地获取目标动态库,进而避免目标动态库被非法使用。
[0070]
在一个实施例中,上述的混淆文件的名称格式为第一预设格式,对应地,该解密后的目标动态库的名称格式也为第一预设格式。具体地,该第一预设格式可以规定了文件名称的长度、前缀、后缀等。
[0071]
示例性地,第一预设格式可以规定:文件名称的长度为4,前缀为aa、后缀为bb,中间为3个数字字符,则混淆文件1的名称可以为:aa123bb,混淆文件2的名称可以为:aa112bb,目标动态库的名称可以为:aa245bb。
[0072]
在s104中,调用所述目标动态库,执行目标功能。
[0073]
在得到解密后的目标动态库后,可以对该目标动态库进行调用,从而实现目标功能。具体地,可以通过dlopen函数(一个用于打开指定的动态库的计算机函数),打开该目标动态库,并返回该目标动态库对应的句柄。接着,通过dlsym函数(一个计算机函数,用于根据动态链接库操作句柄与函数名称,返回函数对应的地址),获取该目标动态库中当前要执行的目标函数的指针。之后,根据该目标函数的指针执行该目标函数,实现目标功能,并在该目标函数执行完毕后,通过dlclose函数(一个用于关闭当前已打开的动态库的函数)关闭该目标动态库,从而完成本次的动态库调用。
[0074]
示例性地,设当前的电子设备为车辆诊断设备,当前所需调用的目标动态库为故障码解析动态库,则通过调用该目标动态库,对应实现的目标功能为故障码解析功能。
[0075]
本技术实施例中,在启动应用程序后,根据应用程序中的动态库调用指令,创建第一文件夹,之后,在第一文件夹中创建第一预设数目个混淆文件,以及将已加密的动态库解密至该第一文件夹中,得到目标动态库并进行调用,以实现目标功能。由于该第一文件夹中包含了第一预设数目个混淆文件和加密后的目标动态库,该混淆文件的大小与动态库的大小一致,并且文件名称的格式与目标动态库的文件名称格式均为第一预设格式,即,混淆文件的大小、名称格式均与动态库一致,从而使得其他盗版程序难以区分混淆文件和动态库而无法获取该动态库,从而能够安全地实现动态库调用,避免动态库被非法使用。同时,由于对已加密的目标动态库进行解密的动作具体是在应用程序中执行的,无需依赖操作系统的指令进行解密,因此本技术实施例相对于现有的在操作系统中进行解密的动态库调用方法,无需进行操作系统的修改,更加简单便捷,兼容性更强。
[0076]
实施例二:
[0077]
图2示出了本技术实施例提供的第二种动态库调用方法的流程示意图,本实施例中的方法在实施例一的动态库调用方法的基础上做了进一步改进,与实施例一相同之处不再赘述。如图2所示的动态库调用方法详述如下:
[0078]
在s201中,创建第一文件夹。
[0079]
在s202中,在所述第一文件夹中创建第一预设数目个混淆文件,其中,所述混淆文件的大小与已加密的目标动态库的大小一致。
[0080]
在s203中,将所述已加密的目标动态库解密至所述第一文件夹中,解密后的目标
动态库的名称格式与所述混淆文件一致。
[0081]
在s204中,调用所述目标动态库,执行目标功能。
[0082]
在s205中,删除所述第一文件夹。
[0083]
本技术实施例中,在调用目标动态库,执行目标功能后,说明本次的动态库调用任务已完成。此时,将该包含目标动态库的第一文件夹进行删除,以杜绝该目标应用程序调用后的已解密的目标动态库被其它盗版程序所盗用,从而进一步避免动态库的非法使用,提高动态库调用的安全性。
[0084]
可选地,上述的步骤s102或者步骤s202,包括:
[0085]
在所述第一文件夹中创建第二预设数目个第二文件夹,其中,每个所述第二文件夹的名称格式保持一致;
[0086]
在至少一个所述第二文件夹中创建混淆文件,得到第一预设数目个混淆文件;
[0087]
对应地,上述的步骤s103或者步骤s203,包括:
[0088]
在所述第一文件夹目录下,从所述第二预设数目个第二文件夹中随机选择一个第二文件夹作为目标文件夹;
[0089]
将所述已加密的目标动态库解密至所述目标文件夹中。
[0090]
本技术实施例中在创建了第一文件夹后,进一步在第一文件夹中创建第二预设数目个第二文件夹。其中,该第二预设数目至少为两个,该第二预设数目的具体数字可以根据电子设备当前的剩余运算资源而确定,在运算资源允许的情况下,该第二预设数目的值越大,则后续解密得到的目标动态库越难以被盗用,安全性越高。并且,该第二预设数目个第二文件夹中,每个第二文件夹的名称格式保持一致。在一个实施例中,该第二文件夹的名称的格式可以为区别于第一预设格式的第二预设格式,该第二预设格式同样可以统一规定名称的长度、前缀和后缀。
[0091]
在创建第二预设数目个第二预设文件夹后,在这些第二文件夹中随机创建混淆文件,得到第一预设数目个混淆文件。其中,在该第二预设数目个第二文件夹中的至少一个第二文件夹中,至少需要保证一个第二文件夹中创建了至少一个混淆文件,而其它的第二文件夹可以随机创建0个、1个或者1个以上的混淆文件。进一步地,每个第二文件夹中均创建了至少一个混淆文件,从而提高动态库调用的安全性。
[0092]
在创建了第二预设数目个混淆文件和第一预设数目个混淆文件后,可以在该第一文件夹的目录下,从已创建的第二预设数目个文件夹中随机选择一个第二文件夹作为目标文件夹。
[0093]
之后,将已加密的目标动态库解密至该目标文件夹中,得到位于该目标文件夹目录下的已解密的目标动态库。
[0094]
本技术实施例中,在创建第一文件夹后,还创建了第二预设数目个第二文件夹,在该第二文件夹的目录下再进一步创建混淆文件;之后,从该第二预设数目个第二文件夹中选择一个作为目标文件夹,该目标文件夹用于存储解密后的目标动态库,从而能够使得除该目标文件夹以外的第二文件夹为混淆文件夹,通过该混淆文件夹和混淆文件能够干扰盗版程序的判断,使得盗版程序难以准确地获取目标动态库,进而避免动态库的非法使用,提高动态库调用的安全性。
[0095]
可选地,上述的混淆文件和解密后的目标动态库存储于运行该目标应用程序的操
作系统的内存单元中。
[0096]
本技术实施例中,在第一文件夹中创建的第一预设数目个混淆文件和解密后的目标动态库,具体存储于当前电子设备的操作系统的内存单元中。
[0097]
在一个实施例中,该第一文件夹可以创建于操作系统的内存单元中,使得该第一文件夹及该第一文件夹目录下的混淆文件和目标动态库(还可以包括第二文件夹)均存储于内存单元中。在另一个实施例中,第一文件夹创建于电子设备的外部存储器,之后可以将操作系统的内存文件系统挂载至该第一文件夹,使得第一文件夹目录下的混淆文件和目标动态库均存储于内存单元中
[0098]
示例性地,该操作系统可以为linux操作系统或者windows操作系统。其中,linux操作系统是一套免费使用和自由传播的类unix操作系统(unix是20世纪70年代初出现的一个操作系统),是一个基于多用户、多任务、支持多线程和多处理器的操作系统。而windows操作系统(microsoft windows)是美国微软公司研发的一套操作系统。
[0099]
本技术实施例中,由于混淆文件和解密后的目标动态库具体存储于操作系统的内存单元中,使得在目标应用程序运行过程中若发生断电故障,则该存储于内存单元中的混淆文件和目标动态库会自动清除,目标动态库的断电自动清除能够避免目标动态库之后被其他盗版程序盗用,而混淆文件的自动清除能够自动释放内存空间以避免过多无用文件对内存空间的长期占用,因此,通过本技术实施例的方法,能够提高动态库调用的安全性和效率。
[0100]
可选地,在所述创建第一文件夹之后,还包括:
[0101]
将操作系统的内存文件系统挂载至所述第一文件夹;
[0102]
对应地,在所述调用所述目标动态库,执行目标功能之后,还包括:
[0103]
卸载所述内存文件系统。
[0104]
本技术实施例中,在创建该第一文件夹之后,将操作系统的内存文件系统挂载至该第一文件夹,从而使得后续在第一文件夹中创建的文件夹、文件均缓存于linux操作系统的运行内存中,即使得混淆文件、目标动态库(还可以包括第二文件夹)均存储于内存单元中。示例性地,该操作系统可以为linux系统。
[0105]
在调用目标动态库,执行目标功能后,可以将该内存文件系统从第一文件夹中卸载,卸载后,该存储于运行内存中的混淆文件和目标动态库自动删除。进一步地,在卸载内存文件系统后,可以将第一文件夹进行删除。
[0106]
本技术实施例中,由于在创建第一文件夹后能够将操作系统的内存文件系统挂载至第一文件夹,使得后续在该第一文件夹中创建的混淆文件和目标动态库具体存储于操作系统的内存单元中,使得电子设备在出现断电故障时该目标动态库和混淆文件能够自动清除,从而提高动态库调用的安全性。并且,由于在调用目标动态库后,能够将内存文件系统从第一文件夹中卸载,因此也能够实现动态库调用完成后的自动删除,进一步提高动态库调用的安全性。
[0107]
可选地,所述第一文件夹为隐藏文件夹,和/或所述混淆文件为隐藏文件。
[0108]
本技术实施例中,第一文件夹可以为被设置为隐藏文件夹,隐藏文件夹为实际存在于电子设备但不显示于显示界面中的文件夹。或者,该混淆文件可以被设置为隐藏文件,该隐藏文件为实际存在于电子设备但不显示于显示界面中的文件。在一个实施例中,该第
一文件夹为隐藏文件夹,该第一文件夹目录下的各个子文件夹(例如上述的第二文件夹)均为隐藏文件夹,以及该各个文件(可以包括混淆文件和目标动态库)均为隐藏文件。
[0109]
本技术中,通过将第一文件夹设置为隐藏文件夹和/或将混淆文件设置为隐藏文件,使得盗版者难以发现和破解该目标动态库,从而避免动态库被非法使用,提高动态库调用的安全性。
[0110]
可选地,所述第一文件夹和/或所述混淆文件的名称为随机生成的。
[0111]
本技术实施例中,第一文件夹的名称和/或混淆文件的名称为随机生成的名称,即,每次动态库调用时生成的第一文件夹和/或混淆文件的名称不固定,进而使得盗版者难以确定动态库每次的存储位置,使得动态库难以被非法盗用,进而提高动态库调用的安全性。在一个实施例中,在创建第一文件夹之前,可以先随机生成一个文件夹名称,之后,以该文件夹名称作为第一文件夹的名称;之后,在该第一文件夹中依次生成名称为随机生成的第一预设格式的名称的混淆文件和目标动态库。
[0112]
可选地,所述解密后的目标动态库为隐藏文件,且名称为随机生成的。
[0113]
本技术实施例中,在进行目标动态库解密前,先随机生成一个名称格式与混淆文件的名称格式一致的名称(例如第一预设格式的名称),之后,以该随机生成的名称为目标名称,以该隐藏文件格式为目标格式,进行目标动态库的解密,从而得到文件格式为隐藏文件,且名称为随机生成的解密后的目标动态库。
[0114]
本技术实施例中,由于解密后的目标动态库为隐藏文件且名称随机不固定,使得盗版者难以发现和破解目标动态库,从而避免动态库被非法使用,提高动态库调用的安全性。
[0115]
可选地,该第一文件夹的名称、混淆文件和/或目标动态库的名称可以通过操作系统自带的随机函数生成。例如,文件夹的名称可以定义为5位随机数字,混淆文件、目标动态库的名称可以为前缀、后缀固定且中间由3位随机数字组成的名称。则该5位随机数字可以通过以下代码实现:
[0116]
folder=time(null)%65538;
[0117]
if(folder<10000)folder =10000;
[0118]
该3位随机数字可以通过以下代码实现:
[0119]
file=time(null)%537;
[0120]
if(file<100)file =100;
[0121]
其中,folder为文件夹名称变量,file为文件名称变量,time(null)为获取系统时间戳的函数,%为取余符号,if为条件符号,a =b表示a=a b,例如,if(folder<10000)folder =10000表示:当文件夹名称变量folder小于10000时,该folder的更新值等于folder的当前值加上10000。
[0122]
进一步地,随机生成的名称也可以通过专门的硬件随机数发生器或者加密芯片生成。其中,硬件随机数发生器、加密芯片生成随机名称的效率更高,因此能够进一步提高动态库调用方法的效率。
[0123]
可选地,本技术实施例的已加密的动态库为通过操作系统自带的加密工具加密得到的动态库,则在上述的步骤s103或者步骤s203中,具体可以通过操作系统自带的该加密工具将该已加密的动态库解密至第一文件夹中。示例性地,该加密工具可以为linux操作系
统中自带的开放安全套阶层协议(open secure sockets layer)工具。通过操作系统中自带的加密工具进行动态库的加解密的实现较为方便,但是安全性较低。
[0124]
可选地,本技术实施例的已加密的动态库为通过加密服务器加密得到的动态库,对应地,在上述的步骤s103或者步骤s203中,电子设备具体可以与该加密服务器进行通信,获取对应的解密方法,实现对该已加密的动态库的解密。通过加密服务器进行动态库的加解密,相对于通过操作系统自带的加密工具进行加解密的方法,进一步提高了动态库调用的安全性。但是,由于电子设备和加密服务器之间需要进行网络通信,因此其加解密效率和稳定性较低。
[0125]
可选地,所述已加密的目标动态库为通过加密芯片加密得到的动态库,对应地,所述将所述已加密的目标动态库解密至所述第一文件夹中,包括:
[0126]
通过所述加密芯片将所述已加密的动态库解密至所述第一文件夹中。
[0127]
本技术实施例中,动态库的加解密具体通过加密芯片来实现。该加密芯片为设置于电子设备中,存储了安全性较高的加密算法的芯片。通过该设置于电子设备的专门用于加解密的加密芯片实现动态库的加密和解密,其加解密的效率更高且安全性更高,因此,能够在进一步提高动态库调用的安全性的同时,保证动态库调用的效率和稳定性。
[0128]
以下以电子设备的操作系统为linux操作系统作为一个示例,对本技术实施例的动态库调用方法的详细步骤进行描述:
[0129]
(1)获取启动指令,打开应用程序文件包中的可执行文件,实现目标应用程序的启动。其中,该应用程序文件包中包含了预存的已加密的目标动态库。
[0130]
(2)当目标应用程序运行检测到存在动态库调用指令时,生成一个随机名称(为了以示区别,称为第一随机名称)。
[0131]
(3)在电子设备的外部存储器中,创建名称为该第一随机名称的隐藏文件夹作为第一文件夹。
[0132]
(4)将linux操作系统的内存文件系统挂载至该第一文件夹中。
[0133]
(5)生成随机文件夹名称序列,其中,该随机文件夹名称序列中包含随机生成的第二预设数目个文件夹名称。
[0134]
(6)根据该随机文件夹名称序列,在该第一文件夹中创建第二预设数目个第二文件夹。
[0135]
(7)生成第一预设数目个随机命名的名称为第一预设格式的隐藏文件作为混淆文件,并将生成的混淆文件随机保存至第二文件夹中。
[0136]
(8)生成一个名称为第一预设格式的随机名称(简称为第二随机名称)。
[0137]
(9)从各个第二文件夹中,随机选择一个作为目标文件夹,并将已加密的目标动态库解密至该目标文件夹中,并以该第二随机名称作为解密后的目标动态库的文件名。
[0138]
(10)调用dlopen函数,打开该目标动态库。
[0139]
(11)调用dlsym函数,获取该目标动态库中的目标函数的指针。
[0140]
(12)执行该目标函数。
[0141]
(13)目标函数执行完毕。
[0142]
(14)调用dlclose函数,关闭该目标动态库。
[0143]
(15)卸载步骤(4)中挂载的内存文件系统。
[0144]
(16)删除步骤(3)中创建的第一文件夹。
[0145]
本技术实施例中,在第一文件夹中创建第一预设数目个混淆文件,以及将已加密的动态库解密至该第一文件夹中,得到目标动态库并进行调用,以实现目标功能。由于该第一文件夹中包含了第一预设数目个混淆文件和解密后的目标动态库,该混淆文件的大小与名称格式与目标动态库的一致,从而使得其他盗版程序因难以区分混淆文件和动态库而无法获取该动态库,从而能够安全地实现动态库调用,避免动态库被非法使用。
[0146]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0147]
实施例三:
[0148]
图3示出了本技术实施例提供的一种动态库调用装置的结构示意图,为了便于说明,仅示出了与本技术实施例相关的部分:
[0149]
该动态库调用装置包括:第一创建单元31、第二创建单元32、解密单元33、调用单元34。其中:
[0150]
第一创建单元31,用于创建第一文件夹。
[0151]
第二创建单元32,用于在所述第一文件夹中创建第一预设数目个混淆文件,其中,所述混淆文件的大小与已加密的目标动态库的大小一致。
[0152]
解密单元33,用于将所述已加密的目标动态库解密至所述第一文件夹中,解密后的所述目标动态库的名称格式与所述混淆文件一致。
[0153]
调用单元34,用于调用所述目标动态库,执行目标功能。
[0154]
可选地,所述第二创建单元32,具体用于在所述第一文件夹中创建第二预设数目个第二文件夹,其中,每个所述第二文件夹的名称格式保持一致;在至少一个所述第二文件夹中创建混淆文件,得到第一预设数目个混淆文件;
[0155]
对应地,所述解密单元33,具体用于在所述第一文件夹的目录下,从所述第二预设数目个第二文件夹中随机选择一个第二文件夹作为目标文件夹;将所述已加密的目标动态库解密至所述目标文件夹中。
[0156]
可选地,所述动态库调用装置,还包括:
[0157]
挂载单元,用于将操作系统的内存文件系统挂载至所述第一文件夹;
[0158]
卸载单元,用于卸载所述内存文件系统。
[0159]
可选地,所述第一文件夹为隐藏文件夹,和/或所述混淆文件为隐藏文件。
[0160]
可选地,所述第一文件夹和/或所述混淆文件的名称为随机生成的。
[0161]
可选地,所述已加密的目标动态库为通过加密芯片加密得到的动态库,对应地,所述解密单元33,具体用于通过所述加密芯片将所述已加密的目标动态库解密至所述第一文件夹中。
[0162]
可选地,所述动态库调用装置,还包括:
[0163]
删除单元,用于在所述调用单元调用所述目标动态库,执行目标功能之后,删除所述第一文件夹。
[0164]
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此
处不再赘述。
[0165]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0166]
实施例四:
[0167]
图4是本技术一实施例提供的电子设备的示意图。如图4所示,该实施例的电子设备4包括:处理器40、存储器41以及存储在所述存储器41中并可在所述处理器40上运行的计算机程序42,例如动态库调用程序。所述处理器40执行所述计算机程序42时实现上述各个动态库调用方法实施例中的步骤,例如图1所示的步骤s101至s104。或者,所述处理器40执行所述计算机程序42时实现上述各装置实施例中各模块/单元的功能,例如图3所示第一创建单元31至调用单元34的功能。
[0168]
示例性的,所述计算机程序42可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述处理器40执行,以完成本技术。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序42在所述电子设备4中的执行过程。
[0169]
所述电子设备4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述电子设备可包括,但不仅限于,处理器40、存储器41。本领域技术人员可以理解,图4仅仅是电子设备4的示例,并不构成对电子设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备还可以包括输入输出设备、网络接入设备、总线等。
[0170]
所称处理器40可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0171]
所述存储器41可以是所述电子设备4的内部存储单元,例如电子设备4的硬盘或内存。所述存储器41也可以是所述电子设备4的外部存储设备,例如所述电子设备4上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器41还可以既包括所述电子设备4的内部存储单元也包括外部存储设备。所述存储器41用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
[0172]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的
功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0173]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0174]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0175]
在本技术所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0176]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0177]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0178]
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0179]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实
施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜