资源共享吧-专业共享VIP视频

 找回密码
 注册成为正式会员

QQ登录

只需一步,快速开始

查看: 56|回复: 0

[C/C++] 全能逆向安全班1CreateProcess笔记

[复制链接]
  • TA的每日心情

    昨天 08:39
  • 签到天数: 30 天

    [LV.5]常住居民I

    4

    主题

    82

    帖子

    0

    精华

    终身高级VIP会员

    Rank: 7Rank: 7Rank: 7

    资源币
    50
    积分
    87
    贡献
    0
    在线时间
    20 小时
    注册时间
    2018-9-5
    最后登录
    2020-7-9

    终身VIP会员

    发表于 2020-6-30 15:36:25 | 显示全部楼层 |阅读模式

    #### 三种编码
    含字符串的结构体或api都分为宽窄版本

    宽字节  wchar_t

    窄字节 char

    兼容模式 TCHAR

    utf-8  u8"张三"

    #### CreateProcess
    ```c++
    #include <stdio.h>
    #include <windows.h>

    int main()
    {
      STARTUPINFO si;
      PROCESS_INFORMATION pi;

      ZeroMemory(&si, sizeof(si));
      ZeroMemory(&pi, sizeof(pi));

      //if (!CreateProcess(NULL, // 必须为全路径,不能加参数                       
      //  "\"C:\\Program Files\\WinHex\\WinHex64.exe\" -max",  // 可以不是全路径,有空格用引号括起来,宽字节版本下此参数不能为常量字符串
      //  NULL,
      //  NULL,
      //  FALSE,
      //  CREATE_NO_WINDOW, // CREATE_NO_WINDOW只对控制台应用有效
      //  NULL,
      //  NULL,
      //  &si,  // 这两个传出参数不填会造成C05
      //  &pi))
      //{
      //  fprintf(stderr, "create Process failed");
      //  return -1;
      //}

      // 会产生三个进程:自身,隐藏的控制台,计算器
      if (!CreateProcess("C:\\Windows\\SysWOW64\\cmd.exe", // 必须为全路径,不能加参数                  
        "/c calc",  // 可以不是全路径,有空格用引号括起来,宽字节版本下此参数不能为常量字符串
        NULL,
        NULL,
        FALSE,
        CREATE_NO_WINDOW, // 只能用于隐藏控制台
        NULL,
        NULL,
        &si,  // 这两个传出参数不填会造成C05
        &pi))
      {
        fprintf(stderr, "create Process failed");
        return -1;
      }

      WaitForSingleObject(pi.hProcess, INFINITE); // 父进程进入就绪态等待子进程执行完毕
      printf("child complete");

      CloseHandle(pi.hProcess);
      CloseHandle(pi.hThread);
        return 0;
    }


    ```



    回复

    使用道具 举报

     点击右侧快捷回复  

    本版积分规则

    ()

    GMT+8, 2020-7-10 08:59 , Processed in 0.089513 second(s), 17 queries , MemCached On.

    © 2001-2020 www.zygx8.com.

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