从内核看懂进程与线程创建之间的关系

本文详细介绍了进程和线程的概念,以及它们在内核中的创建过程。进程作为资源的容器,由explorer.exe通过CreateProcess()函数创建。内核对象如EPROCESS和ETHREAD用于管理进程和线程。每个进程都有句柄表,用于管理对象,且多进程可以共享内核对象。线程是代码执行的实体,创建线程使用CreateThread()函数。文章通过实例解析了线程参数传递和线程同步的基本原理。
摘要由CSDN通过智能技术生成
更多黑客技能 公众号:白帽子左一

作者:掌控安全-holic

什么是进程?

进程提供程序所需要的资源,如:数据、代码等等
进程扮演的角色仅仅是为当前程序提供资源,或者代码,这就是进程所提供的,当时程序运行的状态和进程没有关系,进程可以看做空间的概念

例子:
进程相当于一个房子,房子里面的东西,这些东西就是进程提供的;
房子里面走来走去的人,和使用东西的人,就是 线程
在这里插入图片描述

我们打开od,可以看到的这些东西就是进程

在这里插入图片描述

找到最后发现到 0x7FFEF000结束(这里是个小Tips了)

内核空间分布:

在4GB内存的操作系统中,高2G的给内存空间操作系统(也就是内核)使用,这部分内存空间所有进程共享。
低2G的内存给各个进程使用,每个进程占有独立的内存空间,相互进程其内存之间并不影响。

在这里插入图片描述
在这里插入图片描述

所谓的进程不是一个文件组成,而是多个文件组成

0x01.进程的创建过程

1)、任何进程都是别的进程创建的在这里插入图片描述

系统中的程序都是通过explorer.exe创建的,这个程序调用了CreateProcess()函数

2)、进程的创建过程

  1、映射EXE文件
  2、创建内核对象`EPROCESS`
  3、映射系统DLL(ntdll.dll)
  4、创建线程内核对象`ETHREAD`
  5、系统启动线程
        映射DLL(ntdll.LdrlnitializeThunk)
        线程开始执行

在这里插入图片描述

举个例子,我们点击 A.exe 就会调用 CreateProcess() 函数

第一步:映射EXE文件

通过上面的图片知道我们程序映射的话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值