allendoyle 发表于 2020-6-30 15:36:25

全能逆向安全班1CreateProcess笔记


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

宽字节wchar_t

窄字节 char

兼容模式 TCHAR

utf-8u8"张三"

#### 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;
}


```



页: [1]
查看完整版本: 全能逆向安全班1CreateProcess笔记