[Tutorial] Crear un injector de .dll
-
[alinear-centro]Bueno, aquí os traigo una guia sobre como hacer una inkector de .dll
Vamos por pasos ...
-
Lo primero que hay que hacer es crear un nuevo projecto en el visual basic (ArchivosNuevo proyecto)
-
Les aparecera una ventana donde te muestran algunas plantillas, en el caso de nuestra apliacion le daremos Aplicacion de Windows Forms, el nombre de la aplicacion por defecto aparece WindowsApplication1 eso lo pueden cambiar a su gusto; ejempo:Injector de fulanito xP y acontinuacion le dan en Aceptar.
- Acontinuacion veremos un formulario de windows que por defecto tiene de nombre Form1, (se puede cambiar esto dandole en propiedades y cambiandole el valor text al que ustedes quieran), Vamos a agregar unos cuantos controles a nuestro formulario.
***ListBox **(ListBox1)
* TextBox (Textbox1)
* ****Label ****(Label1, Label2, Label3, Label4)
*Button (Button1, Button2)
* Timer (Timer1)
* OpenFileDialog (OpenFileDialog1)4)Nombrar los controles de la siguiente manera como muestro en la imagen
* Agregen y acomoden los controles de la siguiente manera:
-
En el formulario de damos Clic Derecho y Ver Codigo (Vamos a declarar algunas Funciones y variables), Pegan despues del Public Class Form1 esto:
Private TargetProcessHandle As Integer
Private pfnStartAddr As Integer
Private pszLibFileRemote As String
Private TargetBufferSize As IntegerPublic 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 IntegerPublic Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
ByVal lpLibFileName As String) As IntegerPublic 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 IntegerPublic 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 IntegerPublic Declare Function GetProcAddress Lib "kernel32" ( _
ByVal hModule As Integer, ByVal lpProcName As String) As IntegerPrivate Declare Function GetModuleHandle Lib "Kernel32" Alias "GetModuleHandleA" ( _
ByVal lpModuleName As String) As IntegerPublic 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 IntegerPublic Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Integer, _
ByVal bInheritHandle As Integer, _
ByVal dwProcessId As Integer) As IntegerPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntegerPrivate Declare Function CloseHandle Lib "kernel32" Alias "CloseHandleA" ( _
ByVal hObject As Integer) As IntegerDim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)
Dim dllproc As String = "0"
Dim aa As String = "0"
* En el codigo anterior hacemos llamado a las funciones de la libreria Kernel32 que nos permitira entrar en un proceso y hacer injecciones en la memoria, la variable dllproc es la ruta del dll que vamos a injectar y la aa una variable para controlar un timer que ahoras les mostrare.
- Ya que nuestro injector va a constar con un pequeño Log de eventos les voy a mostrar como hacer algo con eso , hacendoble clic encima del formulario para que les muestre el codigo en el evento **Load **
* Ahi donde esta la linea roja pegan lo siguiente
ListBox1.Items.Add("Iniciado Injector..." ) ListBox1.Items.Add("Indicar proceso" ) ListBox1.Items.Add("Seleccionar DLL a injectar" ) ListBox1.Items.Add(".........................." )
-
Vamos a agregar el codigo para abrir el dll (pues que el usuario lo busque en su pc), Le damos doble click el Button2 (que le pusimos Examinar), pegamos el siguiente codigo dentro del evento click
OpenFileDialog1.ShowDialog()
* Ahora le damos doble click al OpenFileDialog1 (que esta al lado del timer)
Y nos aparece el eventoFileOk dentro de esa declaracion pegamos el siguiente codigo:
dllproc = OpenFileDialog1.FileName Label4.Text = OpenFileDialog1.SafeFileName 'KillerPhantom t!
-
Llegamos a una parte interesante, vamos a agregar el codigo del Timer1, para eso repetimos lo mismo dar doble click y nos aparecera el evento Tick y pegamos el siguiente codigo dentro de ese evento
If IO.File.Exists(dllproc) Then
Dim TargetProcess As Process() = Process.GetProcessesByName(TextBox1.Text)
If TargetProcess.Length = 0 Then
If aa = "0" Then
ListBox1.Items.Add("Esperando a: " + TextBox1.Text + ".exe" )
aa = "1"
End If
Else
Timer1.Stop()
ListBox1.Items.Add("Injectando.." )
Call Inject()
End
End
End If
Else
ListBox1.Items.Add("Error: Dll no encontrado" )
End If
* El codigo anterior verifica si nustro Dll Existe con el codigoIO.File.Exists si el valor que devuelve es True osea verdadero verifica si el proceso tambien lo es con el codigo Process.GetProcessesByName, si todo esto se cumple el timer se detiene y llama a la instrucion inject (Call Inject()) que la veremos a continuacion!
- Vamos a crear la instruccion Inject! para eso vemos el codigo fuente de nuestra aplicacion sea que le des doble click en el formilario o en la pestaña **form1.vb **
* Escribimos despues de un End Sub y antes de que comienze un Private Sub lo siguiente
Private Sub Inject() On Error GoTo 1 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 = dllproc 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) End 'killerphantom T! CloseHandle(TargetProcessHandle) 1: End End Sub
9).. Ya casi terminamos.. ahora vamos a darle el codigo a nuestroButton1 (Injectar), repetimos lo mismo darle doble click y en evento click.. pegamos lo siguiente
If TextBox1.Text.Length = 0 Then ListBox1.Items.Add("Por favor seleccione un proceso.." ) Else If dllproc = "0" Then ListBox1.Items.Add("No se ha encontrado el DLL.." ) Else ListBox1.Items.Add("Dll Encontrado.." ) Timer1.Start() End If End If
* Esto nos verificara si en el cuadro de texto se ha escrito un proceso y si existe el dll.. si devuelve valores True.. Hace correr el Timer1 ...
Bueno amigos.. Creo que ya terminamos.
Un saludo a todos![/alinear-centro]
PD: Si tienen alguna duda, exponerla y os la resuelvo
PD: * Algunos codigos del injector a crear cuando generen la aplicacion puede que los detecte como virus, y algunos codes son de
Taringa! -
-
**Oye, si copiastes la guía tal cual la de Taringa _xD_ **
-
y esto que injecta que modifica sirve para hakear juegos ????? _xD_
Mundo de los .Dll los Desconoscos I am :-n00b con los .dll :mem11:
-
@kjy18 said:
y esto que injecta que modifica sirve para hakear juegos ????? _xD_
Mundo de los .Dll los Desconoscos I am :-n00b con los .dll :mem11:
jajaja, bueno esto sirve para injectar .dll, que es "injectar .dll"? Pues eria una cosa como ejecutar el hack, y las .dll pueden servidr para diversas cosas, y una de ellas es para hackear juegos
-
**Oye, probé a hacerlo con el código este, y da un error en el código del Timer, el error la da la función
Call Inject ()
Porque inject no se ha declarado :miau:
P.D: Arreglado**
-
@Enozke said:
jajaja, bueno esto sirve para injectar .dll, que es "injectar .dll"? Pues eria una cosa como ejecutar el hack, y las .dll pueden servidr para diversas cosas, y una de ellas es para hackear juegos
Si no sabes mejor preguntale a san google
Para los sistemas operativos Microsoft Windows que se enumeran en la sección "Se refiere a", gran parte de la funcionalidad del sistema operativo proporciona bibliotecas de vínculos dinámicos (DLL). Además, cuando ejecute un programa en uno de estos sistemas operativos Windows, archivos DLL puede proporcionar gran parte de la funcionalidad del programa. Por ejemplo, algunos programas pueden contener muchos módulos diferentes y cada módulo del programa es contenido y distribuido en archivos DLL.El uso de archivos DLL ayuda a promover diseño modular de código, reutilización de código, uso de memoria eficaz y reduce el espacio en disco. Por tanto, el sistema operativo y los programas de cargan más rápidamente, ejecutan más rápidamente y tardar menos espacio en disco en el equipo.
Cuando un programa utiliza una DLL, un problema que se denomina dependencia puede provocar que el programa no se ejecuten. Cuando un programa utiliza una DLL, se crea una dependencia. Si otro programa, se sobrescribe y interrumpe esta dependencia, no puede ejecutar correctamente el programa original.
Despues de saber eso es facil deducir que al injectar una dll se modula el codigo del metin y lo hace parte de el osea lo integra asiendo una parte de el haci el Antihack no lo detectara ya que no es un programa externo sino interno -
@archii said:
@Enozke said:
jajaja, bueno esto sirve para injectar .dll, que es "injectar .dll"? Pues eria una cosa como ejecutar el hack, y las .dll pueden servidr para diversas cosas, y una de ellas es para hackear juegos
Si no sabes mejor preguntale a san google
Para los sistemas operativos Microsoft Windows que se enumeran en la sección "Se refiere a", gran parte de la funcionalidad del sistema operativo proporciona bibliotecas de vínculos dinámicos (DLL). Además, cuando ejecute un programa en uno de estos sistemas operativos Windows, archivos DLL puede proporcionar gran parte de la funcionalidad del programa. Por ejemplo, algunos programas pueden contener muchos módulos diferentes y cada módulo del programa es contenido y distribuido en archivos DLL.El uso de archivos DLL ayuda a promover diseño modular de código, reutilización de código, uso de memoria eficaz y reduce el espacio en disco. Por tanto, el sistema operativo y los programas de cargan más rápidamente, ejecutan más rápidamente y tardar menos espacio en disco en el equipo.
Cuando un programa utiliza una DLL, un problema que se denomina dependencia puede provocar que el programa no se ejecuten. Cuando un programa utiliza una DLL, se crea una dependencia. Si otro programa, se sobrescribe y interrumpe esta dependencia, no puede ejecutar correctamente el programa original.
Despues de saber eso es facil deducir que al injectar una dll se modula el codigo del metin y lo hace parte de el osea lo integra asiendo una parte de el haci el Antihack no lo detectara ya que no es un programa externo sino internoSi le pongo eso a alguien que no sabe lo que es una .dll, como se va a enterar _xD_