Autor
|
Tema: Inyectar DLL (Leído 6,723 veces)
|
XP.
Desconectado
Mensajes: 121
|
-
|
|
« Última modificación: 6 Junio 2006, 22:09 pm por XP. »
|
En línea
|
|
|
|
XP.
Desconectado
Mensajes: 121
|
Bueno, encontre este codigo pero nose donde ponerle el nombre de la DLL o el ejecutable a descargar '-------------------------------------------------------------- 'Descargar una DLL o EXE que esté en memoria ( 6/Jul/97) ' 'Basado en un código de Bruce McKinney y que realiza la misma 'tarea que WPS.exe para descargar módulos y ejecutables. '(se supone) '-------------------------------------------------------------- Option Explicit
Declare Function GetModuleHandle Lib "Kernel" (ByVal lpModuleName As String) As Integer Declare Function GetModuleUsage Lib "Kernel" (ByVal hModule As Integer) As Integer Declare Sub FreeModule Lib "Kernel" (ByVal hModule As Integer)
Public Sub Main() Dim hModule As Integer
'El módulo a librerar se pasa en la línea de comandos hModule = GetModuleHandle(Command$) If hModule = 0 Then Exit Sub 'Libera todas copias de este módulo Do While GetModuleUsage(hModule) > 0 Call FreeModule(hModule) Loop End Sub
|
|
|
En línea
|
|
|
|
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
|
|
|
XP.
Desconectado
Mensajes: 121
|
Nop, esto es para desinyectar la DLL y si creo que esta completo. EDIT: Me equivoque de tema no tendria que haberlo puesto aca ya que el tema es injectar una DLL y no descargarla pero bueno
|
|
« Última modificación: 26 Mayo 2006, 18:42 pm por XP. »
|
En línea
|
|
|
|
Hendrix
|
Ya enkontre la fuente de eso kode...y mira lo que pone: Esto puede servir para descargar una aplicación o librería dinámica de la memoria de nuestro Windows. La forma es sencilla, sólo hay que crear un módulo BAS y escribir este código en el SUB MAIN, como parámetro debemos pasarle la DLL o EXE que queremos "eliminar" y este programita se encargará del resto... AVISO: Esto sólo funcionará de forma correcta en Windows 3.xx NO USARLO EN WINDOWS 95.A mí no me ha funcionado bien en Win95 y deja colgado el Explorer, al menos el que se incluye con el IE 4.0 beta. El que avisa...Asi que ya no es nada kompatible.... Salu2
|
|
|
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
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
La forma mas simple de inyectar una DLL es reservar memoria en el proceso (VirtualAlloc), escribir ahi el nombre de la DLL en cuestion (WriteProcessMemory) y despues crear un hilo cuyo punto de entrada sea LoadLibraryA y su parametro la memoria reservada anteriormente.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
krispin
|
La forma mas simple de inyectar una DLL es reservar memoria en el proceso (VirtualAlloc), escribir ahi el nombre de la DLL en cuestion (WriteProcessMemory) y despues crear un hilo cuyo punto de entrada sea LoadLibraryA y su parametro la memoria reservada anteriormente.
Efectivamenteeeeeeeeeee!! aquí teneis un ejemplo: Option Explicit
Public hModule As Long Public hProcess As Long Public dwSize As Long Public dwPid As Long Public dwBytesWritten As Long Public dwTid As Long
Public SE As SECURITY_ATTRIBUTES
Public Const PAGE_READONLY As Long = &H2 Public Const PAGE_READWRITE As Long = &H4 Public Const PAGE_EXECUTE As Long = &H10 Public Const PAGE_EXECUTE_READ As Long = &H20 Public Const PAGE_EXECUTE_READWRITE As Long = &H40 Public Const MEM_RELEASE As Long = &H8000 Public Const MEM_COMMIT As Long = &H1000 Public Const MEM_RESERVE As Long = &H2000 Public Const MEM_RESET As Long = &H80000 Public Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000 Public Const SYNCHRONIZE As Long = &H100000 Public Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF) Public Const INFINITE As Long = &HFFFFFF
Public Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type
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 VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long Public Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Sub Main() Inject App.Path & "\Ejemplo.dll", "Notepad" End Sub
Public Function Inject(szDll As String, szTargetWindowClassName As String) As Boolean Dim hWnd As Long Dim k32LL As Long Dim Thread As Long
SE.nLength = Len(SE) SE.lpSecurityDescriptor = False 'Encontrar la ventana y abrir el proceso hWnd = FindWindow(szTargetWindowClassName, vbNullString) GetWindowThreadProcessId hWnd, dwPid hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, dwPid) If hProcess = 0 Then GoTo Inject_Error k32LL = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA") 'Reservamos memoria hModule = VirtualAllocEx(hProcess, 0, LenB(szDll), MEM_COMMIT, PAGE_READWRITE) If hModule = 0 Then GoTo Inject_Error WriteProcessMemory hProcess, ByVal hModule, ByVal szDll, LenB(szDll), dwBytesWritten Thread = CreateRemoteThread(hProcess, SE, 0, ByVal k32LL, ByVal hModule, 0, dwTid) If Thread = 0 Then GoTo Inject_Error 'Clean up a bit WaitForSingleObject Thread, 100 VirtualFreeEx hProcess, hModule, 0&, MEM_RELEASE CloseHandle Thread
Exit Function
Inject_Error: Inject = False MsgBox "error" Exit Function End Function
|
|
|
En línea
|
|
|
|
XP.
Desconectado
Mensajes: 121
|
----
|
|
« Última modificación: 17 Julio 2006, 23:19 pm por XP. »
|
En línea
|
|
|
|
Hendrix
|
Si en lugar de inyectar una DLL inyectaramos un EXE que pasaria???un desbordamiento???
Salu2
|
|
|
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
|
|
|
krispin
|
todo en un form? o uso modulo?
Sin comentarios. Primero hecha un vistazo al codigo, y luego habla. Si no sacas nada en claro de ese code dedicate a aprander un poco VB antes de empezar a querer hacer cosas raras. el ejemplo es clarisimo. Sin comentarios. Si en lugar de inyectar una DLL inyectaramos un EXE que pasaria???un desbordamiento???
Salu2
Con ese code claramente no chuta, la razon es obvia.
|
|
|
En línea
|
|
|
|
|
|