代码注入技术

admin 2026-07-14 05:26:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统梳理代码注入技术,按代码运行载体分为本地执行、远程注入和进程替换三大流派。远程注入细分为DLL注入与Shellcode注入,并对比了不同执行与写入方式的隐蔽性。进程替换(ProcessHollowing)作为独立流派,通过创建挂起合法进程并替换内存实现伪装。核心结论是理解代码运行进程是掌握注入技术的关键,隐蔽性取决于执行与写入方式的组合。 综合评分: 86 文章分类: 红队,免杀,恶意软件


cover_image

代码注入技术

AI 和安全工具 AI 和安全工具

AI和提效工具实验记

2026年7月12日 21:47 上海

在小说阅读器读本章

去阅读

代码注入,指的是把一段代码「送进」某个进程并让它在那里执行——它是红队攻防、免杀、恶意代码分析里的核心技术。理解代码注入,关键是先分清代码最终运行在哪个进程:自己的进程、别人已经存在的进程、还是自己新建的进程。沿着这条线索,整条技术树就能理得清清楚楚。

本文先给一张完整思维导图,再按三大流派逐项拆解原理、API、特点与隐蔽性差异,帮你建立完整的认知框架。


一、顶层分类:三大载体

代码运行在哪个进程,代码注入分三大类:

  • • 🏠 本地执行 —— 代码运行在自己的进程里(比喻:自己家干活)
  • • 🕵️ 远程注入 —— 代码运行在已存在的别的进程里(比喻:潜入别人家)
  • • 🏭 进程替换 —— 代码运行在自己新建的进程里(比喻:自己开假公司)

关键:进程替换不属于远程注入——进程是自己新建的,不是潜入已有进程。


二、本地执行:Shellcode 加载器

最简单的形式:在自己进程里申请内存、写入 Shellcode、创建线程执行。

  • 原理:自己进程申请内存 → 写入 Shellcode → 创建线程执行
  • 核心 APIVirtualAlloc + 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(挂起) → 掏空内存 → 填入恶意代码 → 恢复执行
  • 核心 APICreateProcess(SUSPENDED) + ZwUnmapViewOfSection + WriteProcessMemory + SetThreadContext + ResumeThread
  • 原理:自己开一个合法进程(挂起状态),把它的内存掏空换成恶意代码再恢复执行——对外看就是个正规程序
  • 特点:伪装成合法进程(如 svchost.exe),隐蔽性强

五、关键对比与小结

隐蔽性递增(越往下越难被检测)

  • • 执行方式:CreateRemoteThread < APC 注入 < 线程劫持
  • • 写入方式:WriteProcessMemory < NtMapViewOfSection

DLL 注入 vs Shellcode 注入

  • • DLL 注入:功能完整、开发容易,但有文件落地、隐蔽性较低
  • • Shellcode 注入:纯内存无文件、隐蔽性高,但开发难度大

黄金组合

NtMapViewOfSection(写入)+ APC/线程劫持(执行)——写入和执行都绕过常规监控,是目前隐蔽性最高的搭配。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:AI和提效工具实验记 AI 和安全工具 AI 和安全工具《代码注入技术》

代码注入技术 网络安全文章

代码注入技术

文章总结: 本文系统梳理代码注入技术,按代码运行载体分为本地执行、远程注入和进程替换三大流派。远程注入细分为DLL注入与Shellcode注入,并对比了不同执行
参数裁剪导致的平行越权 网络安全文章

参数裁剪导致的平行越权

文章总结: 本文介绍参数裁剪导致的平行越权漏洞测试方法。通过删除或置空请求中的身份参数如userid观察返回包是否泄露其他用户敏感信息从而确认越权漏洞。测试流程
评论:0   参与:  0