码迷,mamicode.com
首页 > Windows程序 > 详细

创建进程API

时间:2020-05-15 00:04:03      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:发送   div   hand   木马   一个   方法   size   ESS   console   

前言:

  在一个进程中创建并启动一个新进程,无论是对于病毒木马程序还是普通的应用程序而言。这都是一个常见的技术,最简单的方法无非是直接通过调用WIN32 API函数创建新进程。用户层上,微软提供了WinExec、ShellExecute和CreateProcess等函数来实现进程创建

实现代码:

  

    //************************************
    // 函数名:  CStartDlg::WinExec_Start
    // 返回类型:   BOOL
    // 功能: 以WinExec的方式创建进程
    // 参数1: char * pszExePath    exe文件路径
    // 参数2: UINT uiCmdShow    显示方式
    //************************************
BOOL CStartDlg::WinExec_Start(char *pszExePath, UINT uiCmdShow)
{
    UINT uiRet = 0;
    //函数成功,返回值大于31
    uiRet = WinExec(pszExePath, uiCmdShow);
    if (31 < uiRet)
    {
        return TRUE;
    }
    return FALSE;
}

    //************************************
    // 函数名:  CStartDlg::ShellExecute_Test
    // 返回类型:   BOOL
    // 功能: 以ShellExecute的方式创建进程
    // 参数1: CString pszExePath exe文件路径
    // 参数2: UINT uiCmdShow    显示方式
    //************************************
BOOL CStartDlg::ShellExecute_Start(CString pszExePath, UINT uiCmdShow)
{
    HINSTANCE hInstance = 0;
    //ShellExecute函数不仅可以运行exe文件,也可以运行已经关联的文件。
    //例如,可以打开网页、发送邮件、以默认程序打开文件、打开目录、打
    //印文件等。若返回值大于32,则表示执行成功,否则执行失败
    hInstance = ShellExecute(NULL, NULL, pszExePath, NULL, NULL, uiCmdShow);
    if (32 < (DWORD)hInstance)
    {
        return TRUE;
    }
    return FALSE;
}

    //************************************
    // 函数名:  CStartDlg::CreateProcess_Start
    // 返回类型:   BOOL
    // 功能: 以CreateProcess方式创建进程
    // 参数1: char * pszExePath exe文件路径
    // 参数2: UINT uiCmdShow    显示方式
    //************************************
BOOL CStartDlg::CreateProcess_Start(char* pszExePath, UINT uiCmdShow)
{
    STARTUPINFO si = { 0 };
    PROCESS_INFORMATION pi;
    BOOL bRet = FALSE;
    si.cb = sizeof(si);
    si.dwFlags = STARTF_USESHOWWINDOW;  //指定wShowWindow成员有效
    si.wShowWindow = uiCmdShow;
    bRet = CreateProcess(NULL, (LPWSTR)pszExePath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
    if (bRet)
    {
        //不使用的句柄最好关掉
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
        return TRUE;
    }
    return FALSE;
}

 

创建进程API

标签:发送   div   hand   木马   一个   方法   size   ESS   console   

原文地址:https://www.cnblogs.com/ndyxb/p/12892041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!