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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Extraño error con WriteProcessMemory
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Extraño error con WriteProcessMemory  (Leído 3,077 veces)
arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Extraño error con WriteProcessMemory
« en: 3 Julio 2016, 20:43 pm »

Hola amigos.

tengo un problema muy extraño usando la api WriteProcessMemory
Resulta que en mi programa uso esa api un montón de veces sin problema  de ningún tipo, pero ahora por alguna extraña razón y con un offset determinado lee pero no escribe.
Código:
Declare Function WriteProcessSingle Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, 
ByRef lpBuffer As Single, ByVal nSize As Long, ByRef lpNumberOfBytesWritten As Long) As Boolean

    dim datos as single
    ret = ReadProcessMemory(handle, offset, datos, 4, written)
    datos = datos * 2 / 0,0025683
    ret = WriteProcessMemorySingle(handle, offset, datos, 4, written)
    Debug.Print ret, written


resutado del debug: false, 0 No ha escrito los datos.
No entiendo el por qué de este problema.

comentaros que he intentado usar el getlasterror de esta manera:

Código:
    buffer = Space(200)
    Debug.Print FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, GetLastError, SUBLANG_DEFAULT, buffer, 200, 0&)

y el resultado ha sido '.46', no sé si sería posible obtener algún string respecto a ese lasterror.....

Deciros que el handle es correcto, etc etc. Si he cometido un error pues estoy ciego y no lo veo. No obstante el proceso lo he abierto de esta forma:

Código:
        CreateProcess vbNullString, app.path & "\test.exe " & Command & commandline, _
            ByVal 0&, ByVal 0&, 1&, CREATE_SUSPENDED, ByVal 0&, revolt, sInfo, pInfo

también comentarios que he intentado abrir el proceso de esta forma, con el mismo resultado de no poder escribir en ese offset:

Código:
OpenProcess(PROCESS_ALL_ACCESS, False, pid)

Ayuda !


« Última modificación: 3 Julio 2016, 20:57 pm por arfgh » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Extraño error con WriteProcessMemory
« Respuesta #1 en: 4 Julio 2016, 05:28 am »

Llama a la función Win32 GetLastError sin intentar formatear el mensaje para mostrarnos que código de error exacto te indica, '.46' no es nada válido.

PD: No utilizo VB6, lo tengo más que oxidado, pero al menos podría ayudarte con el significado del código de error Win32 que estés obteniendo.

Saludos


En línea



BloodSharp


Desconectado Desconectado

Mensajes: 812


¡ Hiperfoco !


Ver Perfil WWW
Re: Extraño error con WriteProcessMemory
« Respuesta #2 en: 4 Julio 2016, 21:21 pm »

Hola amigos.

tengo un problema muy extraño usando la api WriteProcessMemory
Resulta que en mi programa uso esa api un montón de veces sin problema  de ningún tipo, pero ahora por alguna extraña razón y con un offset determinado lee pero no escribe.
Código:
dim datos as single
ret = ReadProcessMemory(handle, offset, datos, 4, written)
datos = datos * 2 / 0,0025683
ret = WriteProcessMemorySingle(handle, offset, datos, 4, written)
Debug.Print ret, written

resutado del debug: false, 0 No ha escrito los datos.
No entiendo el por qué de este problema.
Ayuda !

¿Verificaste que la/s página/s de la memoria virtual que estás editando tenga permisos de escritura? Porque según tu código no lo hacés...


B#
En línea



arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Extraño error con WriteProcessMemory
« Respuesta #3 en: 9 Julio 2016, 11:53 am »

ese es el problema, la zona de memoria está en la .rdata. Me pregunto si programáticamente se puede hacer esa zona RW
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Extraño error con WriteProcessMemory
« Respuesta #4 en: 9 Julio 2016, 20:20 pm »

ese es el problema, la zona de memoria está en la .rdata. Me pregunto si programáticamente se puede hacer esa zona RW

A la API WriteProcessMemory no le importa si la sección de memoria tiene o no permisos de escritura. Sólo le importa que el handle sea válido para escribir y que la memoria a escribir esté mapeada.

Saludos!

EDIT: Para ver dónde te falla, abre tu programa con Olly y pon un BP en la API. Luego de ejecutar la misma, Olly mostrará el valor de GetLastError (lo hace siempre).
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
extraño error en vista de una funcion sencilla: Runtime error '75': Path/File
Programación Visual Basic
drakolive 9 15,624 Último mensaje 9 Marzo 2012, 17:08 pm
por Sancho.Mazorka
Error extraño C
Programación C/C++
Sefean 4 2,683 Último mensaje 1 Noviembre 2014, 15:58 pm
por ivancea96
Duda WriteProcessMemory
Programación Visual Basic
TheJucas21 2 3,143 Último mensaje 21 Noviembre 2017, 03:41 am
por TheJucas21
error extraño
Dudas Generales
ElagusxD 0 1,788 Último mensaje 21 Febrero 2022, 03:44 am
por ElagusxD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines