CN113535263A - 动态库调用方法、装置、计算机设备及存储介质 - Google Patents

动态库调用方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113535263A
CN113535263A CN202110768449.2A CN202110768449A CN113535263A CN 113535263 A CN113535263 A CN 113535263A CN 202110768449 A CN202110768449 A CN 202110768449A CN 113535263 A CN113535263 A CN 113535263A
Authority
CN
China
Prior art keywords
dynamic library
target
key function
function field
data address
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.)
Pending
Application number
CN202110768449.2A
Other languages
English (en)
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.)
Shenzhen Launch Technology Co Ltd
Original Assignee
Shenzhen Yuanzheng Future Automobile 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 Shenzhen Yuanzheng Future Automobile Technology Co ltd filed Critical Shenzhen Yuanzheng Future Automobile Technology Co ltd
Priority to CN202110768449.2A priority Critical patent/CN113535263A/zh
Publication of CN113535263A publication Critical patent/CN113535263A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开一种动态库调用方法、装置、计算机设备及存储介质,其中方法包括如下步骤:响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;执行所述目标动态库中的目标函数,获取目标数据地址;从加密平台获取所述目标数据地址对应的关键函数字段;将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库;执行更新后的所述目标动态库。采用本申请,可以提高数据的安全性。

Description

动态库调用方法、装置、计算机设备及存储介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种动态库调用方法、装置、计算机设备及存储介质。
背景技术
随着软件改变一切的来临,软件越来越强大,功能越来越多,越来越方便。在软件不断给人们带来便捷的同时,随之而来的是盗版也越来越猖狂。盗版者往往会对动态库进行反汇编,逆向得出动态库的源代码。从而获取软件发布方的关键技术,核心算法,或者篡改代码,绕过关键的身份认证,非法获取数据等等,导致数据的安全性大大降低。
发明内容
本申请实施例提供一种动态库调用方法、装置、计算机设备及存储介质,可以提高数据的安全性。
本申请实施例一方面提供了一种动态库调用方法,可包括:
响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;
执行所述目标动态库中的目标函数,获取目标数据地址;
从加密平台获取所述目标数据地址对应的关键函数字段;
将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库;
执行更新后的所述目标动态库。
在一种可行的实施方式中,在所述将目标动态库加载至运行所述目标应用程序的内存中之前,还包括:
提取所述目标应用程序对应的初始动态库中的所述关键函数字段,将所述关键函数字段存储至所述加密平台;
将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库。
在一种可行的实施方式中,所述提取目标应用程序对应的初始动态库中的关键函数字段,包括:
获取目标应用程序的初始动态库,对所述初始动态库进行解析,获取所述关键函数字段对应的所述目标数据地址和长度;
根据关键函数字段对应的目标数据地址和长度,提取所述关键函数字段。
在一种可行的实施方式中,所述将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库,包括:
根据预设字符和所述关键函数字段的长度,生成反破译字段;
采用所述反破译字段替换所述初始动态库中的关键函数字段,生成所述目标动态库。
在一种可行的实施方式中,所述将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库,包括:
将所述初始动态库中的关键函数字段进行清零,生成所述目标动态库。
在一种可行的实施方式中,所述从加密平台获取所述目标数据地址对应的关键函数字段,包括:
向加密平台发送携带验证信息的获取指令,以使所述加密平台对所述验证信息进行验证生成验证结果;所述获取指令携带目标数据地址;
当验证结果为验证通过时,根据所述目标数据地址,从所述加密平台获取所述目标数据地址对应的关键函数字段。
在一种可行的实施方式中,所述加密平台为加密云平台或加密芯片中的一种。
本申请实施例一方面提供了一种动态库调用装置,可包括:
加载模块,用于响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;
函数执行模块,用于执行所述目标动态库中的目标函数,获取目标数据地址;
获取模块,用于从加密平台获取所述目标数据地址对应的关键函数字段;
更新模块,用于将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库;
动态库执行模块,用于执行更新后的所述目标动态库。
在一种可行的实施方式中,所述动态库调用装置还包括:
关键字段加密模块,用于提取所述目标应用程序对应的初始动态库中的所述关键函数字段,将所述关键函数字段存储至所述加密平台;
反破译处理模块,用于将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库。
在一种可行的实施方式中,所述关键字段加密模块具体用于:
获取目标应用程序的初始动态库,对所述初始动态库进行解析,获取所述关键函数字段对应的所述目标数据地址和长度;
根据关键函数字段对应的目标数据地址和长度,提取所述关键函数字段。
在一种可行的实施方式中,所述反破译处理模块具体用于:
根据预设字符和所述关键函数字段的长度,生成反破译字段;
采用所述反破译字段替换所述初始动态库中的关键函数字段,生成所述目标动态库。
在一种可行的实施方式中,所述反破译处理模块具体用于:
将所述初始动态库中的关键函数字段进行清零,生成所述目标动态库。
在一种可行的实施方式中,所述获取模块具体用于:
向加密平台发送携带验证信息的获取指令,以使所述加密平台对所述验证信息进行验证生成验证结果;所述获取指令携带目标数据地址;
当验证结果为验证通过时,根据所述目标数据地址,从所述加密平台获取所述目标数据地址对应的关键函数字段。
在一种可行的实施方式中,所述加密平台为加密云平台或加密芯片中的一种。
本申请实施例一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行上述的方法步骤。
本申请实施例一方面提供了一种计算机设备,包括:处理器、存储器以及网络接口;所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码执行上述的方法步骤。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的方法步骤。
在本申请实施例中,目标动态库的关键函数字段被提取出来且单独保存在加密平台,在调用目标动态库时,需要通过执行目标函数将目标动态库加载到内存中,然后找到关键函数字段对应的数据地址,再通过该地址从加密平台处获取到关键函数字段并填充到内存中来,从而更新目标动态库,再执行更新后的目标动态库。本申请将关键函数字段与更新前的目标动态库分开存储,关键函数字段不保存在本地,使得目标动态库无法被破解,同时,由于是将关键函数字段填充到内存的方式来更新目标动态库,不会产生临时的恢复动态库,而且,关键函数字段被保存在加密平台,十分安全可靠。本申请的动态库调用方法完全由动态库自己完成,不需要依赖其他工具,兼容性好。综上所述,本申请采用上述方法,避免了盗版者对目标动态库进行反汇编,逆向得出目标动态库的源代码,导致软件发布方丢失关键技术、核心算法等,极大地提高了数据的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种动态库调用的系统架构图;
图2是本申请实施例提供的一种动态库调用方法的流程示意图;
图3是本申请实施例提供的一种动态库调用方法的流程示意图;
图4是本申请实施例提供的一种动态库调用方法的举例示意图;
图5是本申请实施例提供的一种动态库调用装置的结构示意图;
图6是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,该网络架构图可以包括业务服务器100以及用户终端集群,该用户终端集群可以包括用户终端10a、用户终端10b、…、用户终端10c,其中,用户终端集群之间可以存在通信连接,例如用户终端10a与用户终端10b之间存在通信连接,用户终端10b与用户终端10c之间存在通信连接,且用户终端集群中的任一用户终端可以与业务服务器100存在通信连接,例如用户终端10a与业务服务器100之间存在通信连接,用户终端10b与业务服务器100之间存在通信连接。
其中,上述用户终端集群(也包括上述的用户终端10a、用户终端10b以及用户终端10c)均可以集成安装有目标应用程序。可选的,该目标应用程序可以在用户终端上启动运行,并调用目标应用程序的目标动态库。具体的,用户在用户终端上启动目标应用程序,用户终端响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中,进一步执行所述目标动态库中的目标函数,获取目标数据地址,并从加密平台获取所述目标数据地址对应的关键函数字段,最后将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库,进一步执行更新后的所述目标动态库。
可选的,上述用户终端可以为在上述图1所对应实施例的用户终端集群中所选取的任意一个用户终端,比如,该用户终端可以为上述用户终端10b,则用户可以在用户终端10b的显示页面上启动目标应用程序。
可以理解的是,本申请实施例所提供的方法可以由计算机设备执行,计算机设备包括但不限于终端或服务器,本申请实施例中的业务服务器100可以为计算机设备,用户终端集群中的用户终端也可以为计算机设备,此处不限定。上述业务服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、智能音箱、台式计算机、智能手表等携带图像识别功能的智能终端,但并不局限于此。其中,用户终端以及业务服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
进一步地,为便于理解,请参见图2,图2是本申请实施例提供的动态库调用方法的流程示意图。该方法可以由用户终端(例如,上述图1所示的用户终端)执行,也可以由用户终端和业务服务器(如上述图1所对应实施例中的业务服务器100)共同执行。为便于理解,本实施例以该方法由上述用户终端执行为例进行说明。其中,该动态库调用方法至少可以包括以下步骤S101-步骤S104:
S101,响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;
具体的,用户在用户终端发起对目标应用程序的启动指令,启动指令用于触发目标应用程序的启动运行,具体可以是点击指令或者是触屏指令或者是语音信息,目标应用程序为用户终端中任意的应用程序,目标应用程序中包括目标动态库,目标动态库函数是实现共享函数库概念的一种方式,目标动态库的扩展名是“.so”,目标动态库中包括一个或多个已被编译、链接并与使用它们的进程分开存储的可执行函数,目标应用程序通过调用上述可执行函数,实现所述可执行函数的功能。目标动态库具体可以是可执行与可链接格式“Executable and Linkable Format,Elf”文件,Elf文件是UNIX系统实验室作为应用程序二进制接口而开发和发布的,也是Linux的主要可执行文件格式,ELF文件由4部分组成,分别是ELF头(ELF header)、程序头表(Program header table)、节(Section)和节头表(Section header table)。进一步的,用户终端响应目标应用程序的启动指令,将所述目标应用程序的目标动态库加载至运行所述目标应用程序的内存中。
S102,执行所述目标动态库中的目标函数,获取目标数据地址;
具体的,用户终端运行所述目标动态库中的目标函数,获取目标数据地址,可以理解的是,目标函数可以是事先设置在目标动态库中的恢复函数,通过执行该恢复函数来解析目标动态库,从而获取目标动态库中的关键函数字段所在的目标数据地址。关键函数字段为目标动态库中关键功能对应的函数字段。目标数据地址获取过程如下:用户终端通过所述目标动态库中的恢复函数,对所述目标动态库进行解析,从而获取所述目标动态库中的关键函数字段的数据地址。下面以Elf文件进行说明,用户终端执行恢复函数,读取ELF头,获取程序头部表的偏移地址;进一步的,获取所述偏移地址所指示的动态库程序头部表,解析所述动态库程序头部表,获取动态程序段的地址。具体的,在Elf文件中,动态程序段的地址可以为dynamic段的偏移地址。进一步的,解析所述动态程序段,获取symtab段和strtab段的偏移地址,最后通过遍历symtab段获取到关键函数字段对应的地址和长度。一般而言,可以通过关键函数的名称在symtab段中寻找对应的数据地址和长度。
S103,从加密平台获取所述目标数据地址对应的关键函数字段;
具体的,用户终端向加密平台发送携带验证信息的获取指令,所述加密平台对所述验证信息进行验证生成验证结果,所述获取指令携带目标数据地址,所述加密平台可以是加密芯片或者是加密云平台,当验证结果为验证通过时,用户终端根据所述目标数据地址,从所述加密平台获取所述目标数据地址对应的关键函数字段。
S104,将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库。
具体的,用户终端根据所述关键函数字段在所述内存中的目标数据地址,将所述关键函数字段填充进所述内存中的所述目标数据地址处,即完成对内存中的目标动态库的更新,在更新的过程中,不会产生临时恢复的动态库,直接将关键函数字段填充到目标应用程序的内存中。
S105,执行更新后的所述目标动态库。
具体的,用户终端执行所述内存中的更新的目标动态库,以启动所述目标应用程序。
在本申请实施例中,目标动态库的关键函数字段被提取出来且单独保存在加密平台,在调用目标动态库时,需要通过执行目标函数将目标动态库加载到内存中,然后找到关键函数字段对应的数据地址,再通过该地址从加密平台处获取到关键函数字段并填充到内存中来,从而更新目标动态库,再执行更新后的目标动态库。本申请将关键函数字段与更新前的目标动态库分开存储,关键函数字段不保存在本地,使得目标动态库无法被破解,同时,由于是将关键函数字段填充到内存的方式来更新目标动态库,不会产生临时的恢复动态库,而且,关键函数字段被保存在加密平台,十分安全可靠。本申请的动态库调用方法完全由动态库自己完成,不需要依赖其他工具,兼容性好。综上所述,本申请采用上述方法,避免了盗版者对目标动态库进行反汇编,逆向得出目标动态库的源代码,导致软件发布方丢失关键技术、核心算法等,极大地提高了数据的安全性。
请参见图3和图4,图3是本申请实施例提供的动态库调用方法的流程示意图,图4是本申请实施例提供的动态库调用方法的举例示意图。该方法可以由用户终端(例如,上述图1所示的用户终端)执行,也可以由用户终端和业务服务器(如上述图1所对应实施例中的业务服务器100)共同执行。为便于理解,本实施例以该方法由上述用户终端执行为例进行说明。其中,该动态库调用方法至少可以包括以下步骤S201-步骤S206:
S201,提取所述目标应用程序对应的初始动态库中的所述关键函数字段,将所述关键函数字段存储至所述加密平台;
S202,将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库。
为了避免目标应用程序的目标动态库被盗版者通过反汇编的方式,逆向得出目标动态库的源代码,从而获取软件发布方的关键技术,核心算法等,通常在目标动态库发布之前,将初始动态库中的关键函数提取出来单独保存在加密平台,然后对初始动态库中关键函数的代码段进行反破译处理,生成目标动态库,然后发布上述目标动态库。
具体的,上述提取目标应用程序对应的初始动态库中的关键函数字段的步骤S201包括:
S201.1:获取目标应用程序的初始动态库,对所述初始动态库进行解析,获取所述关键函数字段对应的所述目标数据地址和长度;
S201.2:根据关键函数字段对应的目标数据地址和长度,提取所述关键函数字段。
在步骤S201.1中,首先读取ELF头,获取程序头部表的偏移地址;进一步的,获取所述偏移地址所指示的动态库程序头部表,解析所述动态库程序头部表,获取动态程序段的地址。在Elf文件中,动态程序段的地址可以为dynamic段的偏移地址。进一步的,解析所述动态程序段,获取symtab段和strtab段的偏移地址,最后通过遍历symtab段获取到关键函数字段对应的目标数据地址和长度。一般而言,可以通过关键函数的名称在symtab段中寻找对应的目标数据地址和长度。在步骤S201.2中,再根据目标数据地址和长度将关键函数字段提取出来保存在加密平台中。
在步骤S202中,具体的,用户终端在提取关键函数字段之后,将所述初始动态库中的关键函数字段进行反破译处理,生成目标动态库,可以理解的是,所述反破译处理是采用固定字段替换关键函数字段,隐藏关键函数的真实信息,具体的,用户终端根据预设字符和所述关键函数字段的长度,生成与关键函数字段具有相同长度反破译字段,然后用反破译字段替换关键函数字段。另一种实施例中,可以直接将关键函数字段的代码清零,这时候的反破译字段为“0……000”。S203,响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;
其中,本发明实施例的步骤S203参见图2所示实施例的步骤S101的具体描述,在此不进行赘述。
S204,执行所述目标动态库中的目标函数,获取目标数据地址;
其中,本发明实施例的步骤S204参见图2所示实施例的步骤S102的具体描述,在此不进行赘述。
S205,从加密平台获取所述目标数据地址对应的关键函数字段;
其中,本发明实施例的步骤S205参见图2所示实施例的步骤S103的具体描述,在此不进行赘述。
S206,将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库。
其中,本发明实施例的步骤S206参见图2所示实施例的步骤S104的具体描述,在此不进行赘述。
S207,执行更新后的所述目标动态库。
其中,本发明实施例的步骤S207参见图2所示实施例的步骤S105的具体描述,在此不进行赘述。
在本申请实施例中,目标动态库的关键函数字段被提取出来且单独保存在加密平台,在调用目标动态库时,需要通过执行目标函数将目标动态库加载到内存中,然后找到关键函数字段对应的数据地址,再通过该地址从加密平台处获取到关键函数字段并填充到内存中来,从而更新目标动态库,再执行更新后的目标动态库。本申请将关键函数字段与更新前的目标动态库分开存储,关键函数字段不保存在本地,使得目标动态库无法被破解,同时,由于是将关键函数字段填充到内存的方式来更新目标动态库,不会产生临时的恢复动态库,而且,关键函数字段被保存在加密平台,十分安全可靠。本申请的动态库调用方法完全由动态库自己完成,不需要依赖其他工具,兼容性好。综上所述,本申请采用上述方法,避免了盗版者对目标动态库进行反汇编,逆向得出目标动态库的源代码,导致软件发布方丢失关键技术、核心算法等,极大地提高了数据的安全性。
请参见图5,图5是本申请实施例提供的一种动态库调用装置的结构示意图。所述动态库调用装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该动态库调用装置为一个应用软件;该设备可以用于执行本申请实施例提供的方法中的相应步骤。如图5所示,本申请实施例的所述动态库调用装置1可以包括:加载模块11、函数执行模块12、获取模块13、更新模块14、动态库执行模块15。
加载模块11,用于响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;
函数执行模块12,用于执行所述目标动态库中的目标函数,获取目标数据地址;
获取模块13,用于从加密平台获取所述目标数据地址对应的关键函数字段;
更新模块14,用于将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库;
动态库执行模块15,用于执行更新后的所述目标动态库。
请参见图5,本申请实施例的所述动态库调用装置1可以还包括:关键字段加密模块16、反破译处理模块17;
关键字段加密模块16,用于关键字段加密模块,用于提取所述目标应用程序对应的初始动态库中的所述关键函数字段,将所述关键函数字段存储至所述加密平台;
反破译处理模块17,用于将所述初始动态库中的关键函数字段进行反破译处理,生成目标动态库。
在一种可行的实施方式中,所述关键字段加密模块具体用于:
获取目标应用程序的初始动态库,对所述初始动态库进行解析,获取所述关键函数字段对应的所述目标数据地址和长度;
根据关键函数字段对应的目标数据地址和长度,提取所述关键函数字段。
在一种可行的实施方式中,所述反破译处理模块具体用于:
根据预设字符和所述关键函数字段的长度,生成反破译字段;
采用所述反破译字段替换所述初始动态库中的关键函数字段,生成所述目标动态库。
在一种可行的实施方式中,所述反破译处理模块具体用于:
将所述初始动态库中的关键函数字段进行清零,生成所述目标动态库。
在一种可行的实施方式中,所述获取模块具体用于:
向加密平台发送携带验证信息的获取指令,以使所述加密平台对所述验证信息进行验证生成验证结果;所述获取指令携带目标数据地址;
当验证结果为验证通过时,根据所述目标数据地址,从所述加密平台获取所述目标数据地址对应的关键函数字段。
在一种可行的实施方式中,所述加密平台为加密云平台或加密芯片中的一种。
在本申请实施例中,目标动态库的关键函数字段被提取出来且单独保存在加密平台,在调用目标动态库时,需要通过执行目标函数将目标动态库加载到内存中,然后找到关键函数字段对应的数据地址,再通过该地址从加密平台处获取到关键函数字段并填充到内存中来,从而更新目标动态库,再执行更新后的目标动态库。本申请将关键函数字段与更新前的目标动态库分开存储,关键函数字段不保存在本地,使得目标动态库无法被破解,同时,由于是将关键函数字段填充到内存的方式来更新目标动态库,不会产生临时的恢复动态库,而且,关键函数字段被保存在加密平台,十分安全可靠。本申请的动态库调用方法完全由动态库自己完成,不需要依赖其他工具,兼容性好。综上所述,本申请采用上述方法,避免了盗版者对目标动态库进行反汇编,逆向得出目标动态库的源代码,导致软件发布方丢失关键技术、核心算法等,极大地提高了数据的安全性。
请参见图6,图6是本申请实施例提供的一种计算机设备的结构示意图。如图6所示,所述计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是随机存取存储器(Random Access Memory,RAM),也可以是非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图6所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及动态库调用应用程序。
在图6所示的计算机设备1000中,网络接口1004可提供网络通讯功能,用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的动态库调用应用程序,以实现上述图2-图4任一个所对应实施例中对所述动态库调用方法的描述,在此不再赘述。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2-图4任一个所对应实施例中对所述动态库调用方法的描述,也可执行前文图5所对应实施例中对所述动态库调用装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且所述计算机可读存储介质中存储有前文提及的动态库调用装置所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图2-图4任一个所对应实施例中对所述动态库调用方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述计算机可读存储介质可以是前述任一实施例提供的一种动态库调用装置或者上述设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其它程序和数量。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本发明的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (10)

1.一种动态库调用方法,其特征在于,包括:
响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;
执行所述目标动态库中的目标函数,获取目标数据地址;
从加密平台获取所述目标数据地址对应的关键函数字段;
将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库;
执行更新后的所述目标动态库。
2.根据权利要求1所述的方法,其特征在于,在所述将目标动态库加载至运行所述目标应用程序的内存中之前,还包括:
提取所述目标应用程序对应的初始动态库中的所述关键函数字段,将所述关键函数字段存储至所述加密平台;
将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库。
3.如权利要求2所述的方法,其特征在于,所述提取目标应用程序对应的初始动态库中的关键函数字段,包括:
获取目标应用程序的初始动态库,对所述初始动态库进行解析,获取所述关键函数字段对应的所述目标数据地址和长度;
根据关键函数字段对应的目标数据地址和长度,提取所述关键函数字段。
4.如权利要求2所述的方法,其特征在于,所述将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库,包括:
根据预设字符和所述关键函数字段的长度,生成反破译字段;
采用所述反破译字段替换所述初始动态库中的关键函数字段,生成所述目标动态库。
5.如权利要求2所述的方法,其特征在于,所述将所述初始动态库中的关键函数字段进行反破译处理,生成所述目标动态库,包括:
将所述初始动态库中的关键函数字段进行清零,生成所述目标动态库。
6.根据权利要求1所述的方法,其特征在于,所述从加密平台获取所述目标数据地址对应的关键函数字段,包括:
向加密平台发送携带验证信息的获取指令,以使所述加密平台对所述验证信息进行验证生成验证结果;所述获取指令携带目标数据地址;
当验证结果为验证通过时,根据所述目标数据地址,从所述加密平台获取所述目标数据地址对应的关键函数字段。
7.根据权利要求1所述的方法,其特征在于,所述加密平台为加密云平台或加密芯片中的一种。
8.一种动态库调用装置,其特征在于,包括:
加载模块,用于响应目标应用程序的启动指令,将目标动态库加载至运行所述目标应用程序的内存中;
函数执行模块,用于执行所述目标动态库中的目标函数,获取目标数据地址;
获取模块,用于从加密平台获取所述目标数据地址对应的关键函数字段;
更新模块,用于将所述关键函数字段填充进所述内存中的所述目标数据地址处,更新所述目标动态库;
动态库执行模块,用于执行更新后的所述目标动态库。
9.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行权利要求1-7任一项所述的方法。
CN202110768449.2A 2021-07-07 2021-07-07 动态库调用方法、装置、计算机设备及存储介质 Pending CN113535263A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110768449.2A CN113535263A (zh) 2021-07-07 2021-07-07 动态库调用方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110768449.2A CN113535263A (zh) 2021-07-07 2021-07-07 动态库调用方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN113535263A true CN113535263A (zh) 2021-10-22

Family

ID=78097960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110768449.2A Pending CN113535263A (zh) 2021-07-07 2021-07-07 动态库调用方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113535263A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721928A (zh) * 2021-11-02 2021-11-30 成都无糖信息技术有限公司 一种基于二进制分析的动态库裁剪方法
CN115048155A (zh) * 2022-08-11 2022-09-13 成都智暄科技有限责任公司 加载动态库的方法及系统、计算机可读存储介质及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826014A (zh) * 2010-04-20 2010-09-08 北京邮电大学 一种软件工程源代码的分割方法
CN103136458A (zh) * 2013-01-21 2013-06-05 中标软件有限公司 一种Linux操作系统的代码保护方法及其模块
CN107122636A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种基于so文件的apk加固方法及装置
CN107291485A (zh) * 2016-04-11 2017-10-24 北京京东尚科信息技术有限公司 动态链接库的加固方法、运行方法、加固装置和安全系统
CN107992723A (zh) * 2017-11-29 2018-05-04 南京莱斯信息技术股份有限公司 一种基于动态链接库的Java源码保护方法
CN108133147A (zh) * 2017-12-20 2018-06-08 中兴通讯股份有限公司 可执行代码的保护方法、设备及可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826014A (zh) * 2010-04-20 2010-09-08 北京邮电大学 一种软件工程源代码的分割方法
CN103136458A (zh) * 2013-01-21 2013-06-05 中标软件有限公司 一种Linux操作系统的代码保护方法及其模块
CN107291485A (zh) * 2016-04-11 2017-10-24 北京京东尚科信息技术有限公司 动态链接库的加固方法、运行方法、加固装置和安全系统
CN107122636A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种基于so文件的apk加固方法及装置
CN107992723A (zh) * 2017-11-29 2018-05-04 南京莱斯信息技术股份有限公司 一种基于动态链接库的Java源码保护方法
CN108133147A (zh) * 2017-12-20 2018-06-08 中兴通讯股份有限公司 可执行代码的保护方法、设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721928A (zh) * 2021-11-02 2021-11-30 成都无糖信息技术有限公司 一种基于二进制分析的动态库裁剪方法
CN115048155A (zh) * 2022-08-11 2022-09-13 成都智暄科技有限责任公司 加载动态库的方法及系统、计算机可读存储介质及装置

Similar Documents

Publication Publication Date Title
CN109871704B (zh) 基于Hook的安卓资源文件防护方法、设备和存储介质
CN113535263A (zh) 动态库调用方法、装置、计算机设备及存储介质
CN107077540B (zh) 用于提供基于云的应用安全服务的方法和系统
JP2016540282A (ja) 動的ライブラリを保護する方法及び装置
CN111143869A (zh) 应用程序包处理方法、装置、电子设备及存储介质
CN109347620B (zh) 样本对齐方法、系统及计算机可读存储介质
CN108279941B (zh) 一种应用程序的压缩方法和装置
CN109891415B (zh) 针对未经授权的客户端应用程序保护Web服务器
CN1964357A (zh) 文件处理方法和信息处理装置
CN112231702B (zh) 应用保护方法、装置、设备及介质
CN112269970A (zh) 一种脚本加密方法、装置、服务器及存储介质
CN110780789A (zh) 游戏应用启动方法和装置、存储介质及电子装置
CN112416458A (zh) 基于ReactNative的预加载方法、装置、计算机设备及存储介质
CN111163095A (zh) 网络攻击分析方法、网络攻击分析装置、计算设备和介质
CN108599959B (zh) 授权证书校验方法、装置及可读存储介质、应用设备
CN112416391A (zh) 系统升级方法、装置、计算机设备和存储介质
CN112685055A (zh) 一种集群的构建方法和装置
CN114115903A (zh) 一种对小程序的加固、小程序运行方法及装置
CN113536242A (zh) 动态库调用方法、装置、终端设备以及存储介质
CN113312577A (zh) 网页资源处理方法、装置、电子设备和存储介质
CN109934016B (zh) 应用的签名校验方法、装置及电子设备
CN114462096A (zh) 基于区块链的物联网设备控制方法、装置、计算机设备及存储介质
CN102314571A (zh) 处理计算机病毒的方法及装置
CN106295327B (zh) 可执行文件的加固方法和装置
CN106161388B (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
TA01 Transfer of patent application right

Effective date of registration: 20221021

Address after: 518000 Guangdong province Shenzhen Longgang District Bantian Street five and Avenue North 4012 Yuan Zheng Industrial Park.

Applicant after: LAUNCH TECH Co.,Ltd.

Address before: 518000 1001, building B3, phase I, Baoneng Technology Park (South District), Qinghu Industrial Zone, Gangtou community, Bantian street, Longgang District, Shenzhen City, Guangdong Province

Applicant before: Shenzhen Yuanzheng Future Automobile Technology Co.,Ltd.

TA01 Transfer of patent application right