一种基于进程间继承关系的爪哇程序进程守护方法技术

技术编号:6071689 阅读:446 留言:0更新日期:2012-04-11 18:40
基于进程间继承关系的爪哇程序进程守护方法是一种在windows系统(一种操作系统的名称)中,针对爪哇程序(使用爪哇编程语言开发的程序,以下称java程序)进行守护的方法。主要用来解决被守护的java程序进程的鉴别和确定,并对该java程序的运行状态进行监控,防止其意外终止运行,该方法在被守护的爪哇程序进程与守护程序进程之间建立一种父子继承关系,并基于这种继承关系由守护程序进程来唯一确定被守护的爪哇程序进程;基于被守护的爪哇程序进程的内核对象状态确定被守护的爪哇程序的运行状态。

Process protection method for Java program based on inter process inheritance relationship

Based on the inheritance relationship between processes of Java program is a guardian of the process method in the windows system (the name of an operating system), according to the Java program (using the Java programming language development program, hereinafter referred to Java) guardian method. Mainly used to identify solutions to be guardian of the Java program process and determined, and the running state of the Java program to monitor, prevent accidental termination, the method of establishing a guardian between father and son in the Java program process and daemon process of inheritance, and based on the inheritance relationship by the daemon process only is the guardian of the Java program to determine the process; running state is determined by the guardian of the guardian kernel object state of Java program process based on Java program.

【技术实现步骤摘要】
本专利技术是一种在windows系统(一种操作系统的名称)中,针对爪哇程序(使用爪 哇编程语言开发的程序,以下称java程序)进行守护的方法。主要用来解决被守护的java 程序进程的鉴别和确定,并对该java程序的运行状态进行监控,防止其意外终止运行,属 于计算软件安全

技术介绍
在windows下运行的一个应用程序可能会异常退出,这种退出并非程序当初设计 时的意愿,引起这种异常退出可能是程序自身内部的错误,或者是被其他程序强行终止,也 可能是非法用户执行退出操作。这些情况下,程序往往需要被重新启动才能实现其功能或 向外提供服务。对于无人值守的服务器或者是后台运行的服务程序,用户并不能及时重新 启动他们;对于计算机系统中的杀毒软件或者防火墙等安全产品而言,如果有程序或用户 恶意结束它们,将会对系统安全造成一定的损失甚至严重后果。此时就需要一种机制能够 实施实时监控,一旦检测到被守护的程序退出,就立即启动它,这就是进程守护技术。但是 作为一种安全辅助手段,这种检测机制不能对系统本身的性能产生明显的影响,否则就会 影响保护的被守护程序的服务效果,失去辅助程序的意义。一般地,windows下正在运行的一个应用程序对应着一个进程,该进程由两部分构 成操作系统用于管理目的的进程内核对象和该进程所拥有的一个地址空间。其中内核对 象是windows系统中最重要的概念之一,进程的内核对象只是所有内核对象中的一种。内 核对象的用途非常广泛,其中之一便是可以用来进行同步。这些内核对象中的每一种要么 处于触发状态,要么处于未触发状态。关于进程内核对象,微软公司为其指定了一些规则, 规定如何在这两种状态之间进行转换。进程内核对象在进程创建的时候总是处于未触发状 态,当进程终止的时候,操作系统就会自动使进程内核对象变成触发状态,并且当进程内核 对象被触发以后,它将永远保持这种状态,再也回不到未触发状态。在进程内核对象的内 部有一个布尔变量,当系统创建进程时,将此进程内核对象的布尔变量初始化为FALSE(表 示未触发);当进程终止的时候,操作系统又会将这个布尔变量设为TRUE(表示已经被触 发)。基于此,可以编写程序来测试一个进程内核对象的状态,以确定该进程是否正在运行。 windows已经提供了相关的API (应用程序编程接口 )用于检查进程内核对象的布尔值,而 且将调用该线程设置为等待状态,直到被守护的进程内核对象从FALSE变为TRUE的时候自 动唤醒等待的线程继续运行。java语言(爪哇编程语言)是目前最流行的编程语言之一,其特点之一便是编译 一次到处运行,现在已经成为许多应用方便的首选编程语言。在windows下,一个应用程序 的磁盘文件一般即为一个可直接运行的exe文件(一种可执行文件的称呼)。但由于生成 exe文件总要和系统的硬件平台相关,这和java的跨平台性是相悖的,所以java语言并不 支持直接产生一个可执行的exe文件。一个GUI (图形化用户接口)应用程序,在开发过程 中,可以使用java class文件(开发过程中的一种文件形式)来运行程序,但是最后发布应用程序的时候一般需将若干个class文件打包成一种jar文件(java档案文件),而不直 接产生如windows下的exe文件,这些jar文件可以像exe那样双击运行。jar文件本身只 是java文档的一种文档格式。在windows下安装JRE(Java运行环境)的时候,系统已经 将该文件类型关联到javaw. exe (运行java程序时具体的执行文件)程序上,即双击该文 件时实际是启动一个javaw. exe来打开jar文件并运行程序功能,在操作系统中具体表现 为一个叫javaw. exe的进程。因此如果系统中有多个打包为jar的⑶I应用程序同时在运 行,也就运行了多个javaw. exe的进程,从任务管理器中会看到多个名字都为javaw. exe的 进程实例在运行。传统进程守护方法分析现有的进程守护方法如图1。该方法在运行过程中每隔一定时间查询系统当前运 行的进程实例,具体操作是对当前系统拍快照,对所得的数据结构,通过匹配被守护进程的 名字从而确定系统中是否有被守护进程正在运行。这种方法要求不停的查询系统,这将会 消耗大量的系统资源。虽然将查询频率设定为一定的间隔可以减少查询次数从而降低对系 统资源的占用。但是在对java应用程序进行守护的时候,是无法通过匹配被守护进程名字 来确定被守护进程是否存在的。因为当系统中有多个Java程序在同时运行时,可能会出现 多个javaw. exe的进程。这些进程对应着系统中同一个javaw. exe文件,它是打开jar格 式文件实现应用程序功能的实体,通过这种简单的查询法方法并不能确定哪个javaw. exe 对应被守护程序,也就不能确定被守护应用程序是否正在运行。因此传统的进程守护方法 在这种情况下失效了。还有一种方法是由需要被守护的程序自身来创建远程线程,病毒木马常使用这种 方法,具体是在应用程序自身启动时,准备好远程线程所需的代码和数据,然后通过在其他 进程中分配内存空间并将这些代码和数据写到远程进程中,然后启动远程线程,由该远程 线程执行进程守护的功能。这种方法在windows下现在容易被杀毒软件误报为病毒或者被 主动防御拦截,从而影响用户的体验性,而且这种将代码写到其他进程的方法会影响其他 进程的稳定性。所以这种方法应该是一个正常应用程序尽量避免的方法。另外这一套方案 一般是在windows平台上是使用c/c++(编程开发语言)开发应用程序时才有可能使用的。 如果被守护的应用程序的是使用java编程语言写的,那么这种方案显然是不合适的。
技术实现思路
技术问题本专利技术的目的是提供一种在windows环境下对被打包成jar格式的 java程序实现进程守护的方法。该方法不仅减少了资源消耗量,提高主程序的健壮性,而且 具有使用灵活,方便升级的特点。技术方案本专利技术是利用父进程和子进程之间的一一对应关系,在原有进程查询 机制的基础上获得对应于被守护的java程序的进程信息,并借助被守护的java程序进程 内核对象的状态来监视该java程序的运行状态。父进程和子进程在设计应用程序时,有时需要启动多任务执行其他操作,同时本身的操作还继续 进行。要这样做可以创建另一个本地线程,在该线程中执行其他操作,这就是多线程程序。 但在有的场合下这样做并不合适,如需要进程守护时。一个线程监视它所处的进程运行状态是不合适的,因为如果进程意外终止了,那么进程之中执行守护的线程还没有来得及反 应就随主进程的终止而结束了,也就无法实现进程守护的功能。另一方面,处在同一进程中 的多个线程访问的是同一个进程地址空间,如果其中一个线程不经意地修改了重要内容会 导致一些意想不到的结果。同时进程守护的功能跟应用程序的主体功能关联性并不大,所 以可以将它独立出去放到另一个单独的进程中去完成守护任务,提高整体的健壮性。由于 主体应用部分使用java语言开发,为简化操作它只需简单的启动另一个可执行文件,由该 进程专门实现守护任务,然后主体程序专心实现自己的任务。只要保证守护进程的名字不 变,内部实现则和主体部分没有关系,这样就可以使用windo本文档来自技高网
...

【技术保护点】
1.一种基于进程间继承关系的爪哇程序进程守护方法,其特征在于该方法在被守护的爪哇程序进程与守护程序进程之间建立一种父子继承关系,并基于这种继承关系由守护程序进程来唯一确定被守护的爪哇程序进程;基于被守护的爪哇程序进程的内核对象状态确定被守护的爪哇程序的运行状态;a.基于父子继承关系确定被守护的爪哇程序进程的方法为:步骤a1).被守护的爪哇程序进程启动守护程序进程,这样被守护的爪哇程序进程为父进程,守护程序进程成为被守护的爪哇程序进程的子进程,在这两个进程之间建立一种继承关系,一个子进程只有一个父进程,由守护程序进程来唯一确定被守护的爪哇程序进程;步骤a2).守护程序进程获得自身进程标识符PID,该PID在守护程序进程运行期间唯一地标识守护程序进程,使用进程名字标识一个进程并不准确,系统中同时运行多个同名的进程,要获得守护程序进程的PID使用系统应用程序编程接口即可,这样做有利于提高程序的移植性;步骤a3).守护程序进程对系统拍快照,快照是操作系统为所有当前运行的进程、线程的当前信息状态制作的一个只读副本,具体表现为一组数据结构,其中的每个结构又包含各个成员数据,这些成员含有进程名字、进程执行路径、进程PID和父进程PID信息,使用windows操作系统提供的函数库Toolhelp32获取系统快照;步骤a4).守护程序进程从系统快照中找到包含守护程序进程信息的数据结构,在上一步骤获得的一组数据结构中,守护进程需要搜索其中的每个数据结构,将其中的PID成员字段和守护程序进程在步骤a2)中获得的自身PID进行匹配,一旦匹配即找到包含守护程序进程信息的数据结构;步骤a5).保存父进程PID即被守护的爪哇程序进程PID,在包含守护程序进程信息的数据结构中有一个成员记录着守护程序进程的父进程PID,这个PID唯一地标识被守护的爪哇程序进程,这样就不必担心操作系统中同时有多个爪哇程序进程在运行,将该父进程PID值提取并保存起来;b.基于被守护的爪哇程序进程的内核对象状态确定被守护的爪哇程序的运行状态的方法为:步骤b1).守护程序进程根据保存的父进程PID通过系统的应用程序编程接口打开被守护的爪哇程序进程,应用程序编程接口会返回一个句柄,该句柄标识被守护的爪哇程序进程的内核对象,使用该句柄即意味着对被守护的爪哇程序进程的操作;步骤b2).守护程序进程将步骤b1中返回的爪哇程序进程内核对象句柄传给应用程序编程接口来访问被守护的爪哇程序进程,这时守护程序进程进入阻塞状态,直到被守护的爪哇程序进程内核对象被触发才继续执行;步骤b3).当被守护的爪哇程序进程不在运行时,操作系统触发该进程的内核对象,守护程序进程继续执行,这时守护程序进程重新启动被守护的爪哇程序;步骤b4).守护程序进程自身退出运行,至此它已经完成守护任务,由它重新启动的爪哇程序运行后会启动一个新的守护程序进程,整个执行流程转到步骤a1)。...

【技术特征摘要】
1. 一种基于进程间继承关系的爪哇程序进程守护方法,其特征在于该方法在被守护的 爪哇程序进程与守护程序进程之间建立一种父子继承关系,并基于这种继承关系由守护程 序进程来唯一确定被守护的爪哇程序进程;基于被守护的爪哇程序进程的内核对象状态确 定被守护的爪哇程序的运行状态;a.基于父子继承关系确定被守护的爪哇程序进程的方法为步骤al).被守护的爪哇程序进程启动守护程序进程,这样被守护的爪哇程序进程为 父进程,守护程序进程成为被守护的爪哇程序进程的子进程,在这两个进程之间建立一种 继承关系,一个子进程只有一个父进程,由守护程序进程来唯一确定被守护的爪哇程序进 程;步骤a2).守护程序进程获得自身进程标识符PID,该PID在守护程序进程运行期间唯 一地标识守护程序进程,使用进程名字标识一个进程并不准确,系统中同时运行多个同名 的进程,要获得守护程序进程的PID使用系统应用程序编程接口即可,这样做有利于提高 程序的移植性;步骤a3).守护程序进程对系统拍快照,快照是操作系统为所有当前运行的进程、线程 的当前信息状态制作的一个只读副本,具体表现为一组数据结构,其中的每个结构又包含 各个成员数据,这些成员含有进程名字、进程执行路径、进程PID和父进程PID信息,使用 windows操作系统提供的函数库Toolhelp32获取系统快照;步骤a4).守护程序进程从系统快照中找到包含守护程序进程信息的数据结构,在上 一步骤获得的一组数据...

【专利技术属性】
技术研发人员:王汝传李伟李鹏张伟孙力娟黄海平
申请(专利权)人:南京邮电大学
类型:发明
国别省市:84

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1