Windows 核心编程 _ 进程四
创建进程:CreateProcess 函数原型 进程创建过程 一个线程调用这个CreateProcess时,系统将创建一个进程内核对象,初始使用计数为1。 进程内核对象不是这个进程本身,而是一个操作系统用来操作这个进程的一个小型数据结构。 然后,系统为新进程创建一个虚拟地址空间,...
创建进程:CreateProcess 函数原型 进程创建过程 一个线程调用这个CreateProcess时,系统将创建一个进程内核对象,初始使用计数为1。 进程内核对象不是这个进程本身,而是一个操作系统用来操作这个进程的一个小型数据结构。 然后,系统为新进程创建一个虚拟地址空间,...
概述 Windows 的组件对象模型(Component Object Model,COM)是一种用于构建可重用软件组件的标准和技术 它允许软件组件以二进制形式进行互操作,独立于编程语言、开发工具和平台 COM 技术广泛应用于各种 Windows 应用程序和系统服务 包括 OLE...
某程序替换图片资源,发现还是显示旧的 简述 替换了程序的一些背景图片,安装图片 编译后发现还是显示旧资源的内容 清理visual studio项目缓存,重新编译还是显示旧资源内容 分析 资源替换成功了,重新编译了,还显示旧内容,那说明跑起来的程序内部的资源本身就是旧的内容 也就是...
地址空间 32位系统,CPU可直接寻址4GB空间,这也是每个进程的地址空间大小。 其中,高2GB供内核模块使用,称为内核空间。 低2GB供用户态模块使用,称为用户空间。 使用/3GB开关,可以将用户空间增大到3GB。 Windows内容load到内核空间高地址,主程序load到用...
概述 从vcpkg安装了libcurl的静态库,把该静态库拷贝到了项目同级目录,并在项目中引用了这个libcurl.lib 问题 现象 编译出test.exe的时候发现,同时会多出两个文件 libcurl.dll zlib1.dll 分析 在项目同级目录放进去的是静态库,也在项目...
Sysinternals工具包 下载地址 VS VS远程调试 在VS安装的目录下,从Remote Debugger这个文件夹中,拿到x86或x64 在待调试环境中,管理员权限打开msvsmon.exe 无身份验证,允许任何用户进行调试 在调试环境中: 附加到进程 远程 选择连接模...
示例dump分析:未捕获异常 代码 分析步骤 使用!analyze -v 看到异常代码是e06d7363 对应着CPP_EH_EXCEPTION 触发场景一般为,C++ 托管扩展(/clr)中的异常 使用.exr -1查看异常记录 使用kn查看栈 可以看到是28行Crash函数里...
平台相关 select 支持:windows 支持:linux,macos,bsd,aix等 poll 支持:linux,macos,bsd等 不支持:一些交旧的或特定的unix操作系统可能不支持poll 不支持:windows不提供标准的poll,但可以通过其他相似的api来达...
用户模式同步 Interlocked 系列函数 原理 通过 CPU 原子指令(如 LOCK XCHG)直接操作内存,无需进入内核态 场景 简单计数器(如引用计数) 无锁数据结构(如无锁队列) 特点 性能极高(无内核切换) 仅支持单个变量的原子操作,无法实现复杂同步 临界区(Cri...
启动流程 BasicEntry 作为dll导出接口 PrepareEnv 先构建运行时 ntdll.dll kernel32.dll 获取当前dll句柄 EXE被当做DLL加载时,首先修复重定位数据,此时的全局变量等还无法访问 因为Windows操作系统不会修复当做DLL加载的E...
搜索当前分类