SystemInformer DLL 注入从入口到内核全解

发布时间:2026/10/2 14:56:45

SystemInformer DLL 注入从入口到内核全解 SystemInformer DLL 注入从入口到内核全解【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars Solutions, Inc. https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer很多人搜SystemInformer DLL 注入第一个问题其实是同一个入口到底在哪底层到底怎么跑的。先把结论摆出来这个仓库并没有一个独立的一键注入 DLL对话框它把注入这件事拆成了三层——内核驱动干脏活、通信库做协议、界面层提供操作面。本文就沿着进程内存写入这条线把三层各自的路径和职责讲清楚。先看地图注入链路按三层拆开先建立空间感整条链路长这样层职责关键源码位置内核驱动层执行跨进程内存读写、插入内核 APC / 工作项等特权操作KSystemInformer/、kphlib/用户态通信封装层连接内核服务编解码 KPH 消息向上提供NTSTATUS风格接口phlib/kph.c、phlib/include/kphuser.h界面层进程列表、内存页与内存编辑器承担手工写操作SystemInformer/memlist.c、SystemInformer/memedit.c、SystemInformer/memmod.c 注意方向请求永远从上往下走驱动只暴露原语不关心你要拿原语干什么。内核层怎么读 KSystemInformer 的导出表导出表才是注入原语的真身看内核能力最直接的入口是KSystemInformer/ksidll.def这是驱动的用户态导出表摘录如下LIBRARY ksi.dll EXPORTS KsiInitializeApc KsiInsertQueueApc KsiRemoveQueueApc KsiInitializeWorkItem KsiQueueWorkItem KsiInitializeDpc KsiInitializeThreadedDpc KsiInitializeSystemProcess简单说就是内核 APC异步过程调用让目标线程在内核态执行你指定的函数和工作项内核态的延迟执行队列两套原语外加 DPC 定时器类能力。要做一个内核态 LoadLibrary式注入KsiInsertQueueApc这类导出就是最核心的积木。为什么把内存读写下沉到内核两个原因。第一ReadProcessMemory/WriteProcessMemory这套用户态 API 受对象权限和完整性级别约束碰到受保护进程就无解由驱动代读代写权限判定发生在内核内部。第二内核态注入原语APC/工作项本身只能在环 0 调度用户态根本碰不到。所以KSystemInformer/里围绕进程、线程、对象做了一整组 informer进程/线程/文件等事件通知注入相关能力只是其中一部分。通信层Kph 函数族把端口细节藏了起来上层调用者拿到的是什么phlib/kph.c负责连接名为\KSystemInformer的 ALPC 通信端口端口名定义在phlib/include/kphuser.h消息结构由kphlib/kphmsg.c等文件约定。对上层来说这一切都被封装成普通 C 函数比如跨进程读内存// phlib/include/kphuser.h PHLIBAPI NTSTATUS NTAPI KphReadVirtualMemory( _In_opt_ HANDLE ProcessHandle, // 可为空空则读本进程 _In_ PVOID BaseAddress, _Out_writes_bytes_(BufferSize) PVOID Buffer, _In_ SIZE_T BufferSize, _Out_opt_ PSIZE_T NumberOfBytesRead );同一头文件里还有KphOpenProcess内核态打开任意访问权限的进程句柄、KphTerminateProcess、KphCreateMessage构造发给驱动的消息等。也就是说界面代码不需要知道端口在哪、消息怎么打包拿到NTSTATUS和缓冲区就完事。界面层注入 DLL菜单项去了哪里内存页是手工注入的主战场直白点翻遍plugins/目录当前仓库里并没有一个叫注入 DLL的图形化插件入口想注入得自己用下面这些积木拼。真正在界面上能落地的操作路径是进程属性窗的内存页SystemInformer/memlist.c列出目标进程的区域SystemInformer/memedit.c是十六进制编辑器memmod.c、memprot.c分别负责改属性/权限。把 DLL 字节或一段 IAT 补丁写进目标进程靠的就是这条内存写入链路。历史痕迹被注释的 CreateRemoteThreadSystemInformer/heapinfo.c里还留着一段整块注释掉的代码第 1225 行附近能看出项目当年走的是经典远程线程路线// SystemInformer/heapinfo.c整块已被注释 // if (!(threadHandle CreateRemoteThread( // processHandle, // NULL, // 0, // PhGetModuleProcAddress(Lntdll.dll, RtlDestroyHeap), // HeapHandle, // 0, // NULL // )))这段是给销毁进程堆功能用的用CreateRemoteThreadntdll!RtlDestroyHeap组合。它被注释掉、能力下沉到驱动正说明路线从用户态 API 换到了内核服务具体演进过程以当前仓库版本为准。五步上手从启动到内存写入生效以管理员身份启动 SystemInformer 主程序加载内核服务需要管理员权限KsiLoadUnloadService就定义在phlib/include/kphuser.h。在程序内启动 KSystemInformer 内核服务相关支撑代码在SystemInformer/ksisup.c与SystemInformer/phsvc/服务客户端/服务端。在进程列表双击目标进程打开属性窗口。切到内存页双击目标内存区域进入内存编辑器SystemInformer/memedit.c。写入目标字节后回到内存列表确认内容变化写入即完成。⚠️ 第 4、5 步的菜单层级不同版本可能微调以当前仓库版本为准。常见疑问与使用注意Q1为什么找不到一键注入 DLL 的入口仓库没有内置该对话框它提供的是内核 APC/工作项原语 内存读写两块积木完整的 LoadLibrary 注入流程找线程、写字节、构造 APC需要调用方自己编排。Q2驱动加载失败或被系统拦截怎么办常见于未给管理员权限或开启 HVCI 的 Windows 拒绝加载未获豁免的第三方驱动仓库KSystemInformer/bin-signed/下有预签名产物可尝试。Q332/64 位怎么匹配写入的 DLL 或代码段必须与目标进程位数一致往 64 位进程写 32 位模块地址直接就是无效指针。Q4碰受保护进程被拒绝封装层提供了KphStripProtectedProcessMasks见phlib/include/kphuser.h由驱动侧剥离保护掩码但用不用、对哪个进程用属于高风险操作务必只在自己的测试机上做。Q5权限最小化怎么把握跨进程写入至少需要PROCESS_VM_WRITE级别访问驱动路径则由内核按DesiredAccess判定别默认请求PROCESS_ALL_ACCESS。仓库内相关资源驱动导出表KSystemInformer/ksidll.def用户态通信接口声明phlib/include/kphuser.h消息协议实现kphlib/kphmsg.c内存编辑器SystemInformer/memedit.c【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars Solutions, Inc. https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/26 15:35:55

OpenProject 容器化部署教程:三步搭好完整的项目管理平台

OpenProject 容器化部署教程:三步搭好完整的项目管理平台 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, …

2026/10/2 0:18:51

Android系统priv-app目录特权应用开发指南

1. 理解/system/product/priv-app目录的特殊性 在Android系统中,/system/product/priv-app目录是一个具有特殊权限的应用存放位置。与普通的/system/app目录不同,这里的应用会被自动授予 PRIVILEGED 权限,这意味着它们可以访问普通应用无法…

2026/10/2 14:53:39

大模型推理优化实战:从硬件到vLLM的五层调优方法论

1. 项目概述:Model-Optimizer 不是工具名,而是一类工程实践的统称 “Model-Optimizer”这个标题乍看像某个开源项目或商业软件的代号,但结合当前全网高频搜索词——TensorRT、vLLM、NVIDIA驱动安装、Docker镜像版本、PT文件转换、Qwen3-Embe…

2026/10/2 14:53:39

Spring Boot集成MQTT客户端:从协议原理到生产级实践

上手一个 Spring Boot 项目,最容易被低估的技术点是 MQTT 客户端。你可能觉得无非是引入依赖、设置 broker 地址、订阅几个 topic,但一旦项目里接入几十台设备、消息开始乱序、客户端随机掉线,问题就会一波接一波。MQTT 本身是一个轻量级的发…

2026/10/2 14:53:39

基于mdBook与gettext的Leptos中文文档本地化实战

1. 为什么做 leptos-book-l10n:一个本地化项目的起点先说清楚这个项目是干什么的。leptos-book-l10n,字面拆开就是 Leptos Book Localization,也就是把 Leptos 官方文档这本书做本地化翻译。Leptos 是目前 Rust 生态里增长最快的全栈 Web 框架…

2026/10/2 14:53:39

OpenShell:基于Starship与zsh的终端组合配置方案

1. 我为什么折腾一个叫 OpenShell 的终端方案先说结论:OpenShell 不是什么新出的终端软件,也不是某个开源项目的名字。它是我给自己的一套终端环境起的代号,本质上是"快速脚本生成的交互式命令行工具箱 终端提示符美化"的合集。起…

2026/10/2 14:53:39

读《全球科技通史》:用能量与信息主线洞察技术趋势

1. 科技史的正确打开方式:为什么要读一本“通史” 做技术这行,时间久了都会遇到一种尴尬:手里的工具越来越新,但视野反而越来越窄。今天追大模型,明天追边缘计算,后天又出来个新框架,每个都学一…

2026/10/2 14:48:39

MS-GLA:多尺度门控线性注意力原理与工业时序建模实战

1. 项目概述:这不是又一个Attention变体,而是对序列建模底层瓶颈的外科手术式干预MS-GLA——Multi-Scale Gated Linear Attention,光看名字就带着一股“不讲武德”的学术压迫感。但别被缩写吓退,它本质上不是在卷参数量、堆层数&a…

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/1 17:09:46

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 10:48:55

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/2 0:02:57

PWN入门:从栈溢出原理到ROP链实战

1. 这不是“学PWN”,是重新理解你每天敲的每一行C代码我第一次在CTF赛场上写出能控制程序流的exp时,手抖得连gdb的c命令都输错三次。那道题只有23行C代码,一个gets()调用,一个printf(),一个return——它甚至没开NX&…

2026/10/2 0:02:57

Windows下cudaMallocHost显存占用之谜:WDDM与TCC模式差异及优化方案

1. 一个反直觉的显存占用现象第一次在 Windows 上看到cudaMallocHost把显存吃掉的时候,我的反应是打开任务管理器反复确认了三遍。明明调用的是主机端锁页内存分配,按 CUDA 文档的说法,这块内存应该落在系统 RAM 里,跟 GPU 的显存…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑