C – ProcessCreation Problems with WinAPI
我正在尝试将文件打开到文件缓冲区,然后用它创建一个新进程。我试图 ASM 转到文件的开头,但遗憾的是由于 windows 它实际上不会做任何事情,因为所有信息都在 windows 可执行文件的顶部。所以我尝试创建一个新进程,但我对 windows API 并不擅长。谁能告诉我我做错了什么?
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <stdio.h>
#include <windows.h> #include <WinBase.h> char *file0_buffer; STARTUPINFO si; int main(int argc, char **argv){ ZeroMemory( &si, sizeof(si) ); FILE *file0 = fopen(“./input.exe”,“rb”); fseek(file0, 0, SEEK_END); file0_buffer = (char*)malloc(file0_size); CreateProcess(NULL, NULL, NULL, NULL, TRUE, CREATE_DEFAULT_ERROR_MODE, &file0_buffer, NULL, &si, &pi); getchar(); return 0; |
- 您可以尝试 GetLastError 找出系统报告的错误类型。我还没有看到将第一个和第二个参数都设置为 NULL 的 CreateProcess 的使用。
- 什么是错的就是一切。不支持您尝试的操作。
CreateProcess的第7个参数用于指定新进程中的环境变量。
看这个:从内存缓冲区创建进程
- 这应该只是一个”接近重复”的建议,而不是答案。
来源:https://www.codenong.com/24150113/