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; int file0_size; STARTUPINFO si; PROCESS_INFORMATION pi; int main(int argc, char **argv){ ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); FILE *file0 = fopen("./input.exe","rb"); if(file0 == NULL){printf("fopen file0 error"); getchar(); return 0;} fseek(file0, 0, SEEK_END); file0_size = ftell(file0); rewind(file0); file0_buffer = (char*)malloc(file0_size); fread(file0_buffer, sizeof(char), file0_size, file0); fclose(file0); CreateProcess(NULL, NULL, NULL, NULL, TRUE, CREATE_DEFAULT_ERROR_MODE, &file0_buffer, NULL, &si, &pi); getchar(); return 0; } |
看这个:从内存缓冲区创建进程