自动创建独立进程的方法及其系统的制作方法

文档序号:6427480阅读:165来源:国知局

专利名称::自动创建独立进程的方法及其系统的制作方法
技术领域
:本发明涉及计算机领域,尤其涉及一种自动创建独立进程的方法及其系统。
背景技术
:PE(PortableExecutable,可移植的执行体)文件在Windows操作系统中可以认为是一个可执行程序。而对一个PE文件进行MD5(MessageDigestAlgorithm,消息摘要算法第五版)签名可以通过一个定长的字符串序列定义一个文件存在的唯一性。在现代操作系统中(以Windows操作系统为例),当一个PE文件在系统中被运行后,就会拥有一个父进程和O个或多个子进程。这样一个关系在系统的进程管理中,表现为一个链状结构的进程链,即父进程->被运行进程->(O或者多个子进程)。当一台计算机感染上木马或者病毒,其本质在计算机系统中就是一个进程(木马和病毒本身也是PE文件),而大部分的病毒的启动和执行过程,为了能够更好的掩饰病毒自身的存在,都会通过各种手段把自己隐藏起来。这样当一台系统中毒后,特别是感染木马这类传播性极强的小程序,在系统的进程中往往会出现如图I所示的进程链关系。目前已有的杀毒软件或者是系统防护软件,在运行过程中,都会对系统正在运行的进程进行监控。其中一种最基本的判断系统已经中毒的方式就是抓取系统的进程链,当发现系统中的某个正常的程序在运行时出现了图I所示的进程链,就很可能已经中了木马,这时防火墙软件可以通过计算整个进程链中的各个进程PE的MD5,通过云端返回每个进程的等级进行判断。例如一个正常的notepad,exe(记事本进程)的等级被定义为2(安全的),一个木马进程被定义为7(不安全的),这样对整个进程链中所有进程等级进行加权得到not印ad.exe的进程等级为7(取整个进程链中等级最大值),即可判断某个正在运行的程序已经感染上病毒。在Windows的软件自动测试中,需要自动测试木马防火墙对于常规软件安装卸载拦截行为的正确性,这样自动化测试程序就需要在程序中启动第三方的程序来执行各类常规软件的安装卸载工作,例如在系统预装了木马防火墙的环境下,自动安装&卸载0ffice2007这样的办公软件。由于第三方程序是自动化测试程序去启动的,一般情况下会选择2种方式I.在命令行窗口执行安装0ffice2007的命令行。2.在程序中通过微软提供的API创建新的进程。这样就会遇到一个问题,自动化程序启动的新的进程,当执行了安装包程序后,在系统的进程链中会看到如图2所示的进程链关系。这时,木马防火墙就会计算0ffice2007安装程序的进程等级,一般地一个0ffice2007安装程序的进程等级被定义为2,而由于在整个进程链中出现了自动化测试程序(等级为3)以及CMD(WindowsCommandPrompt,命令提示符窗口)进程(等级为4),这样防火墙得到的0ffice2007的安装程序的进程等级被调整为4,从而在自动化安装0ffice2007时会遇到木马防火墙拦截0ffice2007安装包的情况(正常情况下不应该拦截)。对于上述情况,自动化测试程序需要创建一种完全模拟用户行为的进程链关系,如图3所示。从而解决上述所说的在自动化测试中由于自动化测试程序创建新进程导致的木马防火墙误报情况,即一种完全模拟用户行为的方式。微软公司提供了几种创建新进程的方法I.CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。2.WinExec只能用于创建兼容16位系统进程、创建应用程序应该使用CreateProcess03.ShellExecute功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。4.System。用于执行一个命令行,等同于CMD下的命令行。5.WMI(WindowsManagementInstrumentation,Windows管理规范)的方式启动Win32_Process的对象中有一个Create方法,可以用以通过WMI服务的形式创建新进程。上述微软提供的几种API,都只能用于创建子进程即新创建的进程是创建者的子进程。I.WinExec、ShellExecute其本质也是执行CreateProcess,这里以CreateProcess为例,当执行程序创建一个新的进程时,出现如图4A所示的进程链关系。2.通过System这个API创建出来的进程会获得如图4B所示的进程链关系。3.通过丽I方式启动的进程,其进程链关系为如图4C所示。综上,通过上述现有的方法无法真正模拟一个用户行为的场景。目前还存在另外一种方式去创建一个父进程是explorer,exe的新的进程,即通过Windows窗口界面的开始->运行方式,或者通过模拟快捷键win+R,启动运行窗口,在打开的窗口下模拟输入需要启动的程序路径,模拟点击确定按钮即可,其流程大致为I.模拟快捷键win+R调出运行窗口;2.查找输入框的句柄;3.模拟键盘输入,将需要启动的程序路径输入;4.模拟鼠标点击“确定”按钮,启动新的进程。可以看到运行中的“确定”按钮成为不可点击状态,会出现这样的原因在于I.初始状态下打开输入框为空的情况,程序通过给输入框发送系统消息WM_SETTEXT设置文本,但是此时的确定按钮无法激活。2.另一种方式通过系统APIkeybd_event模拟键盘敲击输入需要打开的程序路径,但是这样的方式有个致命的缺点,即整个启动路径的字符串,例如c\windows\notepad,exe会有可能变得很长,每次用keybd_event模拟键盘输入一个字符时,都需要让输入框一直保持在置顶并且输入焦点在输入框内,这个中间极容易收到外部干扰导致输入路径无效(例如某些程序在右下角自动弹出的广告框等不可控行为),整个创建进程的过程无法完全保证。3.如果通过浏览按钮去模拟用户点击查找需要启动的程序路径,这种方式也会存在一个缺点,即启动的程序不能支持带参数的路径,例如office2003卸载的命令行msiexec/I{90110804-6000-11D3-8CFE-0150048383C9}。综上所述,可知在自动化测试中由于自动化测试程序创建新进程导致的木马防火墙误报的问题,尚未提出有效地解决方案。
发明内容有鉴于自动化测试中由于自动化测试程序创建新进程导致的木马防火墙误报的问题而做出本发明,为此本发明的主要目的在于提供一种自动创建独立进程的方法及其系统,其中本发明实施例提供的自动创建独立进程的方法包括确定待创建独立进程的源文件,待创建的独立进程的载体为与源文件相对应的可执行文件或其所释放的可执行文件;在预设窗口创建与源文件相对应的快捷方式图标;在预设窗口获取快捷方式图标的坐标;根据获取的坐标模拟点击快捷方式图标。本发明实施例提供的自动创建独立进程的系统包括图标创建模块,用于根据确定的待创建独立进程的源文件,在预设窗口创建与源文件相对应的快捷方式图标,其中待创建的独立进程的载体为与源文件相对应的可执行文件;坐标获取模块,用于在预设窗口获取快捷方式图标的坐标;模拟点击模块,用于根据获取的坐标模拟点击快捷方式图标。综上所示,根据本发明上述技术方案,通过查找桌面图标,模拟鼠标点击的方式,完成新进程的创建,同时返回新创建进程的标识,在系统中存在各类杀毒软件时,通过将Windows下的软件自动化测试100%的模拟用户行为,可以自动创建独立进程,当应用于自动化测试时,能够真正地保证自动化测试结果的真实可信,可广泛应用于各类软件的自动化执行流程。此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I是现有技术中的木马运行的进程链示意图;图2是现有技术中的执行自动化程序的进程链示意图;图3是现有技术中的完全模拟用户行为的进程链示意图;图4A-4C是现有技术中的解决方案的进程链示意图;图5是根据本发明实施例的自动创建独立进程的方法的流程图;图6是根据本发明实施例的自动创建独立进程的方法的优选处理方案的流程图;图7是根据本发明实施例的超时判定返回结果的流程图;图8是根据本发明实施例的自动创建独立进程的系统的结构框图;图9是根据本发明实施例的判断模块的结构框图。具体实施例方式本发明提供了一份完备的面向自动化测试过程中完全模拟用户场景的通用解决方案。本发明通过在木马防火墙自动化测试程序中,真正完全模拟用户行为的方式,保证自动化测试结果的真实可信。为使本发明的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本发明作进一步地详细说明。根据本发明的实施例,提供了一种自动创建独立进程的方法。图5是根据本发明实施例的自动创建独立进程的方法的流程图,如图5所示,该方法包括步骤502,确定待创建独立进程的源文件,待创建的独立进程的载体为与源文件相对应的可执行文件或其所释放的可执行文件。首先,需要确定需要执行的独立进程的源文件,该独立进程为PE文件进程。该源文件为自动化测试过程中的测试对象,或者测试对象的处理对象。例如在进行自动化测试时,测试对象是防火墙软件,防火墙软件的处理对象就是一般的常规软件。步骤504,在预设窗口创建与源文件相对应的快捷方式图标。需要说明,本发明对于创建与源文件相对应的快捷方式图标的位置不进行限制,可以是系统桌面或者预设的文件夹。另外,创建图标的方式可以是使用数据文件、输入设备进行自动方式创建,或使用手动方式进行创建。步骤506,在预设窗口获取快捷方式图标的坐标。具体地,通过向预设窗口的控件发送系统消息获取快捷方式图标的坐标。当预设窗口为系统桌面时,向系统桌面的控件发送系统消息获取创建于系统桌面的快捷方式图标;当预设窗口为预设的文件夹时,向预设的文件夹的控件发送系统消息获取创建于预设的文件夹的快捷方式图标。下面以预设窗口为系统桌面为例,描述获取快捷方式图标的坐标的具体过程。需要说明的是,在Windows操作系统平台(例如xp、vista、win7)等各种系统,由于时代发展,导致系统文件夹的视窗控件发生了很大的改变,例如在XP下,文件夹的控件为SysListView32,进化到win7下系统文件夹的控件变成了DirectnHWND。DirectHHWND是win7新提供的视窗技术,其内部显示例如test2.txt是被直接绘制到显示器上,不再接收任何的系统消息。也就是说,目前微软公司所有的视窗操作系统的桌面控件都是SysListView32,因此可以根据SysListView32定位桌面任意图标的坐标。SysListView32是微软的一个基础控件,内部有大量的可接受消息,可以通过发送系统消息LVM_GETITEMTEXT获取到控件中图标的坐标位置,具体包括以下步骤(I)首先查找系统中父窗口ClassName为'ProgramManager|Workerff;,子窗口ClassName为'FolderView'的句柄,此为explorer,exe的窗口句柄;(2)通过explorer,exe的窗口句柄调用GetWindowThreadProcessId,获得explorer,exe的PID(ProcessID,进程标识);(3)通过explorer,exe的PID调用OpenProcess,打开explorer,exe进程对象,并返回进程的句柄;(4)通过explorer,exe的进程句柄调用VirtualAllocEx在进程中分配一块内存空间用于接收系统消息的返回;(5)向explorer,exe的进程句柄发送消息LVM_GETITEMC0UNT,获得进程中图标的总数;(6)遍历各个ID的LVM_GETITEMTEXT,得到桌面图标的显示文字名称;(7)对比桌面图标的显示文字名称,通过消息LVM_GETITEMP0SITI0N,获得我们需要的图标坐标;(8)返回坐标(pos)。需要说明,上述过程描述的是预设窗口为系统桌面情况下的获取快捷方式图标的坐标的过程,而预设窗口为预设的文件夹的情况与上述过程类似,此处不赘述。步骤508,根据获取的坐标模拟点击快捷方式图标。根据步骤506中获取的快捷方式图标的坐标位置,模拟点击该快捷方式图标,与源文件对应的可执行文件或其所释放的可执行文件被启动执行。在实际应用时,可以使用系统消息发送mouse_event来启动快捷方式对应的源文件。另外,在模拟点击快捷方式图标之前,还需要将预设窗口置顶显示,也就是将其他的所有窗口最小化,以防止阻挡系统桌面。当然,若预设窗口已经置顶显示,则不需要执行此一步骤。下面以预设窗口是系统桌面为例说明预设窗口置顶显示的过程。为了兼容所有的Windows系统,需要针对不同的windows系统进行分析。对于Win7系统,首先需要查找系统右下角窗口句柄(系统中最小化窗口按钮),具体包括I.首先查找窗口ClassName为“Shell_TrayWnd”同时子窗口ClassName为“TrayShowDesktopButtonWClass”(即桌面右下角最小化按钮),则说明是win7系统。2.模拟系统快捷键win+D,通过GetForegroundWindow获取当前顶层句柄,如果此时的句柄ClassName为“WorkerW”,则认为系统桌面已经被显示,否则继续等待直到5秒超时,如果遇到超时,直接点击系统桌面右下角的显示系统桌面按钮完成显示系统桌面操作。对于xp或者Vista系统,显示系统桌面可以通过直接执行system(ToggleDesktop.scf)来完成,其中ToggleDesktop.scf为显不系统桌面的脚本。由于system执行时为阻塞模式,xp或者vista系统下可以非常安全的完成显示系统桌面操作。预设窗口为预设的文件夹,则在进行上述处理之后,点击该预设的文件夹,就可以实现预设的文件夹置顶显示。通过本发明的上述实施例,在自动化执行过程中,能够完全模拟用户行为,保证自动化执行结果真实可信。参考图6,在步骤508之后,本发明实施例的自动创建独立进程的方法还包括步骤510,判断与源文件相对应的独立进程是否已经被创建。首先,根据源文件,确定与源文件相对应的待创建的独立进程的预计启动路径。具体地,在本地或服务器的数据库中查找与源文件对应的进程执行路径,并将该源文件对应的进程执行路径作为预计启动路径保存。然后,获取在模拟点击快捷方式图标后的预设时间内新创建的进程的实际执行路径。最后,根据比较预计启动路径与实际执行路径是否一致,来判断待创建进程是否被创建。此外,还可以根据预设时间内是否存在新建进程标识判断进程是否被创建。下面结合图7详细描述上述处理的过程。参考图7,记录当前系统时间nowtime(精确到微秒),并设定一时间(例如5秒),在这5秒内每隔300毫秒,通过丽I对象获取系统中进程的进程路径名称(Name)属性以及父进程PID(ParentProcessId),当系统中存在一个进程PID,该进程创建时间(CreationDate)晚于nowtime,并且该进程与配置的进程路径的进程相同,或者该进程不存在父进程,则判断该进程启动成功,并返回该进程的进程标识(PID);若程序自身存在问题,系统提示错误框,则表示有异常,清理该错误框,并返回-I;若因程序本身问题,在5秒内未启动成功,则判定系统超时,返回O。上述实施例详细描述了与源文件相对应的独立进程是否被创建的判断过程。系统实施例根据本发明的实施例,还提供了一种自动创建独立进程的系统。图8是根据本发明实施例的自动创建独立进程的系统的框图,如图8所示,该系统包括图标创建模块81,坐标获取模块82,模拟点击模块83,置顶模块84,判断模块85。其中,图标创建模块81用于根据确定的待创建独立进程的源文件,在预设窗口创建与源文件相对应的快捷方式图标,其中待创建的独立进程的载体为与源文件相对应的可执行文件。该源文件为自动化测试过程中的测试对象,或测试对象的处理对象。并且,预设窗口包括系统桌面或预设的文件夹。坐标获取模块82与图标创建模块81连接,用于在预设窗口获取快捷方式图标的坐标。坐标获取模块,通过向预设窗口的控件发送系统消息获取快捷方式图标的坐标。模拟点击模块83与坐标获取模块82连接,用于根据获取的坐标模拟点击快捷方式图标。置顶模块84分别与坐标获取模块82和模拟点击模块83连接,用于在模拟点击快捷方式图标之前,将预设窗口置顶显示。判断模块85与模拟点击模块83连接,用于在模拟点击快捷方式图标之后,判断与源文件相对应的独立进程是否已经被创建。参考图9,判断模块85具体包括配置单元851,获取单元852和比较单元853。配置单元851用于根据源文件,确定与源文件相对应的待创建的独立进程的预计启动路径。在具体应用中,配置单元851在本地或服务器的数据库中查找与源文件对应的进程执行路径,并将该源文件对应的进程执行路径作为预计启动路径保存。获取单元852用于获取在模拟点击快捷方式图标后的预设时间内新创建的进程的实际执行路径。比较单元853用于根据比较预计启动路径与实际执行路径是否一致,来判断待创建进程是否被创建。此外,判断模块85还可以根据预设时间内是否存在新建进程标识判断进程是否被创建。在实际应用中,本发明提供的自动创建独立进程的系统的具体操作过程可以参考图5至图7所示的流程,此处不赘述。综上所示,根据本发明上述技术方案,在系统中存在各类杀毒软件或者防火墙软件的情况下,通过将Windows下的软件自动化测试100%的模拟用户行为,能够真正地保证自动化测试结果的真实可信。可广泛用于各类软件的自动化执行流程中,确保完全用户行为的模拟。以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。权利要求1.一种自动创建独立进程的方法,其特征在于,包括如下步骤确定待创建独立进程的源文件,所述待创建的独立进程的载体为与所述源文件相对应的可执行文件或其所释放的可执行文件;在预设窗口创建与源文件相对应的快捷方式图标;在预设窗口获取所述快捷方式图标的坐标;根据获取的所述坐标模拟点击所述快捷方式图标。2.如权利要求I所述的方法,其特征在于,所述预设窗口,包括系统桌面或预设的文件夹。3.如权利要求I所述的方法,其特征在于,所述获取快捷方式图标的坐标的步骤,包括通过向所述预设窗口的控件发送系统消息获取所述快捷方式图标的坐标。4.如权利要求I所述的方法,其特征在于,所述模拟点击快捷方式图标步骤之前,进一步包括将所述预设窗口置顶显示。5.如权利要求I所述的方法,其特征在于,所述模拟点击快捷方式图标步骤之后,进一步包括判断与所述源文件相对应的独立进程是否已经被创建。6.如权利要求5所述的方法,其特征在于,所述判断步骤,包括根据所述源文件,确定与所述源文件相对应的待创建的独立进程的预计启动路径;获取在所述模拟点击快捷方式图标后的预设时间内新创建的进程的实际执行路径;根据比较所述预计启动路径与所述实际执行路径是否一致,来判断所述待创建进程是否被创建。7.如权利要求6所述的方法,其特征在于,所述确定与源文件相对应的待创建的独立进程的预计启动路径的步骤,包括在本地或服务器的数据库中查找与源文件对应的进程执行路径,并将该源文件对应的进程执行路径作为预计启动路径保存。8.如权利要求5所述的方法,其特征在于,所述判断步骤,包括根据预设时间内是否存在新建进程标识判断所述进程是否被创建。9.如权利要求I所述的方法,其特征在于,所述源文件,为自动化测试过程中的测试对象,或所述测试对象的处理对象。10.一种自动创建独立进程的系统,其特征在于,包括图标创建模块,用于根据确定的待创建独立进程的源文件,在预设窗口创建与源文件相对应的快捷方式图标,其中所述待创建的独立进程的载体为与所述源文件相对应的可执行文件;坐标获取模块,用于在预设窗口获取所述快捷方式图标的坐标;模拟点击模块,用于根据获取的所述坐标模拟点击所述快捷方式图标。11.如权利要求10所述的系统,其特征在于,所述预设窗口,包括系统桌面或预设的文件夹。12.如权利要求10所述的系统,其特征在,所述坐标获取模块,通过向所述预设窗口的控件发送系统消息获取所述快捷方式图标的坐标。13.如权利要求10所述的系统,其特征在,进一步包括置顶模块,用于在模拟点击快捷方式图标之前,将所述预设窗口置顶显示。14.如权利要求10所述的系统,其特征在于,进一步包括判断模块,用于在模拟点击快捷方式图标之后,判断与所述源文件相对应的独立进程是否已经被创建。15.如权利要求14所述的系统,其特征在于,所述判断模块,包括配置单元,用于根据所述源文件,确定与所述源文件相对应的待创建的独立进程的预计启动路径;获取单元,用于获取在所述模拟点击快捷方式图标后的预设时间内新创建的进程的实际执行路径;比较单元,用于根据比较所述预计启动路径与所述实际执行路径是否一致,来判断所述待创建进程是否被创建。16.如权利要求15所述的系统,其特征在于,所述配置单元,在本地或服务器的数据库中查找与源文件对应的进程执行路径,并将该源文件对应的进程执行路径作为预计启动路径保存。17.如权利要求14所述的系统,其特征在于,所述判断模块,根据预设时间内是否存在新建进程标识判断所述进程是否被创建。18.如权利要求10所述的系统,其特征在于,所述源文件,为自动化测试过程中的测试对象,或所述测试对象的处理对象。全文摘要本发明公开了一种自动创建独立进程的方法及其系统,其中,该方法包括确定待创建独立进程的源文件,待创建的独立进程的载体为与源文件相对应的可执行文件或其所释放的可执行文件;在预设窗口创建与源文件相对应的快捷方式图标;在预设窗口获取快捷方式图标的坐标;根据获取的坐标模拟点击快捷方式图标。本发明通过完全的用户行为模拟,可以自动创建独立进程,当应用于自动化测试时,能够真正地保证自动化测试结果的真实可信,可广泛应用于各类软件的自动化执行流程。文档编号G06F11/36GK102855129SQ20111017921公开日2013年1月2日申请日期2011年6月29日优先权日2011年6月29日发明者张杰,金京申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1