一种应用程序的进程控制方法及计算机系统的制作方法

文档序号:6501091阅读:208来源:国知局
一种应用程序的进程控制方法及计算机系统的制作方法
【专利摘要】本发明实施例公开了应用程序的进程控制方法及计算机系统,应用于计算机【技术领域】。计算机系统中的驱动模块在控制第一应用程序的进程时,可以先确定该第一应用程序的进程所在的内存空间,并将第二应用程序的代码注入到该内存空间中,然后再触发计算机系统中的第一应用模块执行注入代码后的第一应用程序的进程。由于驱动模块的调用权限比较高,就不会出现由于权限不够而导致的代码注入失败的问题,又由于驱动模块操作的安全性是由驱动模块本身决定的,则该代码注入的操作不会被认为是危险操作而被拦截。因此,本发明实施例的方法能有效地将代码注入到应用程序的进程中,实现了应用程序的进程控制。
【专利说明】一种应用程序的进程控制方法及计算机系统

【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及应用程序的进程控制方法及计算机系统。

【背景技术】
[0002]计算机系统中包括底层的驱动模块和上层的多个应用模块,其中,驱动模块工作的系统的内核层,可以调用的应用程序编程接口(Applicat1nProgramming Interface,API)属于底层接口,调用权限大;每个应用模块可以按照对应内存空间中的代码来执行应用程序的进程。
[0003]如果某个应用模块想要控制另一应用模块执行的应用程序的进程,则该应用模块会将该应用模块对应内存空间中的代码注入到另一应用程序的进程中,由另一应用模块来执行,从而实现了应用程序的进程控制,但是在具体实现过程中,会出现各种问题而导致代码注入失败,比如应用模块的权限不够,或注入代码的操作可能被认为是危险操作而被拦截等。


【发明内容】

[0004]本发明实施例提供应用程序的进程控制方法及计算机系统,有效地将代码注入到应用程序的进程中,实现了应用程序的进程控制。
[0005]本发明实施例提供一种应用程序的进程控制方法,应用于包括驱动模块和多个应用模块的计算机系统中,包括:
[0006]所述驱动模块确定运行的第一应用程序的进程所在内存空间;
[0007]所述驱动模块将第二应用程序的代码注入到所述第一应用程序的进程所在内存空间中;
[0008]所述驱动模块触发所述多个应用模块中的第一应用模块执行所述注入代码的第一应用程序的进程。
[0009]本发明实施例中还提供一种计算机系统,包括:驱动模块和多个应用模块,所述驱动模块包括:
[0010]内存确定单元,用于确定运行的第一应用程序的进程所在内存空间;
[0011]代码注入单元,用于将第二应用程序的代码注入到所述第一应用程序的进程所在内存空间中;
[0012]触发单元,用于触发所述多个应用模块中的第一应用模块执行所述注入代码的第一应用程序的进程;
[0013]所述多个应用模块中的第一应用模块,用于执行所述注入代码的第一应用程序的进程。
[0014]可见,计算机系统中的驱动模块在控制第一应用程序的进程时,可以先确定该第一应用程序的进程所在的内存空间,并将第二应用程序的代码注入到该内存空间中,然后再触发计算机系统中的第一应用模块执行注入代码后的第一应用程序的进程。由于驱动模块的调用权限比较高,就不会出现由于权限不够而导致的代码注入失败的问题,又由于驱动模块操作的安全性是由驱动模块本身决定的,则该代码注入的操作不会被认为是危险操作而被拦截。因此,本发明实施例的方法能有效地将代码注入到应用程序的进程中,实现了应用程序的进程控制。

【专利附图】

【附图说明】
[0015]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0016]图1是本发明实施例提供的一种应用程序的进程控制方法流程图;
[0017]图2是本发明具体应用实施例提供的一种应用程序的进程控制方法流程图;
[0018]图3是本发明实施例提供的一种计算机系统的结构示意图;
[0019]图4是本发明实施例提供的另一种计算机系统的结构示意图;
[0020]图5是本发明实施例中将应用程序的进程控制方法应用于的终端的结构示意图。

【具体实施方式】
[0021]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022]本发明实施例提供一种应用程序的进程控制方法,主要应用于包括驱动模块、存储模块和多个应用模块的计算机系统中,每个应用模块可以按照自己对应内存空间中的代码执行相应应用程序的进程,本实施例的方法是该计算机系统针对正在运行的应用程序的进程所执行的方法,流程如图1所示,包括:
[0023]步骤101,计算机系统中的驱动模块确定正在运行的第一应用程序的进程所在内存空间,每个应用模块只能执行各自内存空间中的应用程序的代码,如果需要控制某个应用程序(比如第一应用程序)的进程,比如控制在音乐播放的进程中执行另一个应用程序的进程(比如启动另一个应用程序),则驱动模块需要确定该应用程序的进程所在的内存空间。其中,应用程序的进程就是一个活跃着的应用程序,即驱动模块已经将应用程序的代码放到对应的内存空间中,占有了一定的系统资源的应用程序,一个应用程序在没有被调用到内存空间之前叫做为程序,被调用并得到了资源后就可以称为进程,一个进程中可以由许多线程组成。每个应用程序对应的内存空间为存储模块中储存该应用程序的代码的空间,每个应用程序对应存储模块中的一段空间。
[0024]具体地,驱动模块可以调用进程附加函数,即KeAttachP1cess函数,附加到第一应用程序的进程所在的内存空间中,得知该第一应用程序的进程对应的进程上下文,即执行第一应用程序的进程所包括的各个函数之间的关系,然后驱动模块可以决定将第二应用程序的代码注入到第一应用程序的哪一段进程中。
[0025]步骤102,驱动模块将第二应用程序的代码注入到第一应用程序的进程所在内存空间中,具体地,驱动模块会为第二应用程序的代码分配步骤101中确定的第一应用程序的进程的内存空间中的内存子空间,即该第一应用程序对应存储模块的一段空间中的部分空间为内存子空间,并将第二应用程序的代码储存到分配的内存子空间中。这里内存子空间需要包括在第一应用程序的进程的内存空间中,这样,执行第一应用程序的进程的第一应用模块才能执行该内存子空间中的代码。在执行完本步骤后,驱动模块可以调用进程反附加函数,即KeDetachProcess函数,从第一应用程序的进程所在内存空间中切出。
[0026]其中注入到内存子空间中的代码是原生态代码,该原生态代码中的函数都是通过寻址直接调用,而不能调用API接口。
[0027]步骤103,驱动模块触发多个应用模块中的第一应用模块执行注入代码的第一应用程序的进程。
[0028]由于第一应用模块正执行第一应用程序的进程,为了使得第一应用模块能执行步骤102中注入的代码,则需要驱动模块来触发,具体地,驱动模块可以将延时过程调用(asynchronous procedure call, APC)函数或hook函数插入到第一应用程序的某一活动线程中,其中每个应用程序的进程可以包括多个执行流程即活动线程。这样当第一应用模块在执行该活动线程时,根据APC函数和hook函数就可以调用内存子空间中的代码,并执行代码。
[0029]例如,某一应用程序的进程包括A、B和C活动线程,驱动模块将APC函数或hook函数插入到B活动线程,则第一应用模块在执行B活动线程的同时,执行注入的第二应用程序的代码。
[0030]需要说明的是,上述第一应用程序和第二应用程序并不表示顺序关系,而是为了区别不同的应用程序。
[0031]可见,计算机系统中的驱动模块在控制第一应用程序的进程时,可以先确定该第一应用程序的进程所在的内存空间,并将第二应用程序的代码注入到该内存空间中,然后再触发计算机系统中的第一应用模块执行注入代码后的第一应用程序的进程。由于驱动模块的调用权限比较高,就不会出现由于权限不够而导致的代码注入失败的问题,又由于驱动模块操作的安全性是由驱动模块本身决定的,则该代码注入的操作不会被认为是危险操作而被拦截。因此,本发明实施例的方法能有效地将代码注入到应用程序的进程中,实现了应用程序的进程控制。
[0032]以下以一个具体的实施例来说明本实施例的方法,其中一种具体的实施例中,如果用户想要在计算机上实现某些功能,但是由于使用者账户的控制(User AccountControl,UAC)可能导致计算机不能启动并执行这些没有较高权限的功能,这样就可以通过本发明实施例的方法来实现。在另一种情况下,如果用户想要在某个应用程序中实现一些附加的功能,比如需要在浏览器中实现对于网页中实现用户账户的保护或读取一个文件等功能,也可以通过本发明实施例的方法来实现。
[0033]具体地,用户将这些想要实现的功能的程序即上述第二应用程序的代码预置到计算机的驱动模块中,这样驱动模块就可以通过如下的方法,通过对计算机中的应用模块当前正执行的第一应用程序(一般为服务程序)的进程控制,使得应用模块在执行该第一应用程序的进程过程中,实现这些功能。流程图如图2所示:
[0034]步骤201,计算机的驱动模块调用进程附加函数,即KeAttachP1cess函数,附加到第一应用程序的进程所在的内存空间中,得知该第一应用程序的进程对应的进程上下文。
[0035]步骤202,驱动模块会根据第一应用程序的进程上下文,决定将第二应用程序的代码注入到第一应用程序的哪一段进程中,并编写注入第二应用程序代码操作的代码。
[0036]具体地,驱动模块会先获取第二应用程序的原生态代码,并获取该原生态代码中各个函数的地址,将获取的数据映射到当前第一应用程序的进程所在的内存空间的内存子空间中;然后驱动模块将第一应用程序的进程进行分离,使得第二应用程序的代码可以插入;最后驱动模块创建注入第二应用程序代码操作的事件对象及用于触发执行第二应用程序的函数调用对象。
[0037]步骤203,驱动模块通过调用编写的代码,将第二应用程序的代码注入到第一应用程序的某一段对应的进程中。
[0038]步骤204,由执行第一应用程序的进程的第一应用模块来执行该第二应用程序,从而实现了上述用户想要实现的功能。
[0039]本发明实施例还提供一种计算机系统,结构示意图如图3所示,包括驱动模块10、存储模块30和多个应用模块(图中画出η个应用模块),其中驱动模块10包括:
[0040]内存确定单元11,用于确定确定运行的第一应用程序的进程所在内存空间,该内存确定单元11具体可以调用进程附加函数来实现内存空间的查找。
[0041]代码注入单元12,用于将第二应用程序的代码注入到所述内存确定单元11确定的第一应用程序的进程所在内存空间中。
[0042]其中内存空间是计算机系统中存储模块30中储存第一应用程序代码的存储空间。
[0043]触发单元13,用于触发所述多个应用模块中的第一应用模块执行所述代码注入单元12注入代码的第一应用程序的进程,触发单元13具体地可以将延时过程调用函数或hook函数插入到第一应用程序的某一活动线程中。
[0044]而每个应用模块都会根据对应的内存空间中的代码来执行应用程序的进程,其中第一应用模块20,用于在触发单元13的触发下,执行所述注入代码的第一应用程序的进程,如果触发单元12将APC函数或hook函数插入到某一活动线程中,则第一应用模块20会在执行该活动线程时执行第二应用程序的进程。
[0045]本发明实施例的计算机系统的驱动模块10在控制第一应用程序的进程时,内存确定单元11先确定该第一应用程序的进程所在的内存空间,代码注入单元12将第二应用程序的代码注入到该内存空间中,然后触发单元13再触发计算机系统中的第一应用模块20执行注入代码后的第一应用程序的进程。由于驱动模块的调用权限比较高,就不会出现由于权限不够而导致的代码注入失败的问题,又由于驱动模块操作的安全性是由驱动模块本身决定的,则该代码注入的操作不会被认为是危险操作而被拦截。因此,本发明实施例的计算机系统能有效地将代码注入到应用程序的进程中,实现了应用程序的进程控制。
[0046]参考如图4所示,在一个具体的实施例中,计算机系统的驱动模块中的代码注入单元12具体可以通过分配单元120和注入单元121来实现,具体地:
[0047]分配单元120,用于为所述第二应用程序的代码分配所述第一应用程序的进程的内存空间中的内存子空间;
[0048]注入单元121,用于将所述第二应用程序的代码储存到分配的所述内存子空间中。
[0049]本发明实施例中,当内存确定单元11确定第一应用程序的进程所在内存空间后;由代码注入单元12中的分配单元120在该内存空间中为第二应用程序的代码分配内存子空间,并由注入单元121将第二应用程序的代码储存到分配单元120分配的内存子空间中,从而实现了代码的注入;最后由触发单元13来触发第一应用模块20执行注入单元121注入的内存子空间中的第二应用程序的进程。
[0050]以下主要以本发明实施例的应用程序的进程控制方法应用于终端中来举例说明,该终端可以包括智能手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3 (Moving Picture Experts Group Aud1 Layer III, MP3)播放器、动态影像专家压缩标准音频层面 4 (Moving Picture Experts GroupAud1 Layer IV, MP4)播放器、膝上型便携计算机和台式计算机等等。
[0051]请参考图5,其示出了本发明实施例所涉及的终端的结构示意图,具体来讲:
[0052]终端可以包括射频(Rad1 Frequency, RF)电路20、包括有一个或一个以上计算机可读存储介质的存储器21、输入单元22、显示单元23、传感器24、音频电路25、无线保真(wireless fidelity,WiFi)模块26、包括有一个或者一个以上处理核心的处理器27、以及电源28等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0053]RF电路20可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器27处理;另外,将涉及上行的数据发送给基站。通常,RF电路20包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路20还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global Systemof Mobilecommunicat1n, GSM)、通用分组无线服务(General Packet Rad1Service, GPRS)、码分多址(Code Divis1n Multiple Access, CDMA)、宽带码分多址(Wideband Code Divis1nMultiple Access, WCDMA)、长期演进(Long Term Evolut1n, LTE)、电子邮件、短消息服务(Short Messaging Service, SMS)等。
[0054]存储器21可用于存储软件程序以及模块,处理器27通过运行存储在存储器21的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器21还可以包括存储器控制器,以提供处理器27和输入单元22对存储器21的访问。
[0055]输入单元22可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元22可包括触敏表面221以及其他输入设备222。触敏表面221,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面221上或在触敏表面221附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面221可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器27,并能接收处理器27发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面221。除了触敏表面221,输入单元22还可以包括其他输入设备222。具体地,其他输入设备222可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0056]显示单元23可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元23可包括显示面板231,可选的,可以采用液晶显示器(Liquid Crystal Display,IXD)、有机发光二极管(OrganicLight-Emitting D1de, 0LED)等形式来配置显示面板
231。进一步的,触敏表面221可覆盖显示面板231,当触敏表面221检测到在其上或附近的触摸操作后,传送给处理器27以确定触摸事件的类型,随后处理器27根据触摸事件的类型在显示面板231上提供相应的视觉输出。虽然在图5中,触敏表面221与显示面板231是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面221与显示面板231集成而实现输入和输出功能。
[0057]终端还可包括至少一种传感器24,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板231的亮度,接近传感器可在终端移动到耳边时,关闭显示面板231和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0058]音频电路25、扬声器251,传声器252可提供用户与终端之间的音频接口。音频电路25可将接收到的音频数据转换后的电信号,传输到扬声器251,由扬声器251转换为声音信号输出;另一方面,传声器252将收集的声音信号转换为电信号,由音频电路25接收后转换为音频数据,再将音频数据输出处理器27处理后,经RF电路20以发送给比如另一终端,或者将音频数据输出至存储器21以便进一步处理。音频电路25还可能包括耳塞插孔,以提供外设耳机与终端的通信。
[0059]WiFi属于短距离无线传输技术,终端通过WiFi模块26可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块26,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0060]处理器27是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器21内的软件程序和/或模块,以及调用存储在存储器21内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器27可包括一个或多个处理核心;优选的,处理器27可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器27中。
[0061]终端还包括给各个部件供电的电源28(比如电池),优选的,电源可以通过电源管理系统与处理器27逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源28还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0062]尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器27会按照如下的指令,将一个或一个以上的应用程序的代码储存到存储器21中,并由处理器27来运行存储在存储器21中的应用程序,从而实现各种功能:
[0063]确定运行的第一应用程序的进程所在内存空间,具体地,可以调用进程附加函数;
[0064]将第二应用程序的代码注入到第一应用程序的进程所在内存空间中,具体地,先为第二应用程序的代码分配第一应用程序的进程的内存空间中的内存子空间,并将第二应用程序的代码储存到分配的内存子空间中;
[0065]触发多个应用模块中的第一应用模块执行注入代码的第一应用程序的进程,具体可以将延时过程调用函数或hook函数插入到第一应用程序的某一活动线程中。
[0066]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
[0067]以上对本发明实施例所提供的应用程序的进程控制方法及计算机系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种应用程序的进程控制方法,其特征在于,应用于包括驱动模块和多个应用模块的计算机系统中,包括: 所述驱动模块确定运行的第一应用程序的进程所在内存空间; 所述驱动模块将第二应用程序的代码注入到所述第一应用程序的进程所在内存空间中; 所述驱动模块触发所述多个应用模块中的第一应用模块执行所述注入代码的第一应用程序的进程。
2.如权利要求1所述的方法,其特征在于,所述驱动模块确定运行的第一应用程序的进程所在内存空间,具体包括: 所述驱动模块调用进程附加函数。
3.如权利要求1或2所述的方法,其特征在于,所述驱动模块将第二应用程序的代码注入到所述第一应用程序的进程所在内存空间中,具体包括: 为所述第二应用程序的代码分配所述第一应用程序的进程的内存空间中的内存子空间; 将所述第二应用程序的代码储存到分配的所述内存子空间中。
4.如权利要求1或2所述的方法,其特征在于,所述驱动模块触发所述多个应用模块中的第一应用模块执行所述注入代码的第一应用程序的进程,具体包括: 所述驱动模块将延时过程调用函数或hook函数插入到所述第一应用程序的某一活动线程中。
5.一种计算机系统,其特征在于,包括:驱动模块、存储模块和多个应用模块,所述驱动模块包括: 内存确定单元,用于确定运行的第一应用程序的进程所在内存空间; 代码注入单元,用于将第二应用程序的代码注入到所述第一应用程序的进程所在内存空间中; 触发单元,用于触发所述多个应用模块中的第一应用模块执行所述注入代码的第一应用程序的进程; 所述多个应用模块中的第一应用模块,用于执行所述注入代码的第一应用程序的进程。
6.如权利要求5所述的计算机系统,其特征在于,所述内存确定单元具体用于调用进程附加函数。
7.如权利要求5或6所述的计算机系统,其特征在于,所述代码注入单元,具体包括: 分配单元,用于为所述第二应用程序的代码分配所述第一应用程序的进程的内存空间中的内存子空间; 注入单元,用于将所述第二应用程序的代码储存到分配的所述内存子空间中。
8.如权利要求5或6所述的计算机系统,其特征在于,所述触发单元,具体用于将延时过程调用函数或hook函数插入到所述第一应用程序的某一活动线程中。
【文档编号】G06F9/48GK104077184SQ201310098004
【公开日】2014年10月1日 申请日期:2013年3月25日 优先权日:2013年3月25日
【发明者】俞骁 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1