Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2011
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.84 KB | None | 0 0
  1. STARTUPINFO cmdProcess;
  2. PROCESS_INFORMATION cmdInfo;
  3. char cmd[] = "whoami";
  4. char recvd[1048] = {0};
  5. HANDLE hSTD_OUT_READ;
  6. HANDLE hSTD_OUT_WRITE;
  7. HANDLE hSTD_IN_READ;
  8. HANDLE hSTD_IN_WRITE;
  9. void CmdPipe();
  10. void WriteInput();
  11. void ReadOutput();
  12. int main ()
  13. {
  14.     CmdPipe();
  15.     return 1;
  16.  
  17. }
  18. void CmdPipe ()
  19. {
  20.    
  21.  
  22.     BOOL   bSUCCESS = FALSE;
  23.     SECURITY_ATTRIBUTES saAttr;
  24.     saAttr.nLength = sizeof(saAttr);
  25.     saAttr.bInheritHandle = TRUE;
  26.     saAttr.lpSecurityDescriptor = NULL;
  27.     CreatePipe(&hSTD_OUT_READ,&hSTD_OUT_WRITE,&saAttr,0);
  28.     SetHandleInformation(hSTD_OUT_READ, HANDLE_FLAG_INHERIT, 0);
  29.     CreatePipe(&hSTD_IN_READ,&hSTD_IN_WRITE,&saAttr,0);
  30.     SetHandleInformation(hSTD_IN_WRITE, HANDLE_FLAG_INHERIT, 0);
  31.     memset(&cmdProcess,0,sizeof(cmdProcess));
  32.     memset(&cmdInfo,0,sizeof(cmdInfo));
  33.     cmdProcess.cb = sizeof(cmdProcess);
  34.     cmdProcess.dwFlags = STARTF_USESTDHANDLES;
  35.     cmdProcess.hStdError = hSTD_OUT_WRITE;
  36.     cmdProcess.hStdOutput = hSTD_OUT_WRITE;
  37.     cmdProcess.hStdInput = hSTD_IN_READ;
  38.     CreateProcess(NULL,"cmd.exe",NULL,NULL,TRUE,0,NULL,NULL,&cmdProcess,&cmdInfo);
  39.     WriteInput();
  40.     ReadOutput();
  41.     system("pause");
  42.    
  43.    
  44.  
  45. }
  46.  
  47. void ReadOutput()
  48. {
  49.  
  50.     DWORD dwRead, dwWritten;
  51.     CHAR chBuf[512] = {0};
  52.     BOOL bSuccess = FALSE;
  53.     HANDLE hParentStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  54.     CloseHandle(hSTD_OUT_WRITE);   
  55.     for (;;)
  56.     {
  57.         bSuccess = ReadFile(hSTD_OUT_READ, chBuf, sizeof(chBuf), &dwRead, NULL);
  58.         if( ! bSuccess || dwRead == 0 ) break;
  59.  
  60.         bSuccess = WriteFile(hParentStdOut, chBuf,
  61.             dwRead, &dwWritten, NULL);
  62.         if (! bSuccess ) break;
  63.     }
  64. }
  65.  
  66. void WriteInput()
  67. {
  68.     DWORD dwRead, dwWritten;
  69.     CHAR chBuf[512] = "whoami";
  70.     BOOL bSuccess = FALSE;
  71.     dwRead = 0;
  72.     for (;;)
  73.     {
  74.  
  75.         bSuccess = WriteFile(hSTD_IN_WRITE, chBuf, sizeof(chBuf), &dwWritten, NULL);
  76.         if ( ! bSuccess ) break;
  77.     }
  78.     CloseHandle(hSTD_IN_WRITE);
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement