

¿ Que vamos a hacer en este tutorial ?

En este tutorial vamos a aprender a hacer un injector de librerías (.dll), y si les viene la pregunta ¿y a mi para que me sirve un injector de librerias? , Pues hoy en dia muchos de estos inyectores se usan para realizar inyecciones en juegos para lograr darles hacks, usar wall hacks ,etc.
El codigo del tutorial o los Sources , fueron tomados de otra web y editados por mi para traducir el lenguaje, así que legalmente el codigo esta configurado por mi

¿ Que vamos a nesesitar ?

Vamos a nesesitar simplemente el VB 2010 ( Visual Basic 2010 ) y nada más.

Empezando ha hacer el Injector...

Primero que nada hacemos un windows Form con el nombre de Injector Si no saves hacer un windows Form es simple, Damos a: File>New Proyect>Windows Form Aplication>Nombre ( Abajo ) Injector>OK.
Una vez que hayamos echo eso insertaremos del ToolBox:
2 Textboxes
1 Button
1 Timer
1 OpenFileDialog
4 Labels

Aplicando Codigos :

Alomejor esta sea la parte más dificil pero no lo sera ya que tienen a un Sensei del VB 2010 ( Un maestro no Un super profreccional )
Una vez que tengamos todo eso realzisado lo acomodaremos de la siguiente forma :

Imagen creada por mi é.é Nota: en donde se ve en la imagen que dice Label 4 editenlan y que sea allí la 1, ya sea que muevan los labels por que si no no foncionara.
y Ahora si a insertar codigo .....
1.-Damos doble click al form1 y ponemos :
button1.text = "Buscar..."
label1.text = "Espreando // Code By AstrosTutoriales..."
timer1.interval = 50
timer1.start()
2.- Una vez echo eso nos regresamos al diseño del programa.
3.- Nos vamos al timer1 dando doble click y pegamos:
If IO.File.Exists(OpenFileDialog1.FileName) Then
End If
Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text)
If TargetProcess.Length = 0 Then
Me.Label1.Text = ("Espreando a: " + TextBox1.Text + ".exe"
Else
Timer1.Stop()
Me.Label1.Text = "Injección completada!!"
Call Inject()
End If
4.- Ahora que ya tengamos esto pegado en el timer1 nos vamos a ir al codigo y buscamos donde dice : Public Class Form1 y pegaran lo siguiente:
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.ExecutablePath)
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
5.- Ahora nos vamos por ultimo al boton que dice Buscar, damos doble click y pegamos lo siguiente:
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)

Resultados:

Finalmente al depurar la aplicacion no nos dara problemas , salvo el antivirus que puede marcarla como virus pero tu la hicistes así que no hay problemas, y ahora el resultado es así:

SI tienen un problema o si nesesitan ayuda para un proyecto no duden en decirme


