24 April, 2012

[SRC][SNP] FUD CodeDom Compiler ( RunPe ) [VB.NET]

This is a FUD ( for now ) RunPE / CodeDom Compiler, that was made by ByteBlast.
First, make a project with Form1 and add:
1 TextBox
1 Button

Code for Form1:

'Title: Self documentated CodeDom Builder || Author: ByteBlast || ►► ★ Coders | Offical .NET Help Desk ★◄◄
Imports System.Text
Imports System.CodeDom.Compiler

Public Class MainForm

    ''' Compilation [compiling] is the process of 'converting' a high level language such as VB.NET into 0's and 1's (low level language).
    ''' This method uses a series of classes and their methods available in the CodeDom.Compiler Namespace.
    ''' Path to write the executable.     ''' Syntax / Source code is just a string of text. You need to specify the code you wish to compile.     ''' 
    Private Sub Compile(ByVal ExecutableName As String, ByVal SourceCode As String)

        'The CreateProvider method returns a CodeDomProvider instance for the specificed language name.
        'This instance is later used when we have finished specifying the parmameter values.
        Dim Compiler As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic")

        'Optionally, this could be called Parameters. 
        'Think of parameters as settings or specific values passed to a method (later passsed to CompileAssemblyFromSource method).
        Dim Settings As New CompilerParameters

        'The CompileAssemblyFromSource method returns a CompilerResult that will be stored in this variable.
        Dim Result As CompilerResults = Nothing

        '- Experiment with more properties in the CompileParameter class by typing "Settings." and exploring IntelliSense.

        'Generates an executable instead of a class library.
        Settings.GenerateExecutable = True

        'Set the assembly file name / path
        Settings.OutputAssembly = ExecutableName

        'Set assemblies referenced by the source code.

        '/target:library, /target:win, /target:winexe
        Settings.CompilerOptions = " /target:winexe"

        'Determine if you want to treat all warnings as errors (ever noticed the green underscore in the Visual Studio? That indicates a warning).
        Settings.TreatWarningsAsErrors = False

        'Read the documentation for the result again variable.
        'Calls the CompileAssemblyFromSource that will compile the specified source code using the parameters specified in the settings variable.
        Result = Compiler.CompileAssemblyFromSource(Settings, SourceCode)

        'Determines if we have any errors when compiling if so loops through all of the CompileErrors in the Reults variable and displays their ErrorText property.
        If (Result.Errors.Count <> 0) Then
            MessageBox.Show("Exception Occured!", "Whops!", MessageBoxButtons.OK, MessageBoxIcon.Information)
            For Each E As CompilerError In Result.Errors
        End If

    End Sub

    Private Sub BuildButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Source code is located in Resources.
        'Obtain the source and replace WEBSITE_URL with the specified URL by the user. [Process.Start("[WEBSITE_URL]")].
        Dim Source As String = My.Resources.Source.Replace("[WEBSITE_URL]", TextBox1.Text)

        'Displays a SaveFileDialogue, determines if the user clicked ok [error trap] and calls the user defined compile method.
        Dim S As New SaveFileDialog
        With S
            .Filter = "Executable (*.exe)|*.exe"
            If (.ShowDialog() = DialogResult.OK) Then
                Compile(.FileName, Source)
            End If
        End With
    End Sub
    Private Function ConvertBytesToString(ByVal bytes As Byte()) As String
        Return ASCIIEncoding.ASCII.GetString(bytes)
    End Function
    Private Function ConvertStringToBytes(ByVal str As String) As Byte()
        Return ASCIIEncoding.ASCII.GetBytes(str)
    End Function
End Class

Then add to resources "Source.txt", that contains:

Imports System.Diagnostics

Module Module1

    Sub Main()
    End Sub

End Module