勇敢心资源网

当前位置:首页 > 百科 / 正文

进程插入

(2020-03-29 23:38:40) 百科

进程插入

进程插入,即“让一个执行绪在别的进程中执行”。也叫执行绪插入、DLL注入。

基本介绍

  • 中文名:进程插入
  • 外文名:Process Injection

简介

在Windows中,每个进程都有自己的私有记忆体地址空间,当使用指针(一种访问记忆体的机制)访问记忆体时,一个进程无法访问另一个进程的记忆体地址空间,就好比在未经邻居同意的情况下,你无法进入邻居家吃饭一样。比如QQ在记忆体中存放了一张图片的数据,而MSN则无法通过直接读取记忆体的方式来获得该图片的数据。这样做同时也保证了程式的稳定性,如果你的进程存在一个错误,改写了一个随机地址上的记忆体,这个错误不会影响另一个进程使用的记忆体。

介绍

对应用程式来说,进程就像一个大容器。在应用程式被运行后,就相当于将应用程式装进容器里了,你可以往容器里加其他东西(如:应用程式在运行时所需的变数数据、需要引用的DLL档案等),当应用程式被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。

DLL档案隐藏的原理

dll档案不能单独运行,需要由进程(宿主)载入并调用。因为不能单独运行,dll档案就不会在进程管理器中出现,于是入侵检测软体和进程列表中都只有宿主进程的id,而找不到dll。

进程注入的优点

1.需要插入到远程进程的记忆体空间是通过virtualAllocEx这样的函式分配的,只存在于记忆体中,如果不是记忆体查杀,很难发现。
2.可以复用宿主进程的名称、连线埠,更加隐蔽

进程注入的流程

1. 编写引导程式(Loader.exe),将dll档案注入到远程进程
1.1 将系统许可权提升到Debug模式,因为只有debug模式才能打开远程进程的handle。使用到的函式:EnableDebugPrivilege
1.2 打开远程进程。使用到的函式:OpenProcess
1.3 给DLL档案的路径分配记忆体空间。使用到的函式:VirtualAllocEx()。
1.4 将DLL档案内容写入到远程进程。使用到的函式:WriteProcessMemory。
1.5 在宿主进程中启动新执行绪完成插入。使用到的函式:CreateRemoteThread。

内容

一个进程可以包含若干执行绪(Thread),执行绪可以帮助应用程式同时做几件事(比如一个执行绪向磁碟写入档案,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程式被运行后中,系统首先要做的就是为该程式进程建立一个默认执行绪,然后程式可以根据需要自行添加或删除相关的执行绪
独立的地址空间对于编程人员和用户来说都是非常有利的。对于编程人员来说,系统更容易捕获随意的记忆体读取和写入操作。对于用户来说,作业系统将变得更加健壮,因为一个应用程式无法破坏另一个进程或作业系统的运行。当然,作业系统的这个健壮特性是要付出代价的,因为要编写能够与其他进程进行通信,或者能够对其他进程进行操作的应用程式将要困难得多。但仍有很多种方法可以打破进程的界限,访问另一个进程的地址空间,那就是“进程插入”(Process Injection)。一旦木马的DLL插入了另一个进程的地址空间后,就可以对另一个进程为所欲为,比如盗QQ
普通情况下,一个应用程式所接收的键盘、滑鼠操作,别的应用程式是无权“过问”的。可盗号木马是怎幺偷偷记录下我的密码的呢?木马首先将1个DLL档案插入到QQ的进程中并成为QQ进程中的一个执行绪,这样该木马DLL就赫然成为了QQ的一部分!然后在用户输入密码时,因为此时木马DLL已经进入QQ进程内部,所以也就能够接收到用户传递给QQ的密码键入了,真是“家贼难防”啊!
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net
搜索
随机推荐

勇敢心资源网|豫ICP备19027550号