首页 > 系统相关 >进程创建的步骤

进程创建的步骤

时间:2023-02-16 16:56:43浏览次数:35  
标签:函数 RtlUserThreadStart 步骤 跳转 参数 内核 创建 进程 线程

进程的创建过程

1、映射EXE文件。

2、创建内核对象EPROCESS。

3、映射系统DLL(ntdll.dll)。

4、创建线程对象ETHREAD

5、系统启动线程

  进入LdrInitializeThunk

    LdrpInitialize

      _LdrpInitialize

        LdrpInitializeProcess

          LdrLoadDll  加载DLL

          Debugbreak()  如果是调试器启动,那么会触发int 3断点,断到调试器中。

    ZwContinue 进入内核中

6、再次进入内核中,内核将用户态eip设置为ntdll!RtlUserThreadStart函数中,还会跳转到_RtlUserThreadStart等函数

 

 

传入两个参数,一个参数为EXE的入口函数OEP地址,再去调用main函数。

另一个参数为进程的PEB地址。

 

如果再次启动其它线程时,传入的参数包括函数的入口地址,以及函数的参数,如CreateThread启动线程时,需要传入入口函数以及参数地址。

RtlUserThreadStart函数代码如下:

 

 跳转到ntdll!_RtlUserThreadStart,跳转之前将参数放到栈上。

    

    

标签:函数,RtlUserThreadStart,步骤,跳转,参数,内核,创建,进程,线程
From: https://www.cnblogs.com/ps12345678/p/17127348.html

相关文章

  • Linux 上pcntl安装步骤
    一。下载对应的PHP源码包wgethttp://cn2.php.net/get/php-5.5.20.tar.gz/from/this/mirror 二。解压下载的源码文件tar-zxvfphp-5.5.20.tar.gz 三。进入ph......
  • node中安装yarn详细步骤
    默认已经安装node:node安装可以看这个博客~ 1.安装yarn在任何命令行下输入 npminstall-gyarn  或者npminstall--location=globalyarn此时使用yarn命令会......
  • Android Studio创建模拟器
    创建方法:1.选择DeviceManager   2.选择Createdevice   3.选择一个你喜欢的  4.下载下来  5.AVD配置(一般默认就好)  6.完成啦,大功告......
  • react从零开始创建使用01
    一、react使用场景:可以开发web应用可以开发移动端原生应用(react-native)可以开发VR虚拟现实应用(react360)二、react安装使用:命令安装npminstallreactrea......
  • 进程管理
    进程的概念1.进程的概念 指一个应用程序运行了起来,进程是操作系统分配资源的一个最小单位2.进程的结构 控制块(PCB):存放着进程的唯一ID如果运行了多个微信进程......
  • 排查java进程问题
    1.先用jps命令查出java进程号2.使用top命令查出该进程使用cpu最高、占用内存最大的线程(嫌疑最大)这里我们选取微服务项目中的主进程24240top-Hp24240-d1-n13......
  • 进程和线程的区别
    ①进程是资源分配的最小单位,线程是资源调度的最小单位。②线程是在进程下运行的。一个进程可以包含多个线程。③进程有自己的独立地址空间,每启动一个进程,系统就会为它分......
  • 一封传话一对多推送实现步骤
    前言前面介绍了一封传话聚合推送API的在线测试推送的步骤,可以实现一对一发送消息。但是我们希望实现:1.群组订阅功能:例如我和我的好友一起加入通道后,只推送一次我们两个......
  • 关于通过IPMITOOL工具创建管理员用户时,通过这个新建管理员无法打开ikvm的权限的问题。
    问题描述在我们通过ipmitool工具来添加管理员用户及权限后,web页面kvm无法正常打开。 添加用户命令:ipmitool-Ilanplus-H10.18.114.233-UADMIN-PADMINuse......
  • clickhouse增删改查、创建数据库、创建表、修改字段、添加字段、删除字段
    1,创建数据库CREATEDATABASEIFNOTEXISTStest_database;集群语句(集群名称必须和搭建环境中配置环境名称一致)//cluster_name是集群名称CREATEDATABASEIFNOTE......