zoukankan      html  css  js  c++  java
  • 加壳学习之挂起方式创建进程

    技术标签:挂起方式创建进程  内核句柄表  安全属性

    程序工能说明:通过process.exe创建出两个进程(run.exe ie.exe),实现通过run.exe控制ie。将run.cpp编译后将生成的exe路径复制process.cpp的相应位置,编译process.cpp并运行完成整个Demo测试,观察运行的结果。(一个cpp一个项目不要写到一个项目内)

    工具: vs 2008

    *字符集:使用多字节字符集(不用会报错)

    // process.cpp 
    #include "stdafx.h"
    #include <Windows.h>
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        char szBuffer[256] = {0};
        char szHandle[8] = {0};
        
        SECURITY_ATTRIBUTES ie_sa_p = {0};//
        ie_sa_p.nLength  = sizeof(ie_sa_p);
        ie_sa_p.lpSecurityDescriptor = NULL;
        ie_sa_p.bInheritHandle = TRUE;//默认为flase 设置为true则句柄表可继承
    
        SECURITY_ATTRIBUTES ie_sa_t = {0};
        ie_sa_t.nLength  = sizeof(ie_sa_t);
        ie_sa_t.lpSecurityDescriptor = NULL;
        ie_sa_t.bInheritHandle = TRUE;
    
        STARTUPINFO ie_si = {0};
        PROCESS_INFORMATION ie_pi;
        ie_si.cb = sizeof(ie_si);
    
        TCHAR szCmdLine[] = TEXT("C:\Program Files (x86)\Internet Explorer\iexplore.exe www.baidu.com");
        //第三与第四个属性为安全属性,可以简单的理解为未设置为true时当前创建线程、进程的内核句柄表不可被继承
        //打开IE
        CreateProcess(
            NULL,
            szCmdLine,
            &ie_sa_p,//进程安全属性 进程表可被继承
            &ie_sa_t,//线程安全属性 线程表可被继承
            FALSE,//为true时代表此进程可被继承
            CREATE_NEW_CONSOLE,
            NULL,
            NULL,
            &ie_si,
            &ie_pi);
        
        sprintf(szHandle, "%x %x", ie_pi.hProcess, ie_pi.hThread);
        sprintf(szBuffer, TEXT("run.exe %s"), szHandle);//拼接cmdLine 将进程和线程的参数拼接到run.exe
    
        STARTUPINFO si = {0};
        PROCESS_INFORMATION pi = {0};
        si.cb = sizeof(si);
        //创建进程run.exe控制之前创建的ie
        CreateProcess(
            NULL,
            szBuffer,
            NULL,
            NULL,
            TRUE,
            CREATE_NEW_CONSOLE,
            NULL,
            NULL,
            &si,
            &pi);
    
        return 0;
    }
    // run.cpp
    
    #include "stdafx.h"
    #include <Windows.h>
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        DWORD dwProcessHandle = -1;
        DWORD dwThreadHandle = -1;
        char szBuffer[256] = {0};
    
        //接收命令行参数
        memcpy(szBuffer, argv[2], 8);
        sscanf(szBuffer, "%x", &dwThreadHandle);
        memcpy(szBuffer, argv[1], 8);
        sscanf(szBuffer, "%x", &dwProcessHandle);
    
    
        printf("获取IE主线程句柄 %0x
    ", dwThreadHandle);
        printf("获取IE进程句柄 %0x
    ", dwProcessHandle);
    
        Sleep(5000);
        //挂起主线程
        ::SuspendThread((HANDLE)dwThreadHandle);
        printf("挂起主线程 %x
    ", dwThreadHandle);
        Sleep(10000);
    
        //恢复主线程
        ::ResumeThread((HANDLE)dwThreadHandle);
        printf("恢复主线程
    ");
        Sleep(5000);
    
        //关闭ID进程
        ::TerminateProcess((HANDLE)dwProcessHandle, 1);
        ::WaitForSingleObject((HANDLE)dwProcessHandle, INFINITE);
    
        printf("ID进程已经关闭。。。。
    ");
        Sleep(1000);
    
    
        return 0;
    }

                                              ---建议先了解下多线程与创建进程在学习此文章

  • 相关阅读:
    AS3 CookBook学习整理(四)
    方维分享系统修改瀑布流页面,包括的文件
    PHP 采集淘宝店的评论插件使用说明
    方维系统,在tip.htm和inc\u\u_menu.htm调用账号绑定状态,已绑定的可链接到该用户在对应网站的地址
    php采集淘宝店的评论,php采集淘宝店铺的所有评论的实现
    方维分享系统二次开发,新加一个模块
    方维分享系统,个人中心杂志社显示我的、关注的、推荐的数量
    采集 淘宝店铺的所有评论内容 的思路
    方维分享系统写一个全局函数,能获取用户详情
    方维分享系统 全局变量 $_FANWE 的用处
  • 原文地址:https://www.cnblogs.com/zheh/p/5223697.html
Copyright © 2011-2022 走看看