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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Uso de API's ReadProcessMemory y WriteProcessMemory
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Uso de API's ReadProcessMemory y WriteProcessMemory  (Leído 13,864 veces)
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #10 en: 5 Mayo 2008, 23:38 pm »

Citar
y bueno ya que esta el hilo abierto estaria lindo quien tenga otros ejemplo lo ponga a continuacion para hacer una pequeña recopilacion sobre el uso de estas dos apis.

que no entiendes? Yo tengo codes pero en C o asm, si te vale...

A ver, el uso de estas dos apis es muy simple, me autocito de un tuto de rootkits q escribí, ya de paso pongo algunas apis relaccionadas q os serán utiles:

Citar
OpenProcess:

HANDLE OpenProcess(
DWORD dwDesiredAccess, // access flag
BOOL bInheritHandle, // handle inheritance flag
DWORD dwProcessId // process identifier
);

Esta es la documentación que Microsoft nos proporciona sobre este api. Ahora os la
detallo un poco:
Valor de retorno: El valor devuelto es el manejador del proceso, explicado de una
forma simple es la forma que tendremos en el código para referirnos al proceso. El
valor que devuelve lo almacenaremos en una variable del tipo HANDLE.
DWORD dwDesiredAccess: Es el modo de apertura del proceso, en nuestro caso
nos daremos todos los privilegios con PROCESS_ALL_ACCESS.
BOOL bInheritHandle: Toma valor true (hereda) o false (no hereda). Nosotros
pondremos false.
DWORD dwProcessId: Es el PID del proceso, luego veremos como obtenerlo con el
nombre del proceso.


VirtualAllocEx:

Sirve para reservar espacio en la memoria de un proceso.

LPVOID VirtualAllocEx(
HANDLE hProcess, // process within which to allocate memory
LPVOID lpAddress, // desired starting address of allocation
DWORD dwSize, // size, in bytes, of region to allocate
DWORD flAllocationType, // type of allocation
DWORD flProtect // type of access protection
);

Valor de retorno: La dirección donde empezaremos a escribir con
WriteProcessMemory.

HANDLE hProcess: El manejador del proceso en el cual vamos a escribir. Es el valor
que nos devuelve OpenProcess.
LPVOID lpAddress: La dirección donde empezamos a reservar espacio, lo
dejaremos en NULL.
DWORD dwSize: El tamaño en bytes de la región que queremos reservar, en
nuestro caso será el tamaño de la cadena que contiene la ruta de la dll a inyectar.
DWORD flAllocationType: El motivo por el cual queremos reservar la memoria, en
nuestro caso MEM_COMMIT|MEM_RESERVE.
DWORD flProtect: El tipo de protección, en nuestro caso PAGE_READWRITE.


WriteProcessMemory:

Sirve para escribir en la memoria anteriormente reservada.
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process whose memory is written to
LPVOID lpBaseAddress, // address to start writing to
LPVOID lpBuffer, // pointer to buffer to write data to
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten // actual number of bytes
//written
);

Valor de retorno: Ver LPDWORD lpNumberOfBytesWritten.
HANDLE hProcess: El valor devuelto por OpenProcess.
LPVOID lpBaseAddress: La dirección por donde empezaremos a escribir. Es el valor
devuelto por VirtualAllocEx.
LPVOID lpBuffer: Lo que queremos escribir, en nuestro caso la ruta de nuestra dll.

DWORD nSize: El tamaño en bytes de lo que queremos escribir, es decir el tamaño
en bytes de la ruta de nuestra dll.
LPDWORD lpNumberOfBytesWritten: Es el numero de bytes que se han escrito
correctamente, así como el valor de retorno, nosotros lo dejaremos en NULL ya que
no nos interesa.

Y ReadProcessMemory es lo mismo q WritePM pero para leer xD
Poned dudas mas concretas ;)

1S4ludo


En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #11 en: 6 Mayo 2008, 03:01 am »

Citar
Poned dudas mas concretas

no se si me lo preguntas a mi?, yo en realidad si entiendo, tampoco soy un experto, pero lo que propuese fue codear un poco.

yo utilize estas apis en algunas ocasiones para pasar msg a controles como listview del systema, u otras.

en fin si tuviera que decirte una duda en concreto, ahora, que por falta de tiempo no me puse a imbestigar, es como obtener el codigo html del iExplorer, se que de alguna manera se puede porque tengo una aplicacion en vb que lo hace(lamentablemente no tengo el codigo)
     la duda es en que parte de la memoria tendria que leer y de que tamaño.

Saludos



En línea

Tughack


Desconectado Desconectado

Mensajes: 490


Ver Perfil
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #12 en: 6 Mayo 2008, 03:25 am »

Citar
Poned dudas mas concretas

no se si me lo preguntas a mi?, yo en realidad si entiendo, tampoco soy un experto, pero lo que propuese fue codear un poco.

yo utilize estas apis en algunas ocasiones para pasar msg a controles como listview del systema, u otras.

en fin si tuviera que decirte una duda en concreto, ahora, que por falta de tiempo no me puse a imbestigar, es como obtener el codigo html del iExplorer, se que de alguna manera se puede porque tengo una aplicacion en vb que lo hace(lamentablemente no tengo el codigo)
     la duda es en que parte de la memoria tendria que leer y de que tamaño.

Saludos



Hola Leandro, pues eso no tiene k ver con leer memoria.

Acabo de escribirte un ejemplo, aver si lo entiendes.

Código:
Option Explicit

Dim SWs As New SHDocVw.ShellWindows
Dim IE As SHDocVw.InternetExplorer

Private Sub Command1_Click()
    For Each IE In SWs
        DoEvents
        If IE.readyState = READYSTATE_COMPLETE Then
            If IE.LocationURL = "http://www.elhacker.net/" Then
                Text1.Text = IE.document.body.innerHTML
                Exit For
            End If
        End If
    Next IE
End Sub


En las "references" anade la "Microsoft HTML Object Library" y el ""Microsoft Internet Controls".

Saludos
« Última modificación: 6 Mayo 2008, 03:29 am por Tughack » En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #13 en: 6 Mayo 2008, 03:46 am »

tambien se puede hacer directamente con api's,pero esto se desvio del tema me parece... :P
En línea

Tughack


Desconectado Desconectado

Mensajes: 490


Ver Perfil
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #14 en: 6 Mayo 2008, 12:27 pm »

tambien se puede hacer directamente con api's,pero esto se desvio del tema me parece... :P

Con apis? Bueno entonces pone esas apis aki  :rolleyes:
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #15 en: 6 Mayo 2008, 13:26 pm »

es con la libreria wininet.dll,lo vi muy util cuando lo postearon en un foro:

Código:
Option Explicit
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Const IF_FROM_CACHE = &H1000000
Private Const IF_MAKE_PERSISTENT = &H2000000
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const BUFFER_LEN = 256

Public Function CodigoWeb(Pagina As String) As String
Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
Dim hInternet As Long, hSession As Long, lReturn As Long
hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
If hSession Then hInternet = InternetOpenUrl(hSession, Pagina, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
If hInternet Then
iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sBuffer
Do While lReturn <> 0
iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sData + Mid(sBuffer, 1, lReturn)
Loop
End If
iResult = InternetCloseHandle(hInternet)
CodigoWeb = sData
End Function

Private Sub Form_Load()
MsgBox CodigoWeb("http://www.google.com.ar")
End Sub

saludos.



En línea

Tughack


Desconectado Desconectado

Mensajes: 490


Ver Perfil
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #16 en: 6 Mayo 2008, 14:17 pm »

Ya sabia k ibas a poner eso, pero con eso tienes k abrir una nueva instancia, no es lo mismo k puse yo.

Con lo k puse yo puedes elijir kualkier instancia ya abierta o incluso crear una nueva y manejar todo lo k kieras. Investigalo y veras k es mejor.

No quiero decir k lo k has puesto no es util, simplemente no es lo mejor para esto k ha pedido Leandro.

Saludos
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #17 en: 6 Mayo 2008, 14:26 pm »

es util para el que no quiere agregar referencias externas,a mi no me gusta agregar muchas cosas,trato de hacerlo todo con codigo por eso me parecio bueno..tambien hay otra forma muy corta con la libreria XML agregandola como referencia,bue y con el control Inet con una linea de codigo..pero no me gusta  ::)

saludos.
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #18 en: 6 Mayo 2008, 21:37 pm »

Cita de: Tughack
Option Explicit

Dim SWs As New SHDocVw.ShellWindows
Dim IE As SHDocVw.InternetExplorer

Private Sub Command1_Click()
    For Each IE In SWs
        DoEvents
        If IE.readyState = READYSTATE_COMPLETE Then
            If IE.LocationURL = "http://www.elhacker.net/" Then
                Text1.Text = IE.document.body.innerHTML
                Exit For
            End If
        End If
    Next IE
End Sub

jaja :laugh: buenisimo era eso, ahora que recuerdo Cobein en una vuelta me habia pasado algo parecido con  SHDocVw.ShellWindows pero no savia como hacer el For Each IE In SWs, la verdad que me la iva a complicar mucho, lamentablemnte esto no va a servir obtener los script o para firefox u opera. pero bueno me safa.

Saludos y muchas gracias

PD:el que quiera puede seguir agregando algunos ejemplos mas de ReadProcessMemory y WriteProcessMemory para tenerlos a mano, no estarian de mas.

En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Uso de API's ReadProcessMemory y WriteProcessMemory
« Respuesta #19 en: 7 Mayo 2008, 01:48 am »

Leandro,te queria preguntar,una vez vi que pusiste un codigo para poder saber en que icono del escritorio se hizo click,usando estas 2 api's,y despues vi que tenias un codigo para sacar los items de un listview de visual sabiendo su hwnd,pero tiraba error para uno de windows,¿ya lo corregiste?,la verdad siempre quise hacer eso y la otra vez encontre un codigo que lo hace con estas 2 api's y es re-cortito,no tira error con los de windows,ahora estoy viendo si le puedo sacar tambien el icono del listview...

saludos.
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta readprocessmemory
Programación Visual Basic
Cromatico 4 3,487 Último mensaje 5 Enero 2011, 21:34 pm
por Cromatico
Read/WriteProcessMemory Windows 7 Vb.Net
Hacking
Keyen Night 0 2,531 Último mensaje 21 Febrero 2011, 20:38 pm
por Keyen Night
ReadProcessMemory en Windows 7
.NET (C#, VB.NET, ASP)
Keyen Night 1 3,107 Último mensaje 28 Febrero 2011, 06:00 am
por BlackZeroX
mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!] « 1 2 3 4 5 »
Programación Visual Basic
Karcrack 46 22,560 Último mensaje 10 Octubre 2012, 04:57 am
por BlackZeroX
Duda WriteProcessMemory
Programación Visual Basic
TheJucas21 2 2,967 Último mensaje 21 Noviembre 2017, 03:41 am
por TheJucas21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines