Well As Ive seen last post of how to make a simple Injector failed.
So I am gonna make a detailed Tut with Images and Video
on how to make a .dll Injector
What are you gonna need:
Download Free Visual Basic 2008 Express Edition, Visual Basic 2008 Express Edition Download
And the Source Code (In descripcion)
What you gonna need in VB 2008:
-1 Button
-2 Text Boxes
-1 Timer
-1 OpenFileDialog
-4 Labels
Button name: Browse...
Label Names:
1st- No Name
2nd- Status:
3rd- Process:
4th- DLL:
Well First you need to open the VB 2008 (Visual Basic)
Download Link ^ (up). Then click Create: Project... or New Project... (from Tab)
SS:
Name of Project: Injector (or what eva name you want)
Project Type: Windows Form Applicacion
Ok First make the Form1 the size you want...
Then Add the Button (Browser...)
Add the Timer and OpenFileDialog
Add 2 text boxes
Now We are gonna Enter the Codes: (As you can see the .txt file
has 4 Sections Witch are:
-Form1
-Timer
-Public Class
-Button)(never copy that only the things under that text)
Ok now the first Code "Form1" (only copy under Form1 as the video)
Code:
button1.text = "Browse..."
label1.text = "Waiting for users input..."
timer1.interval = 50
timer1.start()
Doble Click Form1 (or the name you put at the injector)
And Copy the Code ^ and CTRL + V in the Form1.
Then enter the code for the Timer:
Code:
If IO.File.Exists(OpenFileDialog1.FileName) Then
Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text)
If TargetProcess.Length = 0 Then
Me.Label1.Text = ("Waiting for " + TextBox1.Text + ".exe")
Else
Timer1.Stop()
Me.Label1.Text = "Successfully Injected!"
Call Inject()
End If
Else
End If
Doble Click the Timer to enter this code copy and then CTRL + V (paste)
Ok Next Comes the Public Class:
Code:
Private TargetProcessHandle As Integer
Private pfnStartAddr As Integer
Private pszLibFileRemote As String
Private TargetBufferSize As Integer
Public Const PROCESS_VM_READ = &H10
Public Const TH32CS_SNAPPROCESS = &H2
Public Const MEM_COMMIT = 4096
Public Const PAGE_READWRITE = 4
Public Const PROCESS_CREATE_THREAD = (&H2)
Public Const PROCESS_VM_OPERATION = (&H8)
Public Const PROCESS_VM_WRITE = (&H20)
Dim DLLFileName As String
Public Declare Function ReadProcessMemory Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpBaseAddress As Integer, _
ByVal lpBuffer As String, _
ByVal nSize As Integer, _
ByRef lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
ByVal lpLibFileName As String) As Integer
Public 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
Public Declare Function WriteProcessMemory Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpBaseAddress As Integer, _
ByVal lpBuffer As String, _
ByVal nSize As Integer, _
ByRef lpNumberOfBytesWritten As Integer) As Integer
Public 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
Public 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, _
ByRef lpThreadId As Integer) As Integer
Public Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Integer, _
ByVal bInheritHandle As Integer, _
ByVal dwProcessId As Integer) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Integer
Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandleA" ( _
ByVal hObject As Integer) As Integer
Dim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.Ex ecutablePath)
Private Sub Inject()
On Error GoTo 1 ' If error occurs, app will close without any error messages
Timer1.Stop()
Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text)
TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id)
pszLibFileRemote = OpenFileDialog1.FileName
pfnStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
TargetBufferSize = 1 + Len(pszLibFileRemote)
Dim Rtn As Integer
Dim LoadLibParamAdr As Integer
LoadLibParamAdr = VirtualAllocEx(TargetProcessHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE)
Rtn = WriteProcessMemory(TargetProcessHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0)
CreateRemoteThread(TargetProcessHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
CloseHandle(TargetProcessHandle)
1: Me.Show()
End Sub
Well This code goes en between "Public Class Form1" untill "Private Sub"
SS:
Finaly goes the Button Code:
Code:
OpenFileDialog1.Filter = "DLL (*.dll) |*.dll"
OpenFileDialog1.ShowDialog()
Dim FileName As String
FileName = OpenFileDialog1.FileName.Substring(OpenFileDialog1 .FileName.LastIndexOf("\"))
Dim DllFileName As String = FileName.Replace("\", "")
Me.TextBox2.Text = (DllFileName)
Just Click the Button (Doble Click) and enter code CTRL+ V (paste)
My Injector ScreenShoots:
Video Follow it:
https://www.virustotal.com/file-scan/...a2a-1295238104
If you need help PM me
Credits:
-iPodStepByStep (video & instruccions)
-Me (tutorial & images)