0-创建线程注入(CreateThread Injection)
一、前言
创建线程注入是最基础、最经典、最出名的一种注入方式,很多人刚开始学习免杀最先接触的注入方式就是创建线程注入,当然人怕出名猪怕壮,这也是杀软严密监控的一种注入方式。在前面我说过,shellcode的注入大致分为三步:
为shellcode分配内存
将shellcode移动到已分配的内存区域
执行shellcode
CreateThread是完成 执行shellcode 这一步骤的关键WindowsAPI,所以由此得名 创建线程注入。
相信读者很熟悉这种注入方式,因为在 第一章-基础 中大部分代码采用的是创建线程注入,因此在本小节中我不会过多说明实现细节,请读者参考前面的文章。
⚠注意:从本小节开始,我只用C++完成代码实现,如果有读者想要用C# 和Go实现,那么多注意WindowsAPI的参数类型。
二、流程
使用
VirtualAlloc申请一块内存区域。官方文档:VirtualAlloc 函数 (memoryapi.h) - Win32 apps | Microsoft Learn使用
RtlMoveMemory将shellcode移动到相应的内存区域。官方文档:Wdm.h) (RtlMoveMemory 函数 - Win32 apps | Microsoft Learn使用
CreateThread创建一个线程执行指定位置的代码。官方文档:CreateThread 函数 (processthreadsapi.h) - Win32 apps | Microsoft Learn使用
WaitForSingleObject等待线程完成。官方文档:WaitForSingleObject 函数 (synchapi.h) - Win32 apps | Microsoft Learn
三、代码实现

Last updated