资源共享吧|易语言论坛|逆向破解教程|辅助开发教程|网络安全教程|www.zygx8.com|我的开发技术随记

 找回密码
 注册成为正式会员
查看: 929|回复: 0

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

[复制链接]

5

主题

149

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
79
积分
155
贡献
0
在线时间
42 小时
注册时间
2018-9-5
最后登录
2024-8-27

终身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;
}


```



回复

使用道具 举报

 点击右侧快捷回复  

本版积分规则

小黑屋|资源共享吧 ( 琼ICP备2023000410号-1 )

GMT+8, 2024-11-21 23:05 , Processed in 0.048137 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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