Windows核心编程:(二)进程

《Windows核心编程》之”DLL注入“(二) 本文接上一篇,开始介绍"DLL注入"的实现。 一、DLL注入的方法         DLL注入的方法有很多,《Windows核心编程》中介绍了如下几种: 1)使用注册表来注入DLL; 2)使用Windows挂钩来注入DLL; 3)使用远程线程来注入DLL; 4)使用木马DLL来注入DLL; 5)把DLL作为调试器来注入DLL; 6)使用CreateProcess来注入DLL; 阅读详情

一,一般将进程定义成一个正在运行的程序的一个实例,有以下两部分构成:

(1)一个内核对象,操作系统用它来管理进程。

(2)一个地址空间,其中包含所有可执行文件或DLL模块的代码和数据,还包含动态内存分配,(比如线程堆栈和堆的分配)


二,进程是有惰性的。进程要做任何事情,都必须让一个线程在它的上下文中运行。该线程负责执行进程地址空间中包含的代码。一个进程可以有多个线程,所有线程都在进程的地址空间中“同时”执行代码。为此,每个线程都有它自己的一组CPU寄存器和它自己的堆栈。对于所有要运行的线程,操作系统会轮流为每个线程调度一些CPU时间,它会采取循环方式,为每个线程都分配时间片,营造出所有线程都在并发运行的假象。


三,Windows应用程序必须有一个入口点函数,应用程序开始运行时,这个函数会被调用。有以下连个入口点函数:

Int WINAPI _tWinMain()


int _tmain()

四,进程实例句柄

      加载到进程地址空间的每一个可执行文件或者DLL文件都被赋予了一个独一无二的实例句柄,可执行文件的实例被当作WinMain函数的第一个参数hInstance传入。WinMain的hInstance参数的实际值是一个内存基地址,系统将可执行文件的映像加载到进程地址空间中的这个位置。


五,进程的命令行

系统在创建一个新进程时,会传一个命令行给它。用于创建新进程的可执行文件的名称是命令行上的第一个标记。


六,进程的环境变量

每个进程都有一个与它相关的宦静块,是在进程地址空间内分配的一块内存。

VarName1=VarValue1\0

获取环境变量的方式:

调用GEtEnvironmentString函数获取完整地环境块。子进程会继承一组环境变量,这些环境变量和父进程的环境变量相同,子进程和父进程并不共享同一个环境块。


七,进程当前所在的驱动器和目录

不提供完整地路径名,各种Windows函数会在当前驱动器的当前目录查找文件和目录,系统在内部跟踪记录着一个进程的当前驱动器和目录,由于这种信息是以进程为单位来维护的,所以若进程中的一个线程更改了当前驱动器或目录,则对于该进程中的所有线程来说,此信息被更改了。


八,CreateProcess函数

一个线程调用CreateProcess时,系统将创建一个进程内核对象,其初始使用计数为1.进程内核对象不是进程本身,而是操作系统用来管理这个进程的一个小型数据结构—可以把进程内核对象想象成由进程统计信息构成的一个小型数据结构。然后,系统为新进程创建一个虚拟地址空间,并将可执行文件的代码及数据加载到进程的地址空间。


然后,系统为新进程的主线程创建一个线程内核对象,线程内核对象也是一个小型数据结构,用它来管理这个线程。


ID为0的进程是“ 系统空闲进程”



九,终止进程的方式:

(1)主线程的入口点函数返回

(2)进程中的一个线程调用ExitProcess

(3)另一个进程中的线程调用TerminateProcess

(4)进程中的所有线程都“自然死亡”

进程在终止后不会泄露任何东西


 




《Windows核心编程》若干知识点实战应用分享 《Windows核心编程》若干知识点应用实践分享,希望大家能够仔细研读,在提升理论知识水平的同时,也能有效地提高分析解决问题的技能。 阅读详情

相关推荐

《Windows核心编程》源代码深度解析与实践

本文还有配套的精品资源,点击获取 简介:《Windows核心编程》这本书由Jeffrey Richter撰写,深入讲解了Windows操作系统的内部机制和编程技术。书中详细阐述了Windows编程的核心概念、API和系统服务,旨在提升开发者构建高效、稳定、安全Windows应用的能力。配套光盘源代码提供了一个实践理论知识的重要平台,通过分析这些代码,读者可以加深对线程管理、...

weixin_36122351的博客 1440

Windows核心编程:进程

作者:shenzi链接:http://blog.youkuaiyun.com/shenziWindows核心编程:进程1.进程    1.1进程概念        程序是一系列静态指令,而进程是由执行程序实例的线程使用的一系列资源的容器(container)。从最高抽象层上来说,Windows进程的组成如下:专用的虚拟地址空间(包括程序代

shenzi的天空 2803

Windows核心编程第五版:深入内核技术与实践

Windows作为一个成熟的操作系统,其核心编程领域是IT专业人士不可忽视的知识版图。在这一章中,我们将首先概述Windows核心编程的基础知识,为后续的深入探索奠定坚实的基础。Windows核心编程主要涉及操作系统底层功能的调用与控制。它不仅包括对系统资源的高效管理和应用程序的稳定运行,还涵盖了一系列高级编程接口的应用。理解这些底层机制对于构建高性能、高可靠性的软件至关重要。本章将通过简洁明了的语言,让读者对Windows核心编程有一个全面的认识,为掌握后续高级技术打下基础。

weixin_35592186的博客 868

windows核心编程

主要用于记录windows核心编程这本书籍的学习。

weixin_45002961的博客 1341

Unity半透明物体景深失效?教你用双材质球方案完美解决(附完整Shader代码)

本文深入剖析了Unity中半透明物体导致景深效果失效的根本原因,即半透明物体默认不写入摄像机深度图。针对此问题,文章详细介绍了稳定高效的“双材质球”解决方案,通过为物体附加一个仅写入深度信息的不可见材质,完美修复景深效果,并提供了完整的Shader代码与实现脚本。

weixin_29010003的博客 381

因内存不足原因导致fragment空白解决方案

在androidx之前,一般我们防止Fragment重建是在actvitity的onCreate方法中使用savedInstanceState?.remove(“android:support:fragments”)或者savedInstanceState?但是在androidx中,使用这两行代码不生效,但是看FragmentActivity中的FRAGMENT_TAG还是android:support:fragments,那为什么会不生效呢,后来点进去看发现。

qq_39431405的博客 547

Windows核心编程 跨进程操作

Winodws核心编程 跨进程使用句柄,跨进程操作内存

qq_61553520的博客 1875

GBT 27930-2015/2023国标充电协议A类CAN报文ID说明

国标充电CAN的ID,仅供学习参考。

qqq080的博客 7806

Windows核心编程 进程

Windows核心编程 进程的创建与退出

qq_61553520的博客 1407

SD - WAN:企业出海的网络加速器

例如,一家中国的跨境电商企业,在欧美市场的促销活动期间,借助 SD - WAN 技术,即使面对海量订单数据的交互,也能确保欧美客户在浏览商品、下单支付时感受到近乎本地网络的流畅体验,大大提升了客户满意度,稳住了销售增速。企业无需在海外本地部署大量冗余服务器,只需依托云台,借助 SD - WAN 快速稳定的网络连接,即可轻松实现业务拓展,进一步精简运营架构,提升整体效能。在未来,随着技术的不断演进和企业出海需求的持续增长,SD - WAN 将持续赋能,助力更多企业在全球市场扬帆远航,书写辉煌篇章。

idcicp_com的博客 446

手把手教你学Simulink——基于多能互补微电网系统的建模与优化场景实例:风柴储联合供电系统在孤岛模式下的功率分配建模

本文介绍了使用MATLAB/Simulink和Simscape Electrical构建风柴储联合供电系统的建模方法。系统包含风力发电、柴油发电、储能电池等模块,重点研究孤岛模式下功率分配策略。详细说明了从创建项目、添加模块到搭建风力发电系统(含MPPT控制)、柴油发电系统及集成各模块的全过程,并提供了仿真参数设置建议。通过分析频率偏差、电池SOC等关键指标,验证了系统在维持稳定运行的同时能有效利用可再生能源。该模型为研究多能互补微电网提供了实验平台,未来可拓展更高效的能量管理策略和AI技术的应用。

MHD0815的博客 1万+

剖析《Windows 核心编程(第 5 版)》:掌握 Windows 平台高效编程秘诀

Windows 核心编程(第 5 版)》凭借丰富的内容和深入的讲解,为开发者全面展现了 Windows 操作系统的核心编程技术。通过学习这本书,开发者不仅能够深入理解 Windows 操作系统的底层机制,还能掌握在 Windows 平台上进行高效编程的方法和技巧。无论是开发桌面应用程序、服务器端程序,还是进行系统级编程,这本书都能为开发者提供强大的支持和指导。对于渴望在 Windows 平台上提升编程能力的开发者而言,《Windows 核心编程(第 5 版)》无疑是一本不可或缺的技术佳作。

数字魔方操控师的博客 1038

基于DPCNN实现电商情感分析任务

下载链接项目中使用的模型是DPCNN,在模型中我们定义了三个组件,分别是embedding层,卷积层和全连接层。Embedding层:将每个词生成对应的嵌入向量,就是利用一个连续型向量来表示每个词卷积层:提取语句中的语义信息Linear层:将结果映射成2大小用于二分类,即正反面的概率。

优快云 精品推荐 1629

《windows核心编程》第4章 进程

进程内核对象的生命周期一定比进程生命周期长,进程没有退出代表进程的进程内核对象一定不会被销毁。每个可执行文件或者DLL文件被装入到某个进程的地址空间,都会有一个唯一的实例句柄,来表示装入后的可执行文件或者DLL,此时把这个可执行文件或者DLL叫做进程地址空间中的一个模块。进程是静态的,进程中真正执行代码的是线程,所以进程必须有一个主线程primarythread。把进程比喻成工厂,把工厂中的人比作线程,工厂给人提供资源(场地、加工设备、原材料),主线程是随进程产生(工厂产生的时候同时产生它的厂长)。

HuanBianCheng27的博客 948

Hermes接入IMA知识库全攻略:将知识库装进你的Hermes智能体

本文详细介绍了如何将IMA知识库功能接入Hermes Agent平台,实现一站式笔记管理和知识库操作。主要内容包括:获取IMA访问凭证、下载技能包、配置凭据(支持文件和环境变量两种方式)、验证配置有效性,以及实际应用演示(查询知识库列表、创建笔记并添加到知识库)。文章还提供了常见问题解决方案,如认证失败处理、版本更新等。通过该集成,用户可在Hermes中直接调用IMA的笔记创建、知识库管理等强大功能,提升工作效率。

小石头的专栏 641

AUTOSAR从入门到精通-汽车电子电气架构(EEA)(二)

需求的传递并非完全是瀑布式的单向传递,而是双向的,只有被下游接受了的需求才是有效的需求,而且,下游是可以反向对上游提出需求的。当街区的设计完成之后,接下来要做的就是每栋建筑的详细设计,建筑的设计者发布的图纸中规定了房屋的主要结构、所在位置与周边环境的相互关系,以及屋中各种组件的位置与相互之间结合的关系,比如砖混结构、房屋的具体位置和朝向、卧室与客厅的相对位置与尺寸、马桶在卫生间中的位置等,还会对各种建筑材料的选取原则给出具体的标准,比如水泥的标号,钢筋的型号,各种电线的等级要求等等。

getusushu的博客 372

[笔记]Windows核心编程《三》进程

文章目录进程进程必须有一个线程进程销毁把进程所有线程退出调用ExitProcess 强制退出GUI和Console程序main函数运行生命周期获得系统总结 进程 进程必须有一个线程 PrimaryThread 主线程 进程销毁 把进程所有线程退出 调用ExitProcess 强制退出 缺陷:会有资源没有释放 GUI和Console程序 属性-》链接器-》子系统 GUI程序入口是_tWinMain(ASCII)/_twWinMain(Unicode) Console程序入口是_tmain() WinMain.

二次元怪兽的博客 974

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Windows核心编程-第五版中文版学习资源:深入掌握Windows系统底层编程

Windows核心编程-第五版中文版学习资源:深入掌握Windows系统底层编程 【下载地址】Windows核心编程-第五版中文版学习资源 《Windows核心编程-第五版(中文版)》是一本深入探讨Windows系统底层编程的经典书籍,涵盖进程、线程、内存管理、文件系统和网络编程等核心知识。无论您是开发者、研究者,还是对...

gitblog_06714的博客 1076

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[笔记]Windows核心编程《二》内核对象

文章目录进程和程序内核对象何为内核对象系统4环结构内核对象数据结构句柄使用计数Counter安全描述符SecurityDescriptor内核对象的安全性SECURYITY_ATTRIBUTES 结构体进程内核对象句柄表进程的句柄表结构创建一个内核对象关闭内核对象跨进程边界共享内核对象使用对象句柄继承改变句柄的标志为对象命名终端服务命名空间专有命名空间复制对象句柄工具winObj 查看所有内核对象及当前计数ProcessExplorer 查看所有进程状态总结 进程和程序 一、 进程是动态的,程序是静态的

二次元怪兽的博客 1752

Windows核心编程 进程间通信

Windows核心编程 进程间通信的方式

qq_61553520的博客 2891

Windows多进程编程

一、进程的概念       进程是是一个正在运行的程序的实例(飘~~~),是系统分配资源的单位(线程是执行的单位),包括内存,打开的文件、处理机、外设等,进程由两部分组成:      1、进程的内核对象:即我们通常所讲的PCB(进程控制块),该结构只能由该内核访问,他是操作系统用来管理进程的一个数据结构,操作系统通过该数据结构来感知和管理进程;它的成员负责维护进程的各种信息,包括进程的状态(创建、

冰箫寒剑 2万+

Windows核心编程 进程遍历与文件加密

Windows核心编程 进程遍历 文件加密

qq_61553520的博客 1370

windows核心编程之多线程多进程

来源:微信公众号「编程学习基地」 进程线程Process进程CreateProcess函数进程STARTUPINFO简单使用结束进程的方法Thread线程CreateThread函数参数说明:WaitForSingleObject函数线程同步临界区 Process进程 在windows系统中,进程就是一个正在运行的程序,他拥有自己的虚拟地址空间,拥有自己的代码,数据和其他系统资源,一个进程也包含了一个或多个运行在此进程中的线程 CreateProcess函数 BOOL CreateProcess (..

deroy 1279

windows核心编程-进程权限总结

1、首先,一个进程要进行特权操作,例如修改其他进程内存数据的话,必须要有比较大的特权, 一般来说,只有管理员账号有这个权限,那么我们程序的第一件事情,就是确认当前启动这个进程 的账号,是否为管理员账号 BOOL GetProcessElevation(TOKEN_ELEVATION_TYPE * pElevationType , BOOL * pIsAdmin) { HANDLE hTok

qq_22423659的博客 1320

windows核心编程--3、有关进程的三个函数

一、前言   该系列前几篇文章:     windows核心编程–1、使用vs2019编写第一个win32项目     windows核心编程–2、windows的画笔画刷以及一些简单的应用 二、实验要求     掌握CreateProcess、ExitProcess以及TerminateProcess函数的应用。 三、实验步骤     1、关于CreateProcess函数,从名字就可以知道...

windy_ll的博客 468

Windows 10系统编程——进程专题1

本文介绍了Windows 10系统中的进程概念及其组成要素。主要内容包括: Windows进程类型:从Vista到Windows 10不断演进,新增了受保护进程、UWP进程、轻量级受保护进程(PPL)、最小进程和Pico进程等多种类型。 进程组成要素:通过任务管理器详细分析了进程名称、PID、状态、用户名、会话ID、CPU占用、内存使用、基本优先级、句柄数和线程数等关键属性。其中特别说明了GUI进程和UWP进程的状态判断机制。 特殊系统进程:解释了系统中断、系统空闲进程、系统进程等伪进程或特殊进程的特性。

charlie114514191的博客 1167
上一篇: Windows核心编程:(一)内核对象
下一篇: Windwos核心编程:(三)线程
Windows_and_Linux
博客等级 码龄12年 0粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值