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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Inyectar Dll?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Inyectar Dll?  (Leído 4,513 veces)
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Inyectar Dll?
« en: 26 Diciembre 2009, 19:04 pm »

Hice está función para inyección de una dll en un proceso pero cuando la llamo el proceso a inyectar da error y se cierra, que está mal?
Código
  1.    Public Function InyectDLL(ByVal Dll As String, ByVal PID As Integer) As Boolean
  2.        On Error GoTo 0
  3.  
  4.        Dim Buffer1 As Integer, _
  5.         Buffer2 As Integer, _
  6.         OpenedP As Integer = OpenProcess(PROCESS_ALL_ACCESS, False, PID), _
  7.         AddressP As Integer = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryW"), _
  8.         rems As Integer = VirtualAllocEx(OpenedP, 0, Len(Dll), MEM_COMMIT, PAGE_READWRITE)
  9.  
  10.        WriteProcessMemory(OpenedP, rems, Dll, Len(Dll), Buffer2)
  11.  
  12.        CreateRemoteThread(OpenedP, 0, 0, AddressP, rems, 0, Buffer1)
  13.        WaitForSingleObject(rems, &HFFFFFF)
  14.  
  15.        CloseHandle(OpenedP) : CloseHandle(rems)
  16.        Return True
  17.  
  18.    End Function


« Última modificación: 26 Diciembre 2009, 19:06 pm por Keyen Night » 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...
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Inyectar Dll?
« Respuesta #1 en: 26 Diciembre 2009, 20:34 pm »

Esa funcion funcionaria para vb6 no?
Intentaste depurar? que error te da?


En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Inyectar Dll?
« Respuesta #2 en: 26 Diciembre 2009, 22:58 pm »

puede ser que tengas mal declaradas los tipos de datos de las api's, pone todo el codigo.
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Inyectar Dll?
« Respuesta #3 en: 26 Diciembre 2009, 23:11 pm »

 
Código
  1.  Const PAGE_READWRITE As Integer = &H4
  2.    Const MEM_RELEASE As Integer = &H8000
  3.    Const MEM_COMMIT As Integer = &H1000
  4.    Const STANDARD_RIGHTS_REQUIRED As Integer = &HF0000
  5.    Const SYNCHRONIZE As Integer = &H100000
  6.    Const PROCESS_VM_READ As Integer = &H10
  7.    Const PROCESS_VM_WRITE As Integer = (&H20)
  8.    Const PROCESS_VM_OPERATION As Integer = (&H8)
  9.    Const PROCESS_QUERY_INFORMATION As Integer = (&H400)
  10.    Const PROCESS_READ_WRITE_QUERY As Integer = PROCESS_VM_READ + PROCESS_VM_WRITE + PROCESS_VM_OPERATION + PROCESS_QUERY_INFORMATION
  11.    Const PROCESS_ALL_ACCESS As Integer = &H1F0FFF
  12.  
  13.    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
  14.    Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Integer, ByVal lpProcName As String) As Integer
  15.    Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Integer
  16.    Private 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
  17.    Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Object, ByVal lpBuffer As Object, ByVal nSize As Integer, ByVal lpNumberOfBytesWritten As Integer) As Integer
  18.    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
  19.    Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Integer, ByVal lpThreadAttributes As Integer, ByVal dwStackSize As Integer, ByVal lpStartAddress As Integer, ByVal lpParameter As Object, ByVal dwCreationFlags As Integer, ByVal lpThreadId As Integer) As Integer
  20.    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Integer, ByVal dwMilliseconds As Integer) As Integer
  21.  
  22.    Public Function InyectDLL(ByVal Dll As String, ByVal PID As Integer) As Boolean
  23.        On Error GoTo 0
  24.  
  25.        Dim Buffer1 As Integer, _
  26.         Buffer2 As Integer, _
  27.         OpenedP As Integer = OpenProcess(PROCESS_ALL_ACCESS, False, PID), _
  28.         AddressP As Integer = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryW"), _
  29.         rems As Integer = VirtualAllocEx(OpenedP, 0, Len(Dll), MEM_COMMIT, PAGE_READWRITE)
  30.  
  31.        WriteProcessMemory(OpenedP, rems, Dll, Len(Dll), Buffer2)
  32.  
  33.        CreateRemoteThread(OpenedP, 0, 0, AddressP, rems, 0, Buffer1)
  34.        WaitForSingleObject(rems, &HFFFFFF)
  35.  
  36.        CloseHandle(OpenedP) : CloseHandle(rems)
  37.        Return True
  38.  
  39.    End Function
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...
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Inyectar Dll?
« Respuesta #4 en: 26 Diciembre 2009, 23:17 pm »

Eso esta en "formato" vb6, reemplaza esas declaraciones API por las que aparecen en esta pagina http://www.pinvoke.net/
No uses la funcion "Len()" usa "String.Length"

Si vas a programar en .net, hazlo al estilo de .net, no al de vb6 ;-)
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Inyectar Dll?
« Respuesta #5 en: 26 Diciembre 2009, 23:26 pm »

Yo he hecho esto siempre así y siempre ha funcionado ._. uso Microsoft Visual Basic 2008 Exprres Edition
Tambien cabe destacar que esto siempre me ha confundido siempre dicen que asi no se declara y no entiendo porque ya que siempre me ha funcionado.

pd: Yo aún no estudio esto me falta 1 año para entrar a la universidad.
« Última modificación: 26 Diciembre 2009, 23:28 pm por Keyen Night » 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...
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Inyectar Dll?
« Respuesta #6 en: 26 Diciembre 2009, 23:31 pm »

De funcionar funciona, pero no debe usarse asi, es mala practica

Si no funciona intenta depurando, mejora las declaraciones y fijate las salidas de las API, cualquier cosa intenta con GetLastError :P
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Inyectar dll Pregunta...
Análisis y Diseño de Malware
dRak0 6 3,442 Último mensaje 28 Enero 2014, 00:46 am
por x64core
inyectar inframe a una pag web
Bugs y Exploits
teloponeahi 1 2,751 Último mensaje 22 Febrero 2015, 04:09 am
por .:UND3R:.
Inyectar javascript
Hacking
TheH4ck 2 3,760 Último mensaje 10 Octubre 2015, 04:38 am
por TheH4ck
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines