关于利用进程间通信实现程序自我保护
作者:佚名; 更新时间:2014-12-05

  论文摘要: 本文从实例的角度出发,以模拟病毒特征为主线,详细地介绍了如何利用多进程实现程序的自我保护。通过对进程及线程运行原理的分析,重点研究进程间通信技术,最终实现程序运行的稳定。

  论文关键词: 病毒 进程间通信 程序自我保护
  
  1.引言

  在计算机和网络技术日益发展的今天,病毒这个字眼越来越多地出现在了媒体和人们的言论中。计算机病毒的发展必然会促进计算机反病毒技术的发展,新型病毒的出现向以行为规则判定病毒的预防产品、以病毒特征为基础的检测产品,以及根据计算机病毒传染宿主程序的方法而消除病毒的产品提出了挑战,致使原有的反病毒技术和产品在新型的计算机病毒面前无能为力。这样,势必使人们认识到现有反病毒产品在对抗新型的计算机病毒方面的局限性,迫使人们在反病毒的技术和产品上进行新的更新和换代。要打败对手,就要从了解对手开始,本文从模拟病毒隐藏性和寄生性的角度出发,以进程通信、进程快照、多线程等技术基础,利用Visual C++的MFC窗口界面设计了一组程序自我保护软件,经过测试实现了程序的稳定运行。

  2.进程的概念

  当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。因此定义进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤销,反映了一个程序在一定的数据集上运行的全部动态过程。
  进程由两个部分组成:
  (1)操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
  (2)地址空间。它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间,如线程堆栈和堆分配空间。
  目前常用的操作系统都是并行的,就是多个进程可以同步运行,这时就会牵扯到进程间通信这个概念。所谓进程通信,就是不同进程之间进行一些“接触”,这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些信息。举个例子来说明:比如说在使用IE上网时,你想将网页上的一段文字保存至你的电脑上,这时有一种简单的方法,就是复制粘贴。将你想保存的文字选中,然后将其复制,接下来将所复制的文字粘贴到.TXT文档中,这时就形成了两个进程之间的通信,这里的通信媒介是剪贴板。

  3.线程的概念

  为了对线程模式有一定的理解,我们可以将其想象为把一所屋子里的东西搬到另一所屋子。如果采用单线程方法,则需要自己完成从打包到扛箱子再到拆包的所有工作。如果使用单元线程模式,则表示邀请了好朋友来帮忙。每个朋友在一个单独的房间里工作,并且不能帮助在其他房间工作的人。他们各自负责自己的空间和空间内的物品搬运。如果采用自由线程方法,仍然邀请相同的朋友来帮忙,但是所有朋友可以随时在任何一个房间工作,共同打包物品。与此类似,房子就是运行所有线程的进程,每个朋友都是一个代码实例,搬运的物品为应用程序的资源和变量。
  有了上面的例子,便能容易理解线程(Thread)是一个能独立于程序的其他部分运行的作业,是进程的一个实体,是CPU调度和分派的基本单位。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。一个线程可以执行应用程序代码的任一部分,包括正在由另一线程执行的代码。
  线程由两个部分组成:
  (1)线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。
  (2)线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量。
  线程属于一个过程,操作系统为每一个运行线程安排一定的CPU时间——时间片,线程是操作系统分配CPU时间的基本单位。系统通过一种循环的方式为线程提供时间片,线程在自己的时间内运行,因时间片相当短,因此,给用户的感觉,就好像线程是同时运行的一样。如果计算机拥有多个CPU,线程就能真正意义上同时运行了。

  4.进程与线程的关系

  根据操作系统的定义,进程是系统资源管理的最小单位,线程是程序执行的最小单位。进程是不活泼的,进程可以理解为是线程的容器。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。单个进程可能包含若干个线程,这些线程都“同时”执行进程地址空间中的代码。每个进程至少拥有一个线程,来执行进程的地址空间中的代码。当创建一个进程时,操作系统会自动创建这个进程的第一个线程,称为主线程。此后,该线程可以创建其他的线程。
核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com