[Tutorial] Crear un injector de .dll

Topic created · 8 Mensajes · 4990 Visitas
  • [alinear-centro]Bueno, aquí os traigo una guia sobre como hacer una inkector de .dll

    Vamos por pasos ...

    1. Lo primero que hay que hacer es crear un nuevo projecto en el visual basic (ArchivosNuevo proyecto)

    2. 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.

    1. 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:

    1. 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 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)

      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.

    1. 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(".........................." ) 
    
    1. 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! 
    
    1. 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!

    1. 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_ **

  • @DjZed said:

    **Oye, si copiastes la guía tal cual la de Taringa _xD_ **

    En realidad es dmx, lo que pasa que los codes que coji de alli no se ven aquí, ahora pongo...

    EDIT: Ves? nose porque pero se queda en negro :S

  • 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 interno 😉

    Si le pongo eso a alguien que no sabe lo que es una .dll, como se va a enterar _xD_