elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Problema con "Inyeccion dll en VB"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con "Inyeccion dll en VB"  (Leído 8,075 veces)
TooRDJ

Desconectado Desconectado

Mensajes: 12



Ver Perfil WWW
Problema con "Inyeccion dll en VB"
« en: 23 Julio 2011, 06:05 am »

Hola, un saludo a TODOS! como el topic lo indica. Quisiera Inyectar un DLL a un proceso. El src lo encontré en la red, hice algunas modificaciones a mis necesidades y lo tengo ya casi completo ejemplo "inyeccion.exe" el DLL es aparte.. La función del DLL, es que después de la Inyeccion al proceso indicado, abra una ventana con una lista de configuraciones (on/off, menu etc...)

Al abrir el "inyeccion.exe" queda en espera del proceso que voy a inyectar.. Abro la aplicación, "inyeccion.exe" ve el proceso y Inyecta el DLL. En el momento de la Inyeccion el DLL muestra su ventana de configuración, sin embargo al terminar de abrir la aplicación esta ventana de configuración se cierra :( al igual que el "inyeccion.exe".

He revisado el code varias veces, pero no doy. aqui dejo la función de la inyeccion a ver que faltara

Código
  1.    Private Sub InjectAr()
  2.        On Error GoTo 1
  3.        Timer1.Stop()
  4.        Dim TargetProcess As Process() = Process.GetProcessesByName(PrOCeSo)
  5.        TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id)
  6.        pszLibFileRemote = dllproc
  7.        pfnStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
  8.        TargetBufferSize = 1 + Len(pszLibFileRemote)
  9.        Dim Rtn As Integer
  10.        Dim LoadLibParamAdr As Integer
  11.        LoadLibParamAdr = VirtualAllocEx(TargetProcessHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE)
  12.        Rtn = WriteProcessMemory(TargetProcessHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0)
  13.        CreateRemoteThread(TargetProcessHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
  14.        End
  15.        'CloseHandle(TargetProcessHandle)
  16. 1:      ListBox1.Items.Add("Error en la Injeccion")
  17.    End Sub
  18.  

"PrOCeSo" es variable. Espero me puedan ayudar! De ante mano Muchas Gracias!  ;)


« Última modificación: 23 Julio 2011, 16:32 pm por raul338 » En línea

--=[ Solo los débiles sucumben, no por ser débiles, sino por ignorar lo que son ]=--
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Problema con "Inyeccion dll en VB"
« Respuesta #1 en: 25 Julio 2011, 16:10 pm »

No estoy seguro de por qué falla, ya que he hecho eso muy pocas veces y hace mucho tiempo. De todos modos si te puedo decir que está mal esteticamente y eso puede traer problemas al depurar.

Por ejemplo PrOCeSo podría haber sido _PrOCeSo o m_PrOCeSo con eso no tienes que decir que es una variable ya que se supone que es un field de la clase en donde estás ahora. Aunque de todos modos yo la hubiese pasado como parámetro de ese método.

On Error GoTo 1? por qué no usar Try Catch :S Posiblemente te falle ahi y no tengas ni idea de que es lo que pase por eso.

Pon un manejo de excepciones y escribe un log con los errores.

Un saludo!


En línea

TooRDJ

Desconectado Desconectado

Mensajes: 12



Ver Perfil WWW
Re: Problema con "Inyeccion dll en VB"
« Respuesta #2 en: 26 Julio 2011, 07:09 am »

[D4N93R], Gracias por tu respuesta. Te comento que al momento de depurar no me arroja ningun error (0 errores, 0 advertencias, 0 mensajes).

Al depurar obtengo "inyecta.exe" lo ejecuto y queda en espera del "proceso.exe".. abro el programa "proceso.exe" y el "inyecta.exe" hace su trabajo, y me muestra dicha ventana de configuración, pero se cierra antes de que abra completamente el "proceso.exe", y no debe ser así, se tiene que mantener activo.

También he probado con abrir primero el "proceso.exe" y después el "inyecta.exe" pero en este caso se cierra "inyecta.exe" sin mostrar nada.

Dejo el src completo por si acaso:

Código
  1. Imports System.IO
  2. Imports Microsoft.Win32
  3.  
  4. Public Class Form1
  5.    Private TargetProcessHandle As Integer
  6.    Private pfnStartAddr As Integer
  7.    Private pszLibFileRemote As String
  8.    Private TargetBufferSize As Integer
  9.  
  10.    Public Const PROCESS_VM_READ = &H10
  11.    Public Const TH32CS_SNAPPROCESS = &H2
  12.    Public Const MEM_COMMIT = 4096
  13.    Public Const PAGE_READWRITE = 4
  14.    Public Const PROCESS_CREATE_THREAD = (&H2)
  15.    Public Const PROCESS_VM_OPERATION = (&H8)
  16.    Public Const PROCESS_VM_WRITE = (&H20)
  17.  
  18.    Public Declare Function ReadProcessMemory Lib "kernel32" ( _
  19.    ByVal hProcess As Integer, _
  20.    ByVal lpBaseAddress As Integer, _
  21.    ByVal lpBuffer As String, _
  22.    ByVal nSize As Integer, _
  23.    ByRef lpNumberOfBytesWritten As Integer) As Integer
  24.  
  25.    Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
  26.    ByVal lpLibFileName As String) As Integer
  27.  
  28.    Public Declare Function VirtualAllocEx Lib "kernel32" ( _
  29.    ByVal hProcess As Integer, _
  30.    ByVal lpAddress As Integer, _
  31.    ByVal dwSize As Integer, _
  32.    ByVal flAllocationType As Integer, _
  33.    ByVal flProtect As Integer) As Integer
  34.  
  35.    Public Declare Function WriteProcessMemory Lib "kernel32" ( _
  36.    ByVal hProcess As Integer, _
  37.    ByVal lpBaseAddress As Integer, _
  38.    ByVal lpBuffer As String, _
  39.    ByVal nSize As Integer, _
  40.    ByRef lpNumberOfBytesWritten As Integer) As Integer
  41.  
  42.    Public Declare Function GetProcAddress Lib "kernel32" ( _
  43.    ByVal hModule As Integer, ByVal lpProcName As String) As Integer
  44.  
  45.    Private Declare Function GetModuleHandle Lib "Kernel32" Alias "GetModuleHandleA" ( _
  46.    ByVal lpModuleName As String) As Integer
  47.  
  48.    Public Declare Function CreateRemoteThread Lib "kernel32" ( _
  49.    ByVal hProcess As Integer, _
  50.    ByVal lpThreadAttributes As Integer, _
  51.    ByVal dwStackSize As Integer, _
  52.    ByVal lpStartAddress As Integer, _
  53.    ByVal lpParameter As Integer, _
  54.    ByVal dwCreationFlags As Integer, _
  55.    ByRef lpThreadId As Integer) As Integer
  56.  
  57.    Public Declare Function OpenProcess Lib "kernel32" ( _
  58.    ByVal dwDesiredAccess As Integer, _
  59.    ByVal bInheritHandle As Integer, _
  60.    ByVal dwProcessId As Integer) As Integer
  61.  
  62.    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  63.    ByVal lpClassName As String, _
  64.    ByVal lpWindowName As String) As Integer
  65.  
  66.    Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandleA" ( _
  67.    ByVal hObject As Integer) As Integer
  68.  
  69.    Dim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)
  70.    Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
  71.    Dim aa As String = "0"
  72.    Dim dllproc As String = System.Environment.CurrentDirectory() + "\t.dll"
  73.    Dim PrOCeSo As String = "proceso.exe"
  74.  
  75.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  76.        ListBox1.Items.Add(" ")
  77.        ListBox1.Items.Add("Inicio de Handy Inyector!... [OK] ")
  78.        ListBox1.Items.Add("........................................................................................")
  79.    End Sub
  80.  
  81.    Private Sub InjectAr()
  82.        On Error GoTo 1
  83.        Timer1.Stop()
  84.        Dim TargetProcess As Process() = Process.GetProcessesByName(PrOCeSo)
  85.        TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id)
  86.        pszLibFileRemote = dllproc
  87.        pfnStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
  88.        TargetBufferSize = 1 + Len(pszLibFileRemote)
  89.        Dim Rtn As Integer
  90.        Dim LoadLibParamAdr As Integer
  91.        LoadLibParamAdr = VirtualAllocEx(TargetProcessHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE)
  92.        Rtn = WriteProcessMemory(TargetProcessHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0)
  93.        CreateRemoteThread(TargetProcessHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
  94.        End
  95.        'CloseHandle(TargetProcessHandle)
  96. 1:      ListBox1.Items.Add("Error en la Injeccion")
  97.    End Sub
  98.  
  99.    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
  100.  
  101.    End Sub
  102.  
  103.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  104.        If IO.File.Exists(dllproc) Then
  105.            Dim TargetProcess As Process() = Process.GetProcessesByName(PrOCeSo)
  106.            If TargetProcess.Length = 0 Then
  107.                If aa = "0" Then
  108.                    ListBox1.Items.Add("Esperando por: >> " + PrOCeSo + "")
  109.                    aa = "1"
  110.                End If
  111.            Else
  112.                Timer1.Stop()
  113.                ListBox1.Items.Add("Espere Por Favor!...")
  114.                Call InjectAr()
  115.                ListBox1.Items.Add("Injeccion!... [OK]")
  116.                End
  117.                End
  118.            End If
  119.        Else
  120.            If aa = "0" Then
  121.                ListBox1.Items.Add("Error: DLL no fue Encontrado!")
  122.                aa = "1"
  123.            End If
  124.        End If
  125.    End Sub
  126.  
  127.    Private Sub Inject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Inject.Click
  128.        ListBox1.Items.Clear()
  129.        ListBox1.Items.Add(" ")
  130.        ListBox1.Items.Add("Procesando...")
  131.        ListBox1.Items.Add(" ")
  132.        aa = "0"
  133.        Timer1.Start()
  134.    End Sub
  135. End Class
  136.  

Gracias!  ;D
En línea

--=[ Solo los débiles sucumben, no por ser débiles, sino por ignorar lo que son ]=--
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Problema con "Inyeccion dll en VB"
« Respuesta #3 en: 31 Julio 2011, 21:26 pm »

Los errores no son lo mismo que las excepciones, que el compilador no te marque errores no quiere decir que no hayan excepciones en el source. Coloca un Try da mejor información acerca de los errores guarda la propiedad Message y StackTrace del la excepción quizás haya información importante.
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Sh982

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Problema con "Inyeccion dll en VB"
« Respuesta #4 en: 15 Diciembre 2011, 03:44 am »

me ayudas? necessito saber los codigos de este autoclick ( caos ) buscalo y pruebalo y veras lo que necessito si me pudieras decir los codigos o ayudarme te lo agradeceria mucho

Bueno si ves algo me dices ok?:(

el autoclick es asi


me ayudas?:D ahi esta el link(imagen) quiero que el autoclick tenga setpoint y mientras clicke con una tecla quiero clickar a otro sitio me sigues?:P
En línea

Unbr0ken

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Problema con "Inyeccion dll en VB"
« Respuesta #5 en: 15 Diciembre 2011, 04:35 am »

me ayudas? necessito saber los codigos de este autoclick ( caos ) buscalo y pruebalo y veras lo que necessito si me pudieras decir los codigos o ayudarme te lo agradeceria mucho

Bueno si ves algo me dices ok?:(

el autoclick es asi


me ayudas?:D ahi esta el link(imagen) quiero que el autoclick tenga setpoint y mientras clicke con una tecla quiero clickar a otro sitio me sigues?:P

XDDDDDDDDDDDDDDDDDDDDDDDDD (?)...
En línea

Cita de: Snowcrash
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.
seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Problema con "Inyeccion dll en VB"
« Respuesta #6 en: 15 Diciembre 2011, 04:37 am »

me ayudas? necessito saber los codigos de este autoclick ( caos ) buscalo y pruebalo y veras lo que necessito si me pudieras decir los codigos o ayudarme te lo agradeceria mucho

Bueno si ves algo me dices ok?:(

el autoclick es asi


me ayudas?:D ahi esta el link(imagen) quiero que el autoclick tenga setpoint y mientras clicke con una tecla quiero clickar a otro sitio me sigues?:P

En línea

Sh982

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Problema con "Inyeccion dll en VB"
« Respuesta #7 en: 15 Diciembre 2011, 04:48 am »

XDDDDDDDDDDDDDDDDDDDDDDDDD (?)...


ayudarme porfavor los codigos de un autoclick como el caos buscar en google asi lo quiero ayudarme:DD
En línea

Unbr0ken

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Problema con "Inyeccion dll en VB"
« Respuesta #8 en: 15 Diciembre 2011, 04:49 am »


ayudarme porfavor los codigos de un autoclick como el caos buscar en google asi lo quiero ayudarme:DD

Jajajaja ¿qué te pasa tío? andas en el tema incorrecto...

Fails, Fails everywhere.
En línea

Cita de: Snowcrash
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines