資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網絡安全教程|hailashopping.com|我的開發(fā)技術隨記

 找回密碼
 注冊成為正式會員
查看: 1452|回復: 0
打印 上一主題 下一主題

[C/C++] 全能逆向安全班1CreateProcess筆記

[復制鏈接]

5

主題

149

帖子

0

精華

終身高級VIP會員

Rank: 7Rank: 7Rank: 7

資源幣
79
積分
155
貢獻
0
在線時間
42 小時
注冊時間
2018-9-5
最后登錄
2024-8-27

終身VIP會員

跳轉到指定樓層
樓主
發(fā)表于 2020-6-30 15:36:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

#### 三種編碼
含字符串的結構體或api都分為寬窄版本

寬字節(jié)  wchar_t

窄字節(jié) 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",  // 可以不是全路徑,有空格用引號括起來,寬字節(jié)版本下此參數不能為常量字符串
  //  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",  // 可以不是全路徑,有空格用引號括起來,寬字節(jié)版本下此參數不能為常量字符串
    NULL,
    NULL,
    FALSE,
    CREATE_NO_WINDOW, // 只能用于隱藏控制臺
    NULL,
    NULL,
    &si,  // 這兩個傳出參數不填會造成C05
    &pi))
  {
    fprintf(stderr, "create Process failed");
    return -1;
  }

  WaitForSingleObject(pi.hProcess, INFINITE); // 父進程進入就緒態(tài)等待子進程執(zhí)行完畢
  printf("child complete");

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


```



回復

使用道具 舉報

 點擊右側快捷回復  

本版積分規(guī)則

小黑屋|資源共享吧 ( 瓊ICP備2023000410號-1 )

GMT+8, 2025-8-30 18:40 , Processed in 0.047400 second(s), 13 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表