看流星社区

 找回密码
 注册账号
查看: 2008|回复: 0

使用QueueUserAPC线程注入(一)

[复制链接]

该用户从未签到

发表于 2013-5-2 09:07:46 | 显示全部楼层 |阅读模式
代码1

#define _WIN32_WINNT 0x0400
#define WIN32_LEAN_AND_MEAN   // 从 Windows 头中排除极少使用的资料

#include <iostream>
#include <windows.h>
#include <Winbase.h>
using namespace std;


DWORD  WINAPI WorkThread(LPVOID pParam)
{
    HANDLE Event = (HANDLE)pParam;
    for(;;)
    {
        DWORD dwRet = WaitForSingleObjectEx(Event, INFINITE, TRUE);
        if(dwRet == WAIT_OBJECT_0)
            break;
        else
            if(dwRet == WAIT_IO_COMPLETION)
                printf("WAIT_IO_COMPLETION\n");
            
            return 0;
    }
}


VOID  WINAPI APCProc(LPVOID dwParam)
{
    printf("%s", (PVOID)dwParam);
}

void TestAPC(BOOL bFast)
{
   
    HANDLE QuitEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
    HANDLE hThread = CreateThread(NULL,
,
        WorkThread,
        (LPVOID)QuitEvent,
,
        NULL);
   
   
    Sleep(100); // Wait for WorkThread initialized.
   
   
    for(int i=5; i>0; i--)
    {   
        QueueUserAPC((PAPCFUNC)APCProc, hThread, (DWORD)(PVOID)"APC here\n");
        if(!bFast)
            Sleep(1000);
    }
   
   
    SetEvent(QuitEvent);
   
    WaitForSingleObject(hThread, INFINITE);
   
    CloseHandle(hThread);   
}

int main()
{
    TestAPC(true);
    return 0;
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-14 21:52

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表