Wel people been asking me/PMing me saying whats my Injector source well first its not my its Codemunkies anyone that wants it can have it but put my in credits if you decide to use it
What you"ll Need:
- 1 x TextBox
- 4 x Buttons
- 1 x ListBox
- 3 x Label
- 2 x Radio Button
- 1 x CheckBox
- 1 x OpenFileDialog
- 2 x Timer (Set both to interval 50, and enable the second one only)
- 1 x GroupBox (Not compulsory)
Full Code:
Public Class Form1 Dim dlls As New Dictionary(Of String, String) Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Integer, ByVal lpAddress As Integer, ByVal dwSize As Integer, ByVal flAllocationType As Integer, ByVal flProtect As Integer) As Integer Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByVal lpBuffer() As Byte, ByVal nSize As Integer, ByVal lpNumberOfBytesWritten As UInteger) As Boolean Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Integer, ByVal lpProcName As String) As Integer Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Integer Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Integer, ByVal lpThreadAttributes As Integer, ByVal dwStackSize As Integer, ByVal lpStartAddress As Integer, ByVal lpParameter As Integer, ByVal dwCreationFlags As Integer, ByVal lpThreadId As Integer) As Integer Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Integer, ByVal dwMilliseconds As Integer) As Integer Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer Private Function Inject(ByVal pID As Integer, ByVal dllLocation As String) As Boolean If IntPtr.Size = 8 Then Throw New ArgumentException("Please make sure this program is compiled as x86, not x64. Memory functions don't work so well otherwise.") '//check our project is compiled to x86, otherwise everything will run fine, but nothing will happen. Dim hProcess As Integer = OpenProcess(&H1F0FFF, 1, pID) '//copied the access value /tehe If hProcess = 0 Then Return False '//check that we managed to obtain a handle, if we didn't there is no point continuing. Dim dllBytes As Byte() = System.Text.Encoding.ASCII.GetBytes(dllLocation) Dim allocAddress As Integer = VirtualAllocEx(hProcess, 0, dllBytes.Length, &H1000, &H4) If allocAddress = Nothing Then Return False '//if the memory allocation failed then we gotta quit. Dim kernelMod As Integer = GetModuleHandle("kernel32.dll") '//kernel holds the LoadLibrary function, and its loaded to a constant address space, so we can find the load address in our own processes memory and assume it will be the same in the target process. Dim loadLibAddr = GetProcAddress(kernelMod, "LoadLibraryA") '//find the address of LoadLibrary in kernel. If kernelMod = 0 OrElse loadLibAddr = 0 Then Return False WriteProcessMemory(hProcess, allocAddress, dllBytes, dllBytes.Length, 0) '// write the dll location as bytes to the process memory in the location we allocated earlier, we'll use this address when we call LoadLibrary so it knows where to load the dll from Dim libThread As Integer = CreateRemoteThread(hProcess, 0, 0, loadLibAddr, allocAddress, 0, 0) '//call the LoadLibrary function in the target process and pass the location of our DLL to it (actually, we just pass the address to where it should read it from, it does the rest) If libThread = 0 Then Return False '// couldn't create the thread, quit now Else WaitForSingleObject(libThread, 5000) '//give the process 5 seconds to finish using the LoadLibrary function if it needs it CloseHandle(libThread) '//close our handle to the thread. End If CloseHandle(hProcess) '//close our handle to the process Label3.Text = "DLL injected successfully." If CheckBox1.Checked = True Then Me.Close() End If Label3.ForeColor = Color.Green Return True End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If My.Settings.Inject = "auto" Then RadioButton1.Checked = True ElseIf My.Settings.Inject = "manual" Then RadioButton2.Checked = True Else RadioButton1.Checked = True End If End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then My.Settings.Close = 1 Else My.Settings.Close = 0 End If My.Settings.Save() My.Settings.Reload() If My.Settings.Close = 1 Then CheckBox1.Checked = True Else CheckBox1.Checked = False End If End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged My.Settings.Inject = "auto" My.Settings.Save() My.Settings.Reload() Button3.Enabled = False Timer1.Start() End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged My.Settings.Inject = "manual" My.Settings.Save() My.Settings.Reload() Button3.Enabled = True Timer1.Stop() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If ListBox1.Items.Count > 0 Then Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text) If TargetProcess.Length = 0 Then Label3.Text = ("Waiting for " + TextBox1.Text + ".exe") Label3.ForeColor = Color.Red Else Dim ProcID As Integer = Process.GetProcessesByName(TextBox1.Text)(0).Id Timer1.Stop() Timer2.Stop() For Each inj As KeyValuePair(Of String, String) In dlls Inject(ProcID, inj.Value) Next End If End If End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick If TextBox1.Text = "" Then Label3.Text = "Waiting for process to be set." Label3.ForeColor = Color.Red Timer1.Stop() ElseIf ListBox1.Items.Count = 0 Then Label3.Text = "Waiting for DLL path." Label3.ForeColor = Color.Red Timer1.Stop() Else Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text) If TargetProcess.Length = 0 Then Label3.Text = ("Waiting for " + TextBox1.Text + ".exe") Label3.ForeColor = Color.Red Else If RadioButton1.Checked = True Then Timer1.Start() End If End If End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If ListBox1.Items.Count > 0 Then If TextBox1.Text <> "" Then Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text) If TargetProcess.Length = 0 Then MsgBox(TextBox1.Text + ".exe is not running.", MsgBoxStyle.Critical, "Error") Else Timer1.Stop() Dim ProcID As Integer = Process.GetProcessesByName(TextBox1.Text)(0).Id For Each inj As KeyValuePair(Of String, String) In dlls Inject(ProcID, inj.Value) Next End If Else MsgBox("You haven't specificed a process.", MsgBoxStyle.Critical, "Error") End If Else MsgBox("You need to select a dll file to inject.", MsgBoxStyle.Critical, "Error") End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFileDialog1.Filter = "DLL (*.dll) |*.dll" OpenFileDialog1.ShowDialog() End Sub Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk Dim FileName As String = OpenFileDialog1.FileName.Substring(OpenFileDialog1.FileName.LastIndexOf("\")) Dim DllFileName As String = FileName.Replace("\", "") ListBox1.Items.Add(DllFileName) dlls.Add(DllFileName, OpenFileDialog1.FileName) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If ListBox1.SelectedIndex >= 0 Then OpenFileDialog1.Reset() dlls.Remove(ListBox1.SelectedItem) For i As Integer = (ListBox1.SelectedItems.Count - 1) To 0 Step -1 Dim i2 As Integer = i + 2 ListBox1.Items.Remove(ListBox1.SelectedItems(i)) Next End If End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click ListBox1.Items.Clear() dlls.Clear() End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click MsgBox("Made by bigdaddy135 / coded by Dark Side") End Sub End Class
0 komentar:
Posting Komentar