|
远程线程注入版获取SYSTEM权限(9) goto InjectCodeToProcessByName_exit; } ProcessNameW = ( WCHAR * )HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, i * sizeof( WCHAR ) ); if ( NULL == ProcessNameW ) { PrintWin32ErrorCUI( "HeapAlloc() failed", ERROR_NOT_ENOUGH_MEMORY ); goto InjectCodeToProcessByName_exit; } if ( 0 == MultiByteToWideChar ( CP_ACP, 0, ProcessName, ( int )( strlen( ProcessName ) + 1 ), ProcessNameW, i ) ) { PrintWin32ErrorCUI( "MultiByteToWideChar() failed [1]", GetLastError() ); goto InjectCodeToProcessByName_exit; } wprintf( L"%s\n", ProcessNameW ); if ( 0 == ( Pid = GetPidFromProcessName( ProcessNameW ) ) ) { fprintf( stderr, "GetPidFromProcessName() failed\n" ); goto InjectCodeToProcessByName_exit; } InjectCodeToProcessByName_exit: if ( NULL != ProcessNameW ) { HeapFree( GetProcessHeap(), 0, ProcessNameW ); ProcessNameW = NULL; } return( Pid ); } /* end of PnameToPid */ static void PrintWin32ErrorCUI ( char *message, DWORD dwMessageId ) { char *errMsg; FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwMessageId, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), ( LPTSTR )&errMsg, 0, NULL ); fprintf( stderr, "%s: %s", message, errMsg ); LocalFree( errMsg ); return; } /* end of PrintWin32ErrorCUI */ static void PrintZwErrorCUI ( char *message, NTSTATUS status )
|