Autor
|
Tema: [Source] Inyeccion Dll en VB (Leído 24,243 veces)
|
Hendrix
|
Aqui les dejo este codigo que ya e traducido a C#, ahora a VB...mi proximo reto es traducirlo a ensamblador con el Fasm.... Bueno, me dejo de chachara....aqui esta el codigo: Modulo:'************************************************************************ '************************************************************************ '** ** '** Inyeccion Dll en VB a partir del codigo en C++ de MazarD ** '** ** '** Wrote on June 15, 2007 by Hendrix ** '** ** '** ** '** CopyLeft Licence ** '************************************************************************ '************************************************************************ Private Const PAGE_READWRITE As Long = &H4 Private Const MEM_RELEASE As Long = &H8000 Private Const MEM_COMMIT As Long = &H1000 Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000 Private Const SYNCHRONIZE As Long = &H100000 Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF) Private Const INFINITE As Long = &HFFFFFF Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As Long, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Public Function Inyecta(RutaDll As String, Pid As Long) As Integer Dim proc As Long Dim nload As Long Dim rems As Long Dim longi As Long Dim RemThread As Long Dim Tid As Long On Error GoTo Error proc = OpenProcess(PROCESS_ALL_ACCESS, False, Pid) nload = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA") rems = VirtualAllocEx(proc, 0, Len(RutaDll), MEM_COMMIT, PAGE_READWRITE) WriteProcessMemory proc, ByVal rems, ByVal RutaDll, Len(RutaDll), longi CreateRemoteThread proc, ByVal 0, 0, ByVal nload, ByVal rems, 0, Tid WaitForSingleObject rems, INFINITE CloseHandle proc CloseHandle rems Inyecta = 0 Exit Function Error: Inyecta = 1 End Function
Formulario:Private Sub Form_Load() Dim ruta As Long Dim resultado As Integer ruta = Shell("notepad.exe") resultado = Inyecta("C:\ladll.dll", ruta) If resultado = 0 Then MsgBox "Dll Inyectada con éxito!!!", , "Información" Else MsgBox "A ocurrido un error", vbCritical, "Información" End If End End Sub
Un Saludo.
|
|
« Última modificación: 25 Julio 2007, 21:31 pm por Hendrix. »
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
LeandroA
|
Hola Hendrix esta muy interesante el code, pero no entiendo mucho su finalidad, que se supone aria la dll dentro del notepad?, puedes poner un ejemplo de como se ejecuta una funcion de la dll de esta forma?
Saludos
|
|
|
En línea
|
|
|
|
~~
|
Muy weno Hendrix, yo pensaba q en VB no se iba a poder xDD Hola Hendrix esta muy interesante el code, pero no entiendo mucho su finalidad, que se supone aria la dll dentro del notepad?, puedes poner un ejemplo de como se ejecuta una funcion de la dll de esta forma?
Saludos
Weno, tu tienes q hacerte una dll con dllmain (creo q esto en VB si q no vas a poder hacerlo, corregisme si me ekivoco), colocas esa dll en C:\ladll.dll con ese nombre y usas el codigo. Con esto conseguiras crear un hilo remoto en el proceso del notepad q cargara la dll y ejecutara el dll main asi conseguiras q el notepad haga lo q tu kieras, ideal para troyanos (asi el firewall dará permiso al IE para salir a internet) o para hacer tu proceso inmortal Muy buen aporte Hendrix, hay q ver lo q te has tenido q complicar para hacerlo en VB xDDDD
|
|
|
En línea
|
|
|
|
Hendrix
|
Si....esto es demasiado "trabajo" para el VB....comparando el fuente de C y este hay mucha diferencia....xDDD e tenido que añadir un API porque me cerraba antes de tiempo...xDDD Un Saludo.
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
cheatmaster
Desconectado
Mensajes: 101
|
entonces, podemos hacer que un form descargue la dll, se cierre cargue otro form , con ese codigo, y ejecute la dll, M.. q bueno !!
Una duda, tiene que ser el notepad o puede ser arternativo, ejemplo... msn, IE, firefox.. o tiene que ser el notepad ?
|
|
|
En línea
|
|
|
|
~~
|
Vale cualkier otro proceso, aunke yo e provado en C con el lsass y ese tipo de procesos y no funcionó, pero con firefox, msn o internet explorer si q funciona
|
|
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
EON no te funciona con lsass por el tema de privilegios, que puedes ajustar tu mismo antes de abrir el proceso. despues lo puedes injectar donde quieras.
|
|
|
En línea
|
|
|
|
Mad Antrax
|
Vale cualkier otro proceso, aunke yo e provado en C con el lsass y ese tipo de procesos y no funcionó, pero con firefox, msn o internet explorer si q funciona Si que puedes inyectar, leer memoria y escribir en memoria de otros procesos de SYSTEM (como lsass o svchost). Solo necesitas ejecutar tu aplicación con los privilegios heredades => a SYSTEM. Cuando programé mi MemDumper (dumpeador de memoria de procesos) pude dumpear la memoria de svchost siempre y cuando mi aplicación se lanzara desde SYSTEM. Para hacerlo solo tienes que usar el bug del comando AT (explicado por mí también en este foro) para pasar un proceso de Admin a SYSTEM. Saludos!!
|
|
|
En línea
|
No hago hacks/cheats para juegos Online. Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
no hace falta bugs para hacerlo, con AdjustTokenPrivileges lo haces. ya que de la otra forma si es un bug algun AV puede saltar.
|
|
|
En línea
|
|
|
|
Hendrix
|
no hace falta bugs para hacerlo, con AdjustTokenPrivileges lo haces. ya que de la otra forma si es un bug algun AV puede saltar.
Amén....eso se hace con la API, no con el comando At aunque es una buena opcion a la API...
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
|
|