CN104102500B - 一种应用程序的进程启动方法及计算机系统 - Google Patents
一种应用程序的进程启动方法及计算机系统 Download PDFInfo
- Publication number
- CN104102500B CN104102500B CN201310115475.0A CN201310115475A CN104102500B CN 104102500 B CN104102500 B CN 104102500B CN 201310115475 A CN201310115475 A CN 201310115475A CN 104102500 B CN104102500 B CN 104102500B
- Authority
- CN
- China
- Prior art keywords
- dynamic link
- loading
- link library
- file
- library file
- 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
Links
Classifications
-
- 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/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/44568—Immediately runnable code
- G06F9/44584—Portable applications, i.e. making applications self-contained, e.g. U3 standard
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
本发明实施例公开了应用程序的进程启动方法及计算机系统,应用于计算机技术领域。在启动一个应用程序时,计算机系统不会考虑该应用程序的进程对应的exe文件本身的导入表,而是默认加载第二dll文件。本发明实施例中,如果需要注入第一dll文件时,驱动模块可以修改默认加载的第二dll文件的导入表,然后计算机系统再加载该第二dll文件,这样绕过系统的默认加载机制,保证了执行应用程序的进程时所需要的所有函数都加载到内存中,有效地实现了对应用程序的进程注入;且本发明实施例中不需要在应用程序的进程运行过程中再加载第一dll文件,能保证应用程序的进程运行的稳定性。
Description
技术领域
本发明涉及计算机技术领域,特别涉及应用程序的进程启动方法及计算机系统。
背景技术
计算机系统在启动一个应用程序的进程时,需要计算机系统加载该应用程序的进程对应的exe和dll等的可移植的执行体(Portable Execute,PE)文件,其中,exe格式的PE文件是可执行文件(以下简称exe文件),dll格式的PE文件是动态链接库(以下简称dll文件)。
对于特殊架构的应用程序的进程比如.net架构的应用程序的进程,计算机系统先加载exe文件后,在计算机系统执行该exe文件中代码的过程中,由第三方应用模块通过shell code或hook等方式将导入函数(导入函数的执行代码位于一个或多个dll文件)注入到该应用程序的进程中,该导入函数是指需要被调用的函数但是该函数的执行代码不在exe文件中,从而实现应用程序的进程启动。但是这种方法会导致应用程序的进程运行不稳定,或注入的动作可能会被认为是危险操作而被拦截。
发明内容
本发明实施例提供应用程序的进程启动方法及计算机系统,有效地实现了对应用程序的进程注入,保证了这种架构的应用程序的进程运行的稳定性。
本发明实施例提供一种应用程序的进程启动方法,包括:
在加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件,则将所述第一动态链接库文件的信息添加到所述第二动态链接库文件的导入表中;
根据添加后的所述导入表加载所述可执行文件下的第二动态链接库文件。
本发明实施例提供一种计算机系统,包括:信息添加单元和加载单元,
信息添加单元,用于在所述加载单元加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件,则将所述第一动态链接库文件的信息添加到所述第二动态链接库文件的导入表中;
加载单元,用于加载应用程序的进程对应的可执行文件,并根据所述信息添加单元添加后的所述导入表加载所述可执行文件下的第二动态链接库文件。
可见,在启动一个应用程序的进程时,计算机系统在加载该应用程序的进程对应的exe文件时,不会考虑该exe文件本身的导入表,而是默认加载第二dll文件。本发明实施例中,如果需要注入第一dll文件时,计算机系统的底层驱动模块可以修改默认加载的第二dll文件的导入表,然后计算机系统再加载该第二dll文件,这样绕过系统的默认加载机制,能通过修改导入表的方式实现dll文件注入的目的,保证了执行应用程序的进程时所需要的所有函数都加载到内存中,有效地实现了对应用程序的进程注入;且本发明实施例中不需要在执行应用程序的进程代码的过程中再加载第一dll文件,而采用通用的dll文件注入流程,相比现有技术中采用shell code或hook等方式注入dll文件,能保证应用程序的进程运行的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种应用程序的进程启动方法流程图;
图2是本发明实施例提供的另一种应用程序的进程启动方法流程图;
图3是本发明实施例提供的一种计算机系统的结构示意图;
图4是本发明实施例提供的另一种计算机系统的结构示意图;
图5是将本发明实施例提供的应用程序的进程启动方法应用于的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种应用程序的进程启动方法,本实施例的方法是计算机系统所执行的方法,该计算机系统可以包括硬件和软件系统,其中软件系统可以应用软件系统和操作系统,应用软件系统中可以包括驱动模块,在硬件和软件系统中都可以包括存储模块,本实施例的方法流程如图1所示,包括:
步骤101,在计算机系统加载应用程序的进程对应的可执行文件即exe文件的过程中,计算机系统中的驱动模块会先判断是否需要注入第一动态链接库文件即第一dll文件,如果需要,则执行步骤102;如果不需要,则计算机系统的驱动模块不会考虑应用程序的进程对应的exe文件本身已经有的导入表,也就是说,计算机系统的驱动模块不会通过exe文件本身的导入表来决定需要加载哪些dll文件,而是由操作系统直接默认加载第二动态链接库文件比如mscoree的动态链接库文件,和kernel32的动态链接库文件等,该第二动态链接库文件还可以包括其它形式的dll文件,在此不进行赘述。
其中,应用程序的进程就是一个活跃着的应用程序,即驱动模块已经将应用程序的代码(这些代码在exe文件和dll文件中)放到对应的计算机系统的存储模块中,占有了一定的系统资源的应用程序,一个应用程序在没有被调用到内存空间之前叫做为程序,被调用并得到了资源后就可以称为进程,每个应用程序对应储存在存储模块中的一段空间中。
可以理解,在启动一个应用程序的进程时,需要驱动模块先向计算机系统的操作系统注册加载该应用程序的进程对应的exe文件的回调函数,即驱动模块将加载exe文件时所用的回调函数的信息包括地址信息等发送给计算机系统的操作系统,并由计算机系统的操作系统执行该回调函数即加载exe文件到计算机的内存即存储模块中。在这个过程中,驱动模块会判断是否需要注入第一dll文件,具体地,可以判断该应用程序的进程的执行是否需要导入函数,即需要执行代码不在exe文件中的被调用的函数,如果不需要,则继续由计算机系统的操作系统执行加载exe文件的步骤;如果需要,由于导入函数的执行代码位于一个或多个dll文件中,则需要注入该导入函数所在的第一dll文件。
步骤102,计算机系统中的驱动模块将第一动态链接库文件的信息添加到第二动态链接库文件的导入表中。
针对有些应用程序的进程来说,在注入第一dll文件时,驱动模块会修改该应用程序的进程对应的exe文件本身的导入表,即将需要注入的第一dll文件的信息添加到该exe文件本身的导入表中;然后由计算机系统的操作系统按照添加后的导入表来加载第一dll文件和exe文件。其中导入表中包括需要用到的函数的信息(包括名称等信息)及函数所在文件的信息(包括名称和路径信息等)的对应关系,比如导入函数与导入函数所在dll文件的信息等,这样计算机系统就知道需要加载哪些dll文件。
而针对另外一些应用程序的进程,比如.net架构的应用程序的进程,在注入第一dll文件时,计算机系统中的驱动模块需要修改在加载exe文件时默认加载的第二动态链接库文件的导入表,即将需要注入的第一dll文件的信息添加到第二dll文件的导入表中,在一个具体实现时,驱动模块可以先构建一个新导入表,并将需要加载的dll文件(包括第一dll文件)的路径信息插入到该新导入表中;然后修改第二dll文件的原始导入表指针,使得原始导入表指针指向插入路径信息的新导入表。其中驱动模块还可以将需要加载的dll文件的其它信息比如dll文件所包含的导入函数的信息等插入到新导入表中。
上述.net架构的进程和非.net架构的进程是指编程方式不同的两种类型的应用程序的进程。
步骤103,计算机系统的操作系统根据添加后的导入表加载应用程序的进程对应的可执行文件下的第二动态链接库文件。
需要说明的是,驱动模块在执行上述步骤102时,可以修改任一个第二dll文件的导入表,比如即mscoree的动态链接库文件,或kernel32的动态链接库文件等。这样计算机系统的操作系统在执行本步骤103时,对于修改导入表的第二dll文件的加载,需要按照修改后的导入表将第二dll文件、注入的第一dll文件及需要注入的其它dll文件都加载到内存即存储模块中,而对于没有修改导入表的第二dll文件的加载,计算机系统可以按照该第二dll文件本身的导入表将该第二dll文件加载到内存中。
可见,在启动一个应用程序的进程时,计算机系统在加载该应用程序的进程对应的exe文件时,不会考虑该exe文件本身的导入表,而是默认加载第二dll文件。本发明实施例中,如果需要注入第一dll文件时,计算机系统的底层驱动模块可以修改默认加载的第二dll文件的导入表,然后计算机系统的操作系统再加载该第二dll文件,这样绕过系统的默认加载机制,能通过修改导入表的方式实现dll文件注入的目的,保证了执行应用程序的进程时所需要的所有函数都加载到内存中,有效地实现了对应用程序的进程注入;且本发明实施例中不需要在执行应用程序的进程运行过程中再加载第一dll文件,而采用通用的dll文件注入流程,相比现有技术中采用shell code或hook等方式注入dll文件,能保证应用程序的进程运行的稳定性。
在具体实现上述应用程序的进程启动过程中,为了应用程序的进程的安全性,计算机系统在加载应用程序的进程对应的PE文件时,会为该应用程序的进程的内存空间加锁来防止加载的PE文件被修改,而上述驱动模块修改的第二dll文件的导入表也被锁,使得无法执行上述步骤102。参考图2所示,这种情况下,驱动模块需要在执行步骤102之前执行步骤104,即触发计算机系统跳出当前执行的加载应用程序的进程对应的可执行文件的步骤,具体地,跳出计算机系统的操作系统当前执行的加载PE文件的回调函数,这样该应用程序的进程的内存空间(即存储模块中的一段空间)就不会处于加锁的保护状态,可以由驱动模块对第二dll文件的导入表进行修改,然后再回到计算机系统的操作系统当前执行函数中,执行步骤102和103。其中驱动模块在触发计算机系统跳出当前执行步骤时,可以先向启动应用程序的进程的执行程序中插入一个延时过程调用(asynchronous procedure call,APC)函数,由计算机系统的操作系统来执行该APC函数。
本发明实施例还提供一种计算机系统,是一种应用程序的进程启动设备,结构示意图如图3所示,包括信息添加单元10和加载单元11,且各个单元之间可以按照上述实施例中所述的方法启动应用程序的进程,其中:
信息添加单元10,用于在所述加载单元11加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件,则将所述第一动态链接库文件的信息添加到所述第二动态链接库文件的导入表中,该第二dll文件可以是加载单元11在加载exe文件时,默认加载的任一dll文件,比如mscoree的动态链接库文件等。其中该信息添加单元10可以在加载应用程序的进程对应的可执行文件时,判断所述应用程序的进程的执行是否需要导入函数,如果需要,则判断所述注入所述导入函数所在的第一动态链接文件。
加载单元11,用于加载应用程序的进程对应的可执行文件,并根据所述信息添加单元10添加后的所述导入表加载所述可执行文件下的第二动态链接库文件。具体地,加载单元11对于修改导入表的第二dll文件的加载,需要按照修改后的导入表将第二dll文件、注入的第一dll文件及需要注入的其它dll文件都加载到内存中;而对于没有修改导入表的第二dll文件的加载,加载单元11可以按照该第二dll文件本身的导入表将该第二dll文件加载到内存中。
需要说明的是,上述信息添加单元10还可以针对另外一些应用程序的进程比如非.net架构的应用程序的进程,在需要注入第一dll文件时,修改该应用程序的进程对应的exe文件本身的导入表,具体地,将需要注入的第一dll文件的信息添加到该exe文件本身的导入表中;然后加载单元11可以按照添加后的导入表来加载第一dll文件和exe文件。
可见,在启动一个应用程序的进程时,计算机系统在加载该应用程序的进程对应的exe文件时,不会考虑该exe文件本身的导入表,而是默认加载第二dll文件。本发明实施例中,如果需要注入第一dll文件时,信息添加单元10修改默认加载的第二dll文件的导入表,然后加载单元11再加载该第二dll文件,这样绕过系统的默认加载机制,能通过修改导入表的方式实现dll文件注入的目的,保证了执行应用程序的进程时所需要的所有函数都加载到内存中,有效地实现了对应用程序的进程注入;且本发明实施例中不需要在执行应用程序的进程代码的过程中再加载第一dll文件,而采用通用的dll文件注入流程,相比现有技术中采用shell code或hook等方式注入dll文件,能保证应用程序的进程运行的稳定性。
参考图4所示,在一个具体的实施例中,计算机系统除了可以包括如图3所示的结构外,还可以包括跳出单元12,且信息添加单元具体可以通过构建单元110和添加单元120来实现,具体地:
跳出单元12,用于触发所述加载单元11跳出加载应用程序的进程对应的可执行文件的步骤,所述信息添加单元10在所述跳出单元12触发加载单元11跳出当前执行步骤后,执行所述添加的步骤,具体地,跳出单元12可以向加载单元11加载exe文件的执行程序中插入一个APC函数,并由加载单元11执行该延时过程调用函数。
构建单元110,用于在加载单元11加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件时,则构建新导入表,将需要加载的动态链接库文件的路径信息插入所述新导入表中,所述需要加载的动态链接库文件包括所述第一动态链接库文件;
修改单元120,用于修改所述第二动态链接库文件的原始导入表指针,使得所述原始导入表指针指向构建单元110构建的插入路径信息的所述新导入表。
本实施例的系统中,在所述加载单元11加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件时,跳出单元12可以触发加载单元11先跳出当前执行的加载exe文件的步骤;然后由信息添加单元10中的构建单元10构建新导入表,在修改单元120修改第二dll文件的原始导入表后,加载单元11继续执行加载的步骤。
需要说明的是,在实际应用中,计算机系统中的信息添加单元10和跳出单元12都可以属于底层驱动模块的部分;而加载单元11中既包括底层驱动模块的部分,又包括上层应用模块的部分,来完成exe文件和dll文件的加载。
以下主要以本发明实施例的应用程序的进程启动方法应用于终端中来举例说明,该终端可以包括智能手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III,MP3)播放器、动态影像专家压缩标准音频层面4(Moving Picture Experts Group Audio Layer IV,MP4)播放器、膝上型便携计算机和台式计算机等等。
请参考图5,其示出了本发明实施例所涉及的终端的结构示意图,具体来讲:
终端可以包括射频(Radio Frequency,RF)电路20、包括有一个或一个以上计算机可读存储介质的存储器21、输入单元22、显示单元23、传感器24、音频电路25、无线保真(wireless fidelity,WiFi)模块26、包括有一个或者一个以上处理核心的处理器27、以及电源28等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路20可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器27处理;另外,将涉及上行的数据发送给基站。通常,RF电路20包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路20还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(G1obal System of Mobilecommunication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code DivisionMultiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器21可用于存储软件程序以及模块,处理器27通过运行存储在存储器21的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器21还可以包括存储器控制器,以提供处理器27和输入单元22对存储器21的访问。
输入单元22可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元22可包括触敏表面221以及其他输入设备222。触敏表面221,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面221上或在触敏表面221附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面221可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器27,并能接收处理器27发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面221。除了触敏表面221,输入单元22还可以包括其他输入设备222。具体地,其他输入设备222可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元23可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元23可包括显示面板231,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板231。进一步的,触敏表面221可覆盖显示面板231,当触敏表面221检测到在其上或附近的触摸操作后,传送给处理器27以确定触摸事件的类型,随后处理器27根据触摸事件的类型在显示面板231上提供相应的视觉输出。虽然在图5中,触敏表面221与显示面板231是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面221与显示面板231集成而实现输入和输出功能。
终端还可包括至少一种传感器24,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板231的亮度,接近传感器可在终端移动到耳边时,关闭显示面板231和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路25、扬声器251,传声器252可提供用户与终端之间的音频接口。音频电路25可将接收到的音频数据转换后的电信号,传输到扬声器251,由扬声器251转换为声音信号输出;另一方面,传声器252将收集的声音信号转换为电信号,由音频电路25接收后转换为音频数据,再将音频数据输出处理器27处理后,经RF电路20以发送给比如另一终端,或者将音频数据输出至存储器21以便进一步处理。音频电路25还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块26可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块26,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器27是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器21内的软件程序和/或模块,以及调用存储在存储器21内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器27可包括一个或多个处理核心;优选的,处理器27可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器27中。
终端还包括给各个部件供电的电源28(比如电池),优选的,电源可以通过电源管理系统与处理器27逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源28还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器27会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器21中,并由处理器27来运行存储在存储器21中的应用程序,从而实现各种功能:
在加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件,则将所述第一动态链接库文件的信息添加到所述第二动态链接库文件的导入表中,其中在加载应用程序的进程对应的可执行文件时,该处理器27还可以判断应用程序的进程的执行是否需要导入函数,如果需要,则判断所述注入所述导入函数所在的第一动态链接文件。
根据添加后的所述导入表加载所述可执行文件下的第二动态链接库文件。
其中,第二动态链接库文件中可以包括mscoree的动态链接库文件等,且在添加第一动态链接库文件的信息时,具体地,可以先构建新导入表,将需要加载的动态链接库文件的路径信息插入所述新导入表中,所述需要加载的动态链接库文件包括所述第一动态链接库文件;修改所述第二动态链接库文件的原始导入表指针,使得所述原始导入表指针指向插入路径信息的所述新导入表。
进一步地,由于终端的处理器27在加载应用程序的进程对应的PE文件时,会为该应用程序的进程的内存空间加锁来防止加载的PE文件被修改,则终端中的处理器27还需要在添加第一动态链接库文件的信息之前,跳出当前执行的所述加载应用程序的进程对应的可执行文件的步骤,即执行延时过程调用函数,并执行所述添加的步骤。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
以上对本发明实施例所提供的应用程序的进程启动方法及计算机系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种应用程序的进程启动方法,其特征在于,包括:
在加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件,则将所述第一动态链接库文件的信息添加到第二动态链接库文件的导入表中;
根据添加后的所述导入表加载所述可执行文件下的第二动态链接库文件;
所述将所述第一动态链接库文件的信息添加到所述第二动态链接库文件的导入表中,具体包括:
构建新导入表,将需要加载的动态链接库文件的路径信息插入所述新导入表中,所述需要加载的动态链接库文件包括所述第一动态链接库文件;
修改所述第二动态链接库文件的原始导入表指针,使得所述原始导入表指针指向插入路径信息的所述新导入表。
2.如权利要求1所述的方法,其特征在于,所述在加载应用程序的进程对应的可执行文件时,所述方法还包括:判断所述应用程序的进程的执行是否需要导入函数,如果需要,则判断所述注入所述导入函数所在的第一动态链接文件。
3.如权利要求1或2所述的方法,其特征在于,在所述将第一动态链接库文件的信息添加到所述第二动态链接库文件的导入表之前还包括:
跳出当前执行的所述加载应用程序的进程对应的可执行文件的步骤,并执行所述添加的步骤。
4.如权利要求3所述的方法,其特征在于,所述跳出所述加载应用程序的进程对应的可执行文件的步骤具体包括:执行延时过程调用函数。
5.一种计算机系统,其特征在于,包括:信息添加单元和加载单元,
信息添加单元,用于在所述加载单元加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件,则将所述第一动态链接库文件的信息添加到第二动态链接库文件的导入表中;
加载单元,用于加载应用程序的进程对应的可执行文件,并根据所述信息添加单元添加后的所述导入表加载所述可执行文件下的第二动态链接库文件;
所述信息添加单元具体包括:
构建单元,用于在加载应用程序的进程对应的可执行文件时,如果需要注入第一动态链接库文件时,则构建新导入表,将需要加载的动态链接库文件的路径信息插入所述新导入表中,所述需要加载的动态链接库文件包括所述第一动态链接库文件;
修改单元,用于修改所述第二动态链接库文件的原始导入表指针,使得所述原始导入表指针指向插入路径信息的所述新导入表。
6.如权利要求5所述的计算机系统,其特征在于,所述信息添加单元,具体用于在加载应用程序的进程对应的可执行文件时,判断所述应用程序的进程的执行是否需要导入函数,如果需要,则判断所述注入所述导入函数所在的第一动态链接文件。
7.如权利要求5或6所述的计算机系统,其特征在于,还包括:
跳出单元,用于触发所述加载单元跳出当前执行的加载应用程序的进程对应的可执行文件的步骤,所述信息添加单元在所述加载单元跳出当前执行步骤后,执行所述添加的步骤。
8.如权利要求7所述的计算机系统,其特征在于,跳出单元,具体用于向所述加载单元加载可执行文件的执行程序中插入延时过程调用函数;
所述加载单元还用于执行所述延时过程调用函数。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310115475.0A CN104102500B (zh) | 2013-04-03 | 2013-04-03 | 一种应用程序的进程启动方法及计算机系统 |
PCT/CN2013/089704 WO2014161353A1 (en) | 2013-04-03 | 2013-12-17 | Method for starting process of application and computer system |
US14/304,590 US20140304720A1 (en) | 2013-04-03 | 2014-06-13 | Method for starting process of application and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310115475.0A CN104102500B (zh) | 2013-04-03 | 2013-04-03 | 一种应用程序的进程启动方法及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102500A CN104102500A (zh) | 2014-10-15 |
CN104102500B true CN104102500B (zh) | 2017-12-01 |
Family
ID=51657535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310115475.0A Active CN104102500B (zh) | 2013-04-03 | 2013-04-03 | 一种应用程序的进程启动方法及计算机系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104102500B (zh) |
WO (1) | WO2014161353A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106304282B (zh) * | 2015-05-14 | 2021-05-04 | 中兴通讯股份有限公司 | 一种通信设备节能方法和装置 |
CN105930190B (zh) * | 2016-04-27 | 2019-04-16 | 百度在线网络技术(北京)有限公司 | 一种基于操作系统的程序自启动方法和装置 |
CN106445662B (zh) * | 2016-09-13 | 2019-09-10 | 广东欧珀移动通信有限公司 | 一种移植应用程序的方法及终端设备 |
US10481876B2 (en) * | 2017-01-11 | 2019-11-19 | Microsoft Technology Licensing, Llc | Methods and systems for application rendering |
CN108958824A (zh) * | 2017-05-18 | 2018-12-07 | 龙芯中科技术有限公司 | 应用程序的启动方法、装置、电子设备及存储介质 |
CN108446144B (zh) * | 2018-03-12 | 2021-07-23 | 武汉斗鱼网络科技有限公司 | 一种应用程序启动方法、装置、终端及存储介质 |
CN108681473A (zh) * | 2018-05-18 | 2018-10-19 | 广州酷狗计算机科技有限公司 | 应用程序生成、运行方法、装置、计算机设备和存储介质 |
CN110297643B (zh) * | 2019-06-04 | 2024-01-30 | 平安科技(深圳)有限公司 | 应用程序注入动态库的方法、装置、设备及存储介质 |
CN112214250B (zh) * | 2019-06-24 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 一种应用程序组件的加载方法和装置 |
CN113391847A (zh) * | 2020-03-10 | 2021-09-14 | 北京沃东天骏信息技术有限公司 | 应用程序的启动优化方法和装置 |
CN112559982A (zh) * | 2020-12-25 | 2021-03-26 | 山东华芯半导体有限公司 | 一种应用程序的版权保护方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908119A (zh) * | 2010-08-12 | 2010-12-08 | 浙江中控软件技术有限公司 | 一种动态链接库dll文件的处理方法和装置 |
CN102819439A (zh) * | 2011-06-10 | 2012-12-12 | 中兴通讯股份有限公司 | 一种基于重定位的多制式应用程序的动态加载方法和装置 |
CN102999720A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 程序鉴别方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163185A1 (en) * | 2006-12-29 | 2008-07-03 | Rto Software, Inc. | Delay-load optimizer |
-
2013
- 2013-04-03 CN CN201310115475.0A patent/CN104102500B/zh active Active
- 2013-12-17 WO PCT/CN2013/089704 patent/WO2014161353A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908119A (zh) * | 2010-08-12 | 2010-12-08 | 浙江中控软件技术有限公司 | 一种动态链接库dll文件的处理方法和装置 |
CN102819439A (zh) * | 2011-06-10 | 2012-12-12 | 中兴通讯股份有限公司 | 一种基于重定位的多制式应用程序的动态加载方法和装置 |
CN102999720A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 程序鉴别方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2014161353A1 (en) | 2014-10-09 |
CN104102500A (zh) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102500B (zh) | 一种应用程序的进程启动方法及计算机系统 | |
CN108415739B (zh) | 一种动态链接库函数的钩挂方法、装置和存储介质 | |
KR101665835B1 (ko) | 전자장치, 배터리 보호방법, 장치, 프로그램 및 기록매체 | |
CN104077184B (zh) | 一种应用程序的进程控制方法及计算机系统 | |
CN104238893B (zh) | 一种对视频预览图片进行显示的方法和装置 | |
CN104850406B (zh) | 一种切换页面的方法和装置 | |
CN104104711B (zh) | 阅读历史处理方法和装置 | |
CN104965722B (zh) | 一种显示信息的方法及装置 | |
US20140304720A1 (en) | Method for starting process of application and computer system | |
CN105468258A (zh) | 一种屏幕界面的切换方法、装置和终端 | |
CN104519404A (zh) | 图像互换格式文件的播放方法及装置 | |
CN103179026B (zh) | 用户交互式系统中的通信方法、系统及服务器和客户端 | |
CN104869465A (zh) | 视频播放控制方法和装置 | |
CN104717341A (zh) | 一种消息提示方法及终端 | |
CN106919458B (zh) | Hook目标内核函数的方法及装置 | |
CN108595218A (zh) | 一种加载系统动态库的方法和装置 | |
CN104572046A (zh) | 一种堆栈还原方法和计算机系统 | |
CN107590397A (zh) | 一种显示内嵌网页的方法和装置 | |
CN105094501A (zh) | 一种移动终端中消息的显示方法、装置和系统 | |
CN105095161A (zh) | 一种显示富文本信息的方法及装置 | |
CN103823851B (zh) | 网页显示方法和装置 | |
CN106681884B (zh) | 一种系统调用的监控方法和装置 | |
CN106708555B (zh) | 一种加载插件的方法和装置 | |
CN105187944A (zh) | 一种显示状态栏的方法和装置 | |
CN104123210B (zh) | 测试浏览器性能的方法、设备和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |