CN110297643A - 应用程序注入动态库的方法、装置、设备及存储介质 - Google Patents
应用程序注入动态库的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110297643A CN110297643A CN201910482504.4A CN201910482504A CN110297643A CN 110297643 A CN110297643 A CN 110297643A CN 201910482504 A CN201910482504 A CN 201910482504A CN 110297643 A CN110297643 A CN 110297643A
- Authority
- CN
- China
- Prior art keywords
- file
- application program
- dynamic
- dynamic base
- implanted
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000006837 decompression Effects 0.000 claims abstract description 21
- 238000002347 injection Methods 0.000 claims abstract description 17
- 239000007924 injection Substances 0.000 claims abstract description 17
- 238000012986 modification Methods 0.000 claims description 13
- 230000004048 modification Effects 0.000 claims description 13
- 238000009434 installation Methods 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 239000000243 solution Substances 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000002513 implantation Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及大数据技术领域,公开了一种应用程序注入动态库的方法,所述应用程序注入动态库的方法包括:在接收到脚本指令时,获取应用程序安装包解压的文件信息;根据获取到的所述文件信息,确定所述应用程序安装包中待修改文件并在所述待修改文件中添加待注入动态库标识信息;当检测到存在所述待注入动态库标识信息的文件夹时,添加预存的动态库文件至所述待注入动态库标识信息的文件夹中;当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件。本发明还公开了一种装置、设备以及计算机可读存储介质。本发明实现了将应用程序文件注入动态库的复杂指令封装成一个脚本文件注入动态库,从而避免软件兼容性的问题。
Description
技术领域
本发明涉及数据处理的对象存储技术领域,尤其涉及一种应用程序注入动态库的方法、装置、设备以及计算机可读存储介质。
背景技术
随着移动互联网技术的发展,现有的应用程序已满足不了大众的功能需求,因此需要在应用程序中注入其它功能的动态库,以此来调用这些功能。
在现有的应用程序调用动态库时经常使用两种方法:1、使用开源工具,提前找到了一个开源的mac工具:LibAhead for iOS,利用mach-o的LC_LOAD_DYLIB命令修改加载dylib的记录表,方可将dylib注入到ipa中的可执行文件中;2、使用钩子函数(Hook)。
但是这种方法主要有两个缺点:第一如果某个进程没有加载User32.dll,那么Hook DLL将永远也不会被加载。第二Hook DLL加载的时机问题,只有在进程发出User32调用的时候,Hook DLL才有可能被加载。也就是说进程正在进行复杂的数值计算而没有时间进行消息调用的时候,Hook DLL是不会被加载。
发明内容
本发明的主要目的在于解决现有技术需要使用开源工具修改动态库的记录表才可以将动态库注入到应用程序的技术问题。
为实现上述目的,本发明提供的一种应用程序注入动态库的方法,所述应用程序注入动态库的方法包括:
在接收到脚本指令时,获取应用程序安装包解压的文件信息;
根据获取到的所述文件信息,确定所述应用程序安装包中待修改文件并在所述待修改文件中添加待注入动态库标识信息;
当检测到所述待修改文件中存在所述待注入动态库标识信息的文件夹时,添加预存的动态库文件至所述待注入动态库标识信息文件夹中;
当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件。
可选地,所述在接收到脚本指令时,获取应用程序安装包解压的文件信息,包括:
在接收到用户在脚本命令行发送的执行指令时,搜索应用程序安装包并进行解压;
当所述应用程序安装包解压时,获取所述应用程序安装包的工程名称。
可选的,所述根据获取到的所述文件信息,确定所述应用程序安装包中待修改的文件并在所述待修改文件中添加待注入动态库的标识信息,包括:
根据获取到的所述工程名称,搜索与所述工程名称一致的主二进制文件;
当搜索到所述主二进制文件时,在所述主二进制文件中添加待注入动态库名称。
可选的,所述当搜索到所述主二进制文件时,在所述主二进制文件中添加待注入的动态库名称,包括:
当搜索到所述主二进制文件时,启用预设的yololib工具查找所述主二进制文件中的加载目录;
在查找到所述加载目录时,将所述待注入动态库名称写入所述加载目录中。
可选的,所述在查找到所述加载目录时,将待注入的所述动态库名称写入所述主二进制文件的加载目录中之后,还包括:
当检测到所述主二进制文件中不存在所述动态库标识名称的文件夹时,根据在所述加载目录中添加所述待注入动态库标识名称,自动生成所述动态库标识名称的文件夹;
在自动生成带有所述动态库标志名称的文件夹时,添加预存的所述动态库文件至带有所述待注入动态库标识信息的文件夹中。
可选的,所述当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件,包括:
当运行所述修改后的应用程序安装包时,在所述主体二进制的加载目录加载所述预存的动态库文件;
在所述待注入动态库标识名称的文件夹中加载到所述预存的动态库文件时,注入所述预存的动态库文件。
可选的,所述添加预存的动态库文件至所述待注入动态库标识信息的文件夹中之后,所述当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件之前,还包括:
根据预存的企业证书,将包含所述预存的动态库文件的所述修改后的应用程序进行重新签名,生成所述修改后的应用程序安装包。
此外,为实现上述目的,本发明还提供一种应用程序注入动态库的装置,所述应用程序注入动态库的装置包括:
获取单元,用于获取应用程序安装包的文件信息;
确定添加单元,用于确定待修改文件并在所述带修改文件中添加待注入动态库标识信息以及添加预存的动态库文件;
检测单元,用于检测待修改文件中是否带有所述动态库标识信息的文件夹;
加载注入单元,用于运行修改后的应用程序时,自动加载所述动态库文件,并将加载到的所述动态库文件注入所述应用程序中。
可选的,所述获取单元包括:
在接收到用户在脚本命令行发送的执行指令时,搜索应用程序安装包并进行解压;
当所述应用程序安装包解压时,获取所述应用程序安装包的工程名称。
可选的,所述添加单元包括:
根据获取到的所述工程名称,搜索与所述工程名称一致的主二进制文件;
当搜索到所述主二进制文件时,在所述主二进制文件中添加所述待注入动态库名称。
可选的,所述当搜索到所述主二进制文件时,在所述主二进制文件的中添加待注入的动态库名称,包括:
当搜索到所述主二进制文件时,启用预设的yololib工具查找所述主二进制文件中的加载目录;
在查找到所述加载目录时,将所述待注入动态库名称写入所述加载目录中。
可选地的,所述添加单元之后,包括:
当检测到所述主二进制文件中不存在所述动态库标识名称的文件夹时,根据在所述加载目录中添加所述动态库标识名称自动生成所述动态库标识名称的文件夹;
在自动生成所述待注入动态库标识名称的文件夹时,添加预存的所述动态库文件至所述动态库标识名称的文件夹中。
可选的,加载注入单元包括:
当运行所述修改后的应用程序安装包时,在所述主体二进制的加载目录加载所述预存的动态库文件;
在所述待注入动态库标识名称的文件夹中加载到所述预存的动态库文件时,注入所述预存的动态库文件。
可选的,所述添加预存的动态库文件至所述待注入动态库标识信息的文件夹中之后,所述当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件之前,还包括:
根据预存的企业证书,将包含所述预存的动态库文件的所述修改后的应用程序进行重新签名,生成所述修改后的应用程序安装包。
此外,为实现上述目的,本发明还提供一种应用程序注入动态库的设备,所述应用程序注入动态库的设备包括:存储器、处理器以及存储在所述处理器上并可在所述处理器上运行的应用程序注入动态库的程序,所述应用程序注入动态库的程序被处理器执行时实现如上发明所述的任一项所述应用程序注入动态库的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有应用程序注入动态库的程序,所述应用程序注入动态库的程序被处理器执行时实现如上发明所述的应用程序注入动态库的方法的步骤。
本发明实施例提出的一种应用程序注入动态库的方法、装置、设备以及计算机可读存储介质,通过在接收到脚本指令时,获取应用程序安装包解压的文件信息;根据获取到的所述文件信息,确定所述应用程序安装包中待修改文件并在所述待修改文件中添加待注入动态库标识信息;当检测到所述待修改文件中存在所述待注入动态库标识信息的文件夹时,添加预存的动态库文件至所述待注入动态库标识信息的文件夹中;当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件,实现了将应用程序文件注入动态库的复杂指令封装成一个脚本文件,在不使用注入工具的情况下注入动态库,从而避免软件兼容性的问题。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的计算机设备结构示意图;
图2为本发明应用程序注入动态库的方法的第一实施例的流程示意图;
图3为本发明应用程序注入动态库的方法的第二实施例的流程示意图;
图4为本发明应用程序注入动态库的方法的第三实施例的流程示意图;
图5为图4中步骤S22的细化流程示意图;
图6为本发明应用程序注入动态库的方法的第四实施例的流程示意图;
图7为本发明应用程序注入动态库的方法的第五实施例的流程示意图;
图8为本发明应用程序注入动态库的方法的第六实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:在接收到脚本指令时,获取应用程序安装包解压的文件信息;根据获取到的所述文件信息,确定所述应用程序安装包中待修改文件并在所述待修改文件中添加待注入动态库标识信息;当检测到所述待修改文件中存在所述待注入动态库标识信息的文件夹时,添加预存的动态库文件至所述待注入动态库标识信息的文件夹中;当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件。
由于现有技术需要使用开源工具修改动态库的记录表才可以将动态库注入到应用程序。
本发明提供一种解决方案,使应用程序文件注入动态库的复杂指令封装成一个脚本文件,只需在应用程序文件中添加动态库的标识信息就可注入动态库文件。
如图1所示,图1为本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例设备可以是个人计算机或者个人电脑(personal computer,PC),也可以是计算机终端设备。
如图1所示,该计算机设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。可选的,存储器1005还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序注入动态库程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的应用程序注入动态库程序,并执行以下操作:
在接收到脚本指令时,获取应用程序安装包解压的文件信息;
根据获取到的所述文件信息,确定所述应用程序安装包中待修改文件并在所述待修改文件中添加待注入动态库标识信息;
当检测到所述待修改文件中存在所述待注入动态库标识信息的文件夹时,添加预存的动态库文件至所述待注入动态库标识信息的文件夹中;
当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件。
进一步地,处理器1001可以调用存储器1005中存储的应用程序注入动态库程序,还执行以下操作:
在接收到用户在脚本命令行调发送的执行指令时,搜索应用程序安装包并进行解压;
当所述应用程序安装包解压时,获取所述应用程序安装包的工程名称。
进一步地,处理器1001可以调用存储器1005中存储的应用程序注入动态库程序,还执行以下操作:
根据获取到的所述工程名称,搜索与所述工程名称一致的主二进制文件;
当搜索到所述主二进制文件时,在所述主二进制文件中添加待注入动态库名称。
进一步地,处理器1001可以调用存储器1005中存储的应用程序注入动态库程序,还执行以下操作:
当搜索到所述主二进制文件时,启用预设的yololib工具查找所述主二进制文件中的加载目录;
在查找到所述加载目录时,将所述待注入动态库名称写入所述加载目录中。
进一步地,处理器1001可以调用存储器1005中存储的应用程序注入动态库程序,还执行以下操作:
当检测到所述主二进制文件中不存在所述动态库标识名称的文件夹时,根据在所述加载目录中添加所述待注入动态库标识名称,自动生成所述待注入动态库标识名称的文件夹;
在自动生成带有所述动态库标志名称的文件夹时,添加预存的所述动态库文件至带有所述待注入动态库标识信息的文件夹中。
进一步地,处理器1001可以调用存储器1005中存储的应用程序注入动态库程序,还执行以下操作:
当运行所述修改后的应用程序安装包时,在所述主体二进制的加载目录加载所述预存的动态库文件;
在所述动态库标识名称的文件夹中加载到所述动态库文件时,注入所述预存的动态库文件。
进一步地,处理器1001可以调用存储器1005中存储的应用程序注入动态库程序,还执行以下操作:
根据预存的企业证书,将包含所述预存的动态库文件的所述修改后应用程序进行重新签名,生成所述修改后的应用程序安装包。
参照图2,本发明为应用程序注入动态库的方法的第一实施例,所述应用程序注入动态库的方法包括:
步骤S10,在接收到脚本指令时,获取应用程序安装包解压的文件信息;
在终端的脚本命令行接收到用户输入的执行指令时,执行指令包括搜索指令、解压指令以及修改格式指令。脚本根据搜索应用程序的名称,在存储路径中搜索应用程序安装包。在搜索到应用程序安装包时根据修改格式指令,终端将应用程序安装包的IPA(苹果应用程序格式)格式修改为ZIP格式,并根据解压指令调用预设的UNZIP工具对应用程序安装包进行解压,终端在解压过程中,在应用程序安装包在存储路径处生成一个带有应用程序标识名称的文件夹,终端将应用程序安装包中的主程序文件、基本的配置文件以及图片、音视频文件等解压到带有应用程序标识名称的文件夹并获取主程序文件、基本的配置文件以及图片、音视频文件等文件信息。
步骤S20,根据获取到的文件信息,确定应用程序安装包中待修改文件并在待修改文件中添加待注入动态库的标识信息;
当终端获取到解压的各个文件信息时,各个文件信息包括文件的类型、参数、名称等。终端将获取到的各个文件信息与预存的待修改文件信息进行匹配以此来确定待修改的文件,例如,终端将获取到的各个文件的类型信息时,将预存的待修改文件的类型信息与各个文件的信息进行匹配,当类型信息匹配一致时,则确定该文件为待修改文件。在待修改文件中添加动态库的标识信息,例如在待修改文件的项目名称中添加动态库的名称。
步骤S30,当检测到待修改文件中存在动态库标识信息的文件夹时,添加预存的动态库文件至待注入动态库标识信息的文件夹中;
当终端检测到待修改文件中存在带有动态库标识信息的文件夹时,通过搜索或在指定位置处获取预存的动态库文件,终端将获取到的预存动态库文件复制或拷贝到待修改文件中带有动态库标识信息的文件夹。
步骤S40,当运行修改后的应用程序安装包时,加载并注入待注入动态库文件。
当终端在启动应用程序运行时,脚本检测到应用程序在运行的过程中需要调用动态库文件。终端在带有动态库名称的文件夹中加载到动态库文件,将加载到的动态库文件注入到应用程序中。
在本实施例中,终端在接收到用户在脚本中发送的执行指令时,获取应用程序安装包解压后的文件信息,其中,文件信息包括文件名称,根据文件名称获取到文件信息中的待修改文件并在待修改文件中添加待注入动态库的标志信息,在检测到待修改文件中待注入动态库标识信息的文件夹时,将预存的动态库文件复制到待注入动态库标识信息的文件夹中,在运行修改后的应用程序时,应用程序根据带修改文件中的标志,自动加载并注入复制的动态文件。将应用程序文件注入动态库的复杂行调指令封装成一个脚本文件,只需通过脚本文件在应用程序文件中添加动态库的标识信息就可注入动态库文件,从而不需要注入工具修改动态库的记录表,并解决了软件的兼容性问题。
参照图3,图3为本发明应用程序注入动态库的方法提供的第二实施例,基于上述图2所示的实施例,所述步骤S10包括:
步骤S11,在接收到用户在脚本命令行调发送的执行指令时,搜索应用程序安装包并进行解压;
步骤S12,当所述应用程序安装包解压时,获取所述应用程序安装包的工程名称。
终端在脚本命令行接收到用户输入的执行指令时,执行指令包括搜索指令、解压指令以及修改格式指令。终端根据脚本文件搜索应用程序的名称,在存储路径中搜索应用程序安装包。在搜索到应用程序安装包时根据修改格式指令,终端将应用程序安装包的IPA格式修改为ZIP格式,并根据解压指令调用UNZIP工具对应用程序安装包进行解压,在解压过程中在应用程序安装包存储路径处生成一个带有应用程序标识名称的文件夹,将应用程序安装包中的主程序文件、基本的配置文件以及图片、音视频文件等解压到带有应用程序标识名称的文件夹。终端通过脚本获取到主程序文件、基本的配置文件以及图片、音视频文件等文件的文件名称,在所述文件名称中获取到工程文件名称,其中工程文件名称为应用程序的文件名称。
在本实施例中,终端在接收到用户的在脚本中发送的指令来搜索指令对应的应用程序安装包,当获取到应用程序安装包时,根据脚本程序,对搜索到的应用程序安装包进行格式转换和解压,并获取到解压后的应用程序文件信息,从而将应用程序文件注入动态库的复杂指令封装成一个脚本程序来执行,减少用户的操作步骤。
参照图4,图4为本发明应用程序注入动态库的方法提供的第三实施例,基于上述图2所示的实施例,所述步骤S20包括:
步骤S21,根据获取到的所述工程名称,搜索与工程名称一致的主二进制文件;
步骤S22,当搜索到主二进制文件时,在主二进制文件中添加待注入动态库名称。
终端在脚本文件中获取到应用程序安装包解压到带有应用程序标识名称的文件夹中文件的工程名称,终端根据脚本文件在所述带有应用程序标识名称的文件夹中根据预存的basename命令搜索与工程名称相同的主二进制文件。应用程序文件在进行压缩打包时,压缩的文件名称即为工程名称,而主二进制文件名称与工程名称相同。终端在搜索到主二进制文件时,脚本通过注入工具在主二进制文件中的加载目录处添加待注入的动态库名称。
在本实施例中,当终端通过脚本程序获取到应用程序安装包的工程名称时,根据工程名称在应用程序文件中搜索与工程名称一致的主二进制文件,并在主二进制文件中添加待注入动态库的标志信息,从而不需要借助注入工具来对动态库进行修改。
参照图5,图5为本发明应用程序注入动态库的方法提供的第四实施例,基于上述图4所示的实施例,所述步骤S22包括:
步骤S221,当搜索到主二进制文件时,启用预设的yololib工具查找主二进制文件中的加载目录;
步骤S222,在查找到加载目录时,将待注入动态库名称写入加载目录中。
终端根据脚本启用yololib工具,查找二进制文件中的Load Commands这个数据段,然后把需要注入的动态库添加进去,最后二进制中就会多出一行动态库标识,即为终端成功的通过yololib工具将待注入动态库的名称写入主二进制文件的加载目录处,例如,具体格式为:
./yololib主体二进制名称Frameworks/库名称.framework/库名称。
在本实施例中,当终端通过脚本程序搜索到应用程序文件中的主二进制文件时,脚本程序启动终端中预置的yololib工具。根据yololib工具查找主二进制文件中的加载目录,并将待注入动态库的标志信息写入加载目录中,从而使应用程序在运行时,快速的获取需要注入的动态库信息。
参照图6,图6为本发明应用程序注入动态库的方法提供的第五实施例,基于上述图2所示的实施例,所述步骤S20之后,还包括:
步骤S50,当检测到主二进制文件中不存在待注入动态库标识名称的文件夹时,根据在加载目录中添加待注入动态库标识名称,自动生成待注入动态库标识名称的文件夹;
步骤S60,在自动生成待注入动态库标志名称的文件夹时,添加预存的动态库文件至待注入动态库标识名称的文件夹中。
当终端根据脚本文件通过yololib工具在主二进制文件的加载目录处添加待注入的动态库名称时,终端在脚本文件中检测是否存在待注入动态库名称的文件夹。脚本中存在待注入动态库名称的文件夹可以自动生成,也可以手动生成。当用户通过终端手动在脚本中生成带有动态库名称的文件夹时,终端通过脚本文件在主二进制文件的项目位置处添加待注入的动态库名称。当终端检测到带有动态库名称的文件时,不再自动生成带有待注入动态库名称的文件夹,以此避免生成两个带有待注入动态库名称的文件夹,终端在加载应用程序中的加载目录时,不知如何获取。当终端检测没有带有动态库名称的文件时,根据在主二进制文件的项目位置处添加待注入的动态库名称自动生成待注入动态库名称的文件夹。
在本实施例中,当终端通过脚本程序检测到应用程序中没有待注入动态库标识信息的文件夹时,根据在应用程序的加载目录中写入的待注入动态库标识信息,自动生成一个待注入动态库标识信息的文件夹并将预置的待注入动态库文件复制到应用程序的待注入动态库标识信息的文件夹中,避免应用程序中有两个待注入动态库标识名称的文件夹。
参照图7,图7为本发明应用程序注入动态库的方法提供的第六实施例,基于上述图2所示的实施例,所述步骤S40包括:
步骤S41,当运行修改后的应用程序安装包时,主体二进制的加载目录加载预存的动态库文件;
步骤S42,在待注入动态库标识名称的文件夹中加载到预存的动态库文件时,注入预存的动态库文件。
当终端在启用压缩后的应用程序时,应用程序在运行过程中根据主体二进制文件中的加载目录加载动态库文件,因在加载目录中添加动库的名称,因此在应用程序安装包运行时需要加载主体二进制文件的加载目录。当终端在主体二进制文件中检测到待注入动态库的文件夹时,加载预存的动态库文件,应用程序将注入加载到的动态库文件。
在本实施例中,当运行压缩后的应用程序安装包时,应用程序安装包中的主二进制文件加载目录,获取加载目录中的待注入动态库名称,根据待注入动态库名称获取到待注入动态库标识名称中的待注入动态库文件,将待注入动态库文件复制预应用程序中,直接获取从而避免软件兼容的问题。
参照图8,图8为本发明应用程序注入动态库的方法提供的第七实施例,基于上述图2所示的实施例,所述步骤S40之前,还包括:
步骤S70,根据预存的企业证书,将包含预存的动态库文件的修改后的应用程序进行重新签名,生成修改后的应用程序安装包。
当终端通过脚本在应用程序的主体二进制加载目录中添加了动态库名称以及在带有动态库名称的文件夹中复制了预存的动态库文件后,终端根据预存的企业证书将包含了动态库文件的应用程序进行重新签名,并调用预设的unzip工具将应用程序进行压缩打包修改应用程序安装包的格式,将应用程序安装包的的zip格式修改为ipa格式,生成新的应用程序安装包。
在本实施例,脚本程序根据终端中预存的企业证书,将修改的应用程序重新打包签名,生成一个带有动态库的应用程序安装包。将修好的应用程序进行打包签名,方便运行。
此外,为实现上述目的,本发明还提供一种应用程序注入动态库设备,所述应用程序注入动态库设备包括:存储器、处理器以及存储在所述处理器上并可在所述处理器上运行的应用程序注入动态库的程序,所述应用程序注入动态库的程序被处理器执行时实现如上实施例所述的任一项所述应用程序注入动态库的方法的步骤。
本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有应用程序注入动态库的程序,所述应用程序注入动态库的程序被处理器执行时实现如上实施例所述的应用程序注入动态库的方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。
Claims (10)
1.一种应用程序注入动态库的方法,其特征在于,所述应用程序注入动态库的方法包括:
在接收到脚本指令时,获取应用程序安装包解压的文件信息;
根据获取到的所述文件信息,确定所述应用程序安装包中待修改文件并在所述待修改文件中添加待注入动态库标识信息;
当检测到所述待修改文件中存在所述待注入动态库标识信息的文件夹时,添加预存的动态库文件至所述待注入动态库标识信息的文件夹中;
当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件。
2.如权利要求1所述的应用程序注入动态库的方法,其特征在于,所述在接收到脚本指令时,获取应用程序安装包解压的文件信息,包括:
在接收到用户在脚本命令行发送的执行指令时,搜索应用程序安装包并进行解压;
当所述应用程序安装包解压时,获取所述应用程序安装包的工程名称。
3.如权利要求1所述的应用程序注入动态库的方法,其特征在于,所述根据获取到的所述文件信息,确定所述应用程序安装包中待修改的文件并在所述待修改文件中添加待注入动态库标识信息,包括:
根据获取到的所述工程名称,搜索与所述工程名称一致的主二进制文件;
当搜索到所述主二进制文件时,在所述主二进制文件中添加待注入动态库名称。
4.如权利要求3所述的应用程序注入动态库的方法,其特征在于,所述当搜索到所述主二进制文件时,在所述主二进制文件中添加待注入的动态库名称,包括:
当搜索到所述主二进制文件时,启用预设的yololib工具查找所述主二进制文件中的加载目录;
在查找到所述加载目录时,将所述待注入动态库名称写入所述加载目录中。
5.如权利要求4所述的的方法,其特征在于,所述在查找到所述加载目录时,将所述待注入动态库名称写入所述加载目录中之后,还包括:
当检测到所述主二进制文件中不存在所述动态库标识名称的文件夹时,根据在所述加载目录中添加所述待注入动态库标识名称,自动生成所述待注入动态库标识名称的文件夹;
在自动生成所述待注入动态库标识名称的文件夹时,添加预存的所述动态库文件至所述待注入动态库标识名称的文件夹中。
6.如权利要求3-5中任一所述的应用程序注入动态库的方法,其特征在于,所述当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件包括:
当运行所述修改后的应用程序安装包时,在所述主体二进制的加载目录加载所述预存的动态库文件;
在所述待注入动态库标识名称的文件夹中加载到所述预存的动态库文件时,注入所述预存的动态库文件。
7.如权利要求6所述的应用程序注入动态库的方法,其特征在于,所述添加预存的动态库文件至所述待注入动态库标识信息的文件夹中之后,所述当运行修改后的所述应用程序安装包时,加载并注入所述预存的动态库文件之前,还包括:
根据预存的企业证书,将包含所述预存的动态库文件的所述修改后的应用程序进行重新签名,生成所述修改后的应用程序安装包。
8.一种应用程序注入动态库的装置,其特征在于,所述应用程序注入动态库的装置包括:
获取单元,用于获取应用程序安装包的文件信息;
确定添加单元,用于确定待修改文件并在所述带修改文件中添加待注入动态库标识信息以及添加预存的动态库文件;
检测单元,用于检测待修改文件中是否带有所述动态库标识信息的文件夹;
加载注入单元,用于运行修改后的应用程序时,自动加载所述动态库文件,并将加载到的所述动态库文件注入所述应用程序中。
9.一种应用程序注入动态库的设备,其特征在于,所述应用程序注入动态库的设备包括:存储器、处理器以及存储在所述处理器上并可在所述处理器上运行的应用程序注入动态库的程序,所述应用程序注入动态库的程序被处理器执行时实现如述权利要求1至7中的任一项所述应用程序注入动态库的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有应用程序注入动态库的程序,所述应用程序注入动态库的程序被处理器执行时实现如权利要求1至7中任一项所述的应用程序注入动态库的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910482504.4A CN110297643B (zh) | 2019-06-04 | 2019-06-04 | 应用程序注入动态库的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910482504.4A CN110297643B (zh) | 2019-06-04 | 2019-06-04 | 应用程序注入动态库的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297643A true CN110297643A (zh) | 2019-10-01 |
CN110297643B CN110297643B (zh) | 2024-01-30 |
Family
ID=68027663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910482504.4A Active CN110297643B (zh) | 2019-06-04 | 2019-06-04 | 应用程序注入动态库的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297643B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795128A (zh) * | 2019-10-30 | 2020-02-14 | 上海米哈游天命科技有限公司 | 一种程序漏洞修复方法、装置、存储介质及服务器 |
CN110874220A (zh) * | 2019-11-15 | 2020-03-10 | 网易(杭州)网络有限公司 | 游戏应用程序中的功能集成方法、设备和存储介质 |
CN114237742A (zh) * | 2021-12-10 | 2022-03-25 | 北京奇艺世纪科技有限公司 | 一种动态库的加载编译方法、装置、终端及存储介质 |
CN114416668A (zh) * | 2022-03-29 | 2022-04-29 | 杭州默安科技有限公司 | 一种pkg诱饵文件生成方法和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953534A (en) * | 1997-12-23 | 1999-09-14 | University Of Washington | Environment manipulation for executing modified executable and dynamically-loaded library files |
US20140304720A1 (en) * | 2013-04-03 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method for starting process of application and computer system |
WO2014161353A1 (en) * | 2013-04-03 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method for starting process of application and computer system |
WO2015081713A1 (en) * | 2013-12-03 | 2015-06-11 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for running applications in background |
US20150309811A1 (en) * | 2014-04-28 | 2015-10-29 | Citrix Systems, Inc. | Modifying an Application for Managed Execution |
CN105072255A (zh) * | 2015-07-10 | 2015-11-18 | 北京奇虎科技有限公司 | 移动设备隐私权限控制方法、装置及相应的手机设备 |
CN105512552A (zh) * | 2014-09-26 | 2016-04-20 | 腾讯科技(深圳)有限公司 | 参数检测方法及装置 |
CN106126290A (zh) * | 2016-06-27 | 2016-11-16 | 微梦创科网络科技(中国)有限公司 | 应用程序优化方法、装置及系统 |
CN107329901A (zh) * | 2017-07-31 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 数据包抓取方法、终端、服务器和存储介质 |
CN107665306A (zh) * | 2017-09-06 | 2018-02-06 | 武汉斗鱼网络科技有限公司 | 一种检测非法文件注入的方法、装置、客户端及服务器 |
-
2019
- 2019-06-04 CN CN201910482504.4A patent/CN110297643B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953534A (en) * | 1997-12-23 | 1999-09-14 | University Of Washington | Environment manipulation for executing modified executable and dynamically-loaded library files |
US20140304720A1 (en) * | 2013-04-03 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method for starting process of application and computer system |
WO2014161353A1 (en) * | 2013-04-03 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method for starting process of application and computer system |
WO2015081713A1 (en) * | 2013-12-03 | 2015-06-11 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for running applications in background |
US20150309811A1 (en) * | 2014-04-28 | 2015-10-29 | Citrix Systems, Inc. | Modifying an Application for Managed Execution |
CN105512552A (zh) * | 2014-09-26 | 2016-04-20 | 腾讯科技(深圳)有限公司 | 参数检测方法及装置 |
CN105072255A (zh) * | 2015-07-10 | 2015-11-18 | 北京奇虎科技有限公司 | 移动设备隐私权限控制方法、装置及相应的手机设备 |
CN106126290A (zh) * | 2016-06-27 | 2016-11-16 | 微梦创科网络科技(中国)有限公司 | 应用程序优化方法、装置及系统 |
CN107329901A (zh) * | 2017-07-31 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 数据包抓取方法、终端、服务器和存储介质 |
CN107665306A (zh) * | 2017-09-06 | 2018-02-06 | 武汉斗鱼网络科技有限公司 | 一种检测非法文件注入的方法、装置、客户端及服务器 |
Non-Patent Citations (1)
Title |
---|
KINKEN: "动态库的注入", pages 1 - 2, Retrieved from the Internet <URL:https://www.jianshu.com/p/5cd270ed4ab6> * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795128A (zh) * | 2019-10-30 | 2020-02-14 | 上海米哈游天命科技有限公司 | 一种程序漏洞修复方法、装置、存储介质及服务器 |
CN110795128B (zh) * | 2019-10-30 | 2023-10-27 | 上海米哈游天命科技有限公司 | 一种程序漏洞修复方法、装置、存储介质及服务器 |
CN110874220A (zh) * | 2019-11-15 | 2020-03-10 | 网易(杭州)网络有限公司 | 游戏应用程序中的功能集成方法、设备和存储介质 |
CN110874220B (zh) * | 2019-11-15 | 2023-04-28 | 网易(杭州)网络有限公司 | 游戏应用程序中的功能集成方法、设备和存储介质 |
CN114237742A (zh) * | 2021-12-10 | 2022-03-25 | 北京奇艺世纪科技有限公司 | 一种动态库的加载编译方法、装置、终端及存储介质 |
CN114237742B (zh) * | 2021-12-10 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 一种动态库的加载编译方法、装置、终端及存储介质 |
CN114416668A (zh) * | 2022-03-29 | 2022-04-29 | 杭州默安科技有限公司 | 一种pkg诱饵文件生成方法和系统 |
CN114416668B (zh) * | 2022-03-29 | 2022-07-08 | 杭州默安科技有限公司 | 一种pkg诱饵文件生成方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110297643B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297643A (zh) | 应用程序注入动态库的方法、装置、设备及存储介质 | |
US9342237B2 (en) | Automated testing of gesture-based applications | |
CN105955888B (zh) | 一种页面调试预览方法及系统 | |
CN101706725B (zh) | 一种可重定位程序的加载及调试方法及系统 | |
US9262311B1 (en) | Network page test system and methods | |
US9471345B2 (en) | Runtime generation and injection of java annotations | |
WO2016177341A1 (zh) | 接口调用方法、装置及终端 | |
CN111949491B (zh) | MyBatis应用程序的SQL提取方法及装置 | |
CN107391119B (zh) | 一种横竖屏实现方法及装置 | |
CN108197024B (zh) | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 | |
CN112559026B (zh) | 基于api接口的原生能力拓展方法、设备及存储介质 | |
CN110825430A (zh) | 一种api文档生成方法、装置、设备及存储介质 | |
Natarajan et al. | P2A: A tool for converting pixels to animated mobile application user interfaces | |
CN103544434A (zh) | 用于确保应用程序安全运行的方法和终端 | |
US11544346B2 (en) | System and method for generation of starter websites | |
CN111666199B (zh) | 在智能终端上执行的调试方法以及软件调试器 | |
Parada et al. | Automating mobile application development: UML-based code generation for Android and Windows Phone | |
US9736222B1 (en) | System, method, and computer program for automatically exposing application programming interfaces (APIS) associated with an application server to one or more client devices | |
CN107741850B (zh) | 动态壁纸包的生成方法、装置及存储介质 | |
CN109144479A (zh) | 开发架构 | |
CN113535263A (zh) | 动态库调用方法、装置、计算机设备及存储介质 | |
US20140304690A1 (en) | Systems and Methods for Outputting an Application to Another Environment | |
CN112631694B (zh) | 一种api接口封装调用方法及系统 | |
CN112691382B (zh) | 资源处理方法、装置及计算机可读存储介质 | |
CN111124386B (zh) | 基于Unity的动画事件处理方法、装置、设备和存储介质 |
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 |