ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

SystemInformer DLL注入完整溯源指南:从远程线程到进程反射的三代实现

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的操作入口消失了有人甚至怀疑功能被砍掉。先把结论说清楚注入相关能力没有被删除而是整体换代——从往目标进程里塞远程线程逐步迁移到内核驱动的进程反射方案。功能速览30秒定位功能名当前实现位置依赖组件操作入口进程反射式内存读取替代注入线程SystemInformer/heapinfo.c 中PhpEnumerateProcessHeaps驱动克隆进程 用户态服务右键进程 → 堆对话框远程线程创建已废弃注释保留同文件 1204~1252 行整段注释CreateRemoteThread/RtlCreateUserThread无界面入口内核 APC 投递KSystemInformer/ksidll.c 的KsiInsertQueueApcKSI 驱动内核内部调用用户态→内核消息通道phlib/kph.c 的KphCommsSendMessagekphlib/ 消息库各功能对话框当前架构拆解四层各司其职按底层→封装层→上层接口看现在的链路是内核驱动层KSystemInformer/ 里的 KSI 驱动把内核系统调用封装成导出函数。KSystemInformer/ksidll.def 全文只有 18 行但导出了 APC 入队、工作项、DPC 等原语这是所有跨进程操作的地基。消息定义层kphlib/kphmsg.c 负责内核与用户态之间的消息结构打包保证驱动与 UI 两边字段对齐。通信封装层phlib/kph.c 把几百个操作统一收敛到KphCommsSendMessage上层代码不再关心端口细节。UI 层SystemInformer/ 各对话框如堆详情只发一条消息等应答后填表。演进时间线三代方案如何一路迁移阶段一经典 CreateRemoteThread最早的做法是在目标进程里开一条远程线程让它去调加载器。SystemInformer/heapinfo.c 第 1204 行往下有一整段注释代码if (!(threadHandle CreateRemoteThread( processHandle, NULL, 0, PhGetModuleProcAddress(Lntdll.dll, RtlDestroyHeap), // …省略…这段被整体注释保留是第一代注入路线的化石。远程线程特征明显安全软件一抓一个准最终退役。阶段二内核 APC 化第二代把动作下沉到驱动。KSystemInformer/ksidll.def 导出KsiInsertQueueApc实现在 KSystemInformer/ksidll.c 第 191 行内部直接调内核的KeInsertQueueApc。APC异步过程调用是把代码投递到目标线程队列、不新建线程的技术检测特征比远程线程小一个量级。驱动同时注册了线程创建通知KSystemInformer/informer_object.c 第 188 行的KphMsgHandlePreCreateThread任何新线程出现都逃不过审计。阶段三进程反射当前默认第三代干脆不再进目标进程。SystemInformer/heapinfo.c 第 441 行注释写得很直白RtlQueryProcessDebugInformation会往进程里注入线程偶发死锁所以改为反射。流程是if (PhGetIntegerSetting(SETTING_ENABLE_HEAP_REFLECTION)) status PhCreateProcessReflection( reflectionInfo, processHandle); // 之后所有查询指向克隆进程驱动克隆出目标进程查询在克隆体上进行查完销毁原进程零侵入。这是现在默认路径。实战验证一键复现反射式读取打开主程序在进程列表右键目标进程选堆——对应heapinfo.c的对话框入口勾选使用进程反射——对应SETTING_ENABLE_HEAP_REFLECTION判断刷新列表——PhpEnumerateProcessHeaps先PhOpenProcess拿PROCESS_CREATE_THREAD | PROCESS_DUP_HANDLE权限再调PhCreateProcessReflection克隆数据回填到列表——克隆体的堆信息经用户态服务序列化后返回 UI 填入验证零侵入——克隆进程创建瞬间驱动侧的KphMsgHandlePreCreateThread会把它登记在册。新旧方案对比维度阶段一远程线程阶段二内核 APC阶段三进程反射对目标进程侵入高注入新线程中投递 APC无操作发生在克隆体检测特征面大模式成熟小基本为零性能快中克隆有开销维护成本单文件注释代码驱动 通信层三处联动分层清晰新手门槛需懂LoadLibrary细节需懂 APC 语义UI 上只是一个勾选项延伸阅读通信主链路phlib/kph.c驱动导出清单KSystemInformer/ksidll.def线程通知审计KSystemInformer/informer_object.c构建说明HACKING.md接下来你可以先读 phlib/kph.c挑一个KphCommsSendMessage调用追完打包→内核→应答全链路再打开 KSystemInformer/informer_object.c 看KphMsgHandlePreCreateThread是怎么挂上内核通知的最后按上文步骤跑一遍堆详情亲眼看克隆体出现又消失的全过程。【免费下载链接】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),仅供参考
返回列表