文章总结: 本文系统梳理代码注入技术,按代码运行载体分为本地执行、远程注入和进程替换三大流派。远程注入细分为DLL注入与Shellcode注入,并对比了不同执行与写入方式的隐蔽性。进程替换(ProcessHollowing)作为独立流派,通过创建挂起合法进程并替换内存实现伪装。核心结论是理解代码运行进程是掌握注入技术的关键,隐蔽性取决于执行与写入方式的组合。 综合评分: 86 文章分类: 红队,免杀,恶意软件
代码注入技术
AI 和安全工具 AI 和安全工具
AI和提效工具实验记
2026年7月12日 21:47 上海
在小说阅读器读本章
去阅读
代码注入,指的是把一段代码「送进」某个进程并让它在那里执行——它是红队攻防、免杀、恶意代码分析里的核心技术。理解代码注入,关键是先分清代码最终运行在哪个进程:自己的进程、别人已经存在的进程、还是自己新建的进程。沿着这条线索,整条技术树就能理得清清楚楚。
本文先给一张完整思维导图,再按三大流派逐项拆解原理、API、特点与隐蔽性差异,帮你建立完整的认知框架。
一、顶层分类:三大载体
按代码运行在哪个进程,代码注入分三大类:
- • 🏠 本地执行 —— 代码运行在自己的进程里(比喻:自己家干活)
- • 🕵️ 远程注入 —— 代码运行在已存在的别的进程里(比喻:潜入别人家)
- • 🏭 进程替换 —— 代码运行在自己新建的进程里(比喻:自己开假公司)
关键:进程替换不属于远程注入——进程是自己新建的,不是潜入已有进程。
二、本地执行:Shellcode 加载器
最简单的形式:在自己进程里申请内存、写入 Shellcode、创建线程执行。
- • 原理:自己进程申请内存 → 写入 Shellcode → 创建线程执行
- • 核心 API:
VirtualAlloc+memcpy+CreateThread - • 内存权限:RWX(一次给全)/ RW→RX(先写后改,更隐蔽)
- • 特点:✅ 简单直接 ❌ 进程显眼,易被识别
这是理解一切远程注入的基础——先搞懂「本地怎么跑」,再学「远程怎么注入」。
三、远程注入
把代码弄进已存在的别的进程。按注入内容分两种:DLL 注入和 Shellcode 注入。
3.1 DLL 注入
注入的是完整的 DLL 文件。按触发方式又分两类:
主动注入 —— 用 CreateRemoteThread + LoadLibrary:在目标进程创建远程线程,让它调用 LoadLibrary 加载你的 DLL。经典教科书方法。
系统触发注入 —— 借助 Windows 系统机制,让目标进程自动加载你的 DLL:
- •
SetWindowsHookEx:装全局消息钩子,目标进程处理消息时系统自动加载你的 DLL - •
AppInit_DLLs:写注册表,任何加载user32.dll的进程都会自动加载你的 DLL
3.2 Shellcode 注入
注入的是裸机器码(Shellcode)。它有两个正交维度,可以自由组合。
维度一 · 执行方式(怎么触发运行)
- • CreateRemoteThread —— 新建远程线程跑 Shellcode。✅ 教科书方法 ❌ 新线程易被监控
- • APC 注入 —— 把任务挂到已有线程的 APC 队列。✅ 不增加线程 ✅ 绕过线程监控
- • 线程劫持 —— 挂起目标线程,改 RIP 指向 Shellcode,恢复执行。✅ 无新线程无新 API ✅ 极隐蔽
维度二 · 写入方式(怎么放进内存)
- • WriteProcessMemory ——
VirtualAllocEx+WriteProcessMemory常规写入。❌ 易被 EDR 监控 - • NtMapViewOfSection —— 共享内存段映射到目标进程。✅ Native API 绕过常规监控 ⚠️ 需配合执行技术
两个维度自由组合,例如
NtMapViewOfSection + APC= 挖暗道运货 + 塞任务单,隐蔽性拉满。
四、进程替换:进程空心化(Process Hollowing)
与远程注入并列的独立流派,不属于远程注入。
- • 流程:
CreateProcess(挂起)→ 掏空内存 → 填入恶意代码 → 恢复执行 - • 核心 API:
CreateProcess(SUSPENDED)+ZwUnmapViewOfSection+WriteProcessMemory+SetThreadContext+ResumeThread - • 原理:自己开一个合法进程(挂起状态),把它的内存掏空换成恶意代码再恢复执行——对外看就是个正规程序
- • 特点:伪装成合法进程(如 svchost.exe),隐蔽性强
五、关键对比与小结
隐蔽性递增(越往下越难被检测)
- • 执行方式:CreateRemoteThread < APC 注入 < 线程劫持
- • 写入方式:WriteProcessMemory < NtMapViewOfSection
DLL 注入 vs Shellcode 注入
- • DLL 注入:功能完整、开发容易,但有文件落地、隐蔽性较低
- • Shellcode 注入:纯内存无文件、隐蔽性高,但开发难度大
黄金组合
NtMapViewOfSection(写入)+ APC/线程劫持(执行)——写入和执行都绕过常规监控,是目前隐蔽性最高的搭配。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:AI和提效工具实验记 AI 和安全工具 AI 和安全工具《代码注入技术》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。






![[译苑雅集Vol.14]Anthropic最新论文:大语言模型没说出口的内心小秘密,藏在一个叫J空间的地方](/images/random/titlepic/13.jpg)



评论