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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cambiar el valor de una variable en un puntero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiar el valor de una variable en un puntero  (Leído 8,856 veces)
boy-ka

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Cambiar el valor de una variable en un puntero
« en: 7 Abril 2015, 08:31 am »

Holaaa!, bueno, pues eso quisiera saber si es posible cambiar el valor de una variable en un puntero.

Ejemplo

var x ="hola";
x está en la posición: 00x3a; de la memoria << solo por decir una posición...

Pero yo quiero cambiar la variable, no cambiando el valor de x. Si no cambiando el valor del puntero, osea quisiera saber si puedo modificar el valor que tiene un puntero sin conocer el nombre de la variable..

No se si me expliqué bien, básicamente es lo que se puede hacer Cheat Engine, modificar el valor de un puntero, pero querría saber si se puede hacer desde C++, y si es así cómo?

Gracias por leer.


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Cambiar el valor de una variable en un puntero
« Respuesta #1 en: 7 Abril 2015, 09:01 am »

si "p" es un puntero, con "p" accedes a la dirección de memoria apuntada y con "*p" accedes al contenido de la memoria apuntada. Un ejemplo:

Código
  1. int variable1 = 5;
  2. int variable2 = 10;
  3.  
  4. int* puntero; // ahora mismo no apunta a nada válido
  5. puntero = &variable1; // puntero apunta a "variable1"
  6. printf( "0x%x -> %d\n", puntero, *puntero );
  7.  
  8. // Cambiamos el valor "apuntado"
  9. *puntero = 23;
  10. printf( "0x%x -> %d\n", puntero, *puntero );
  11.  
  12. puntero = &variable2; // puntero apunta a "variable2"
  13.  
  14. printf( "0x%x -> %d\n", puntero, *puntero );
  15.  
  16. // Cambiamos el valor "apuntado"
  17. *puntero = 71;
  18. printf( "0x%x -> %d\n", puntero, *puntero );
  19.  
  20. printf( "variable1: %d\n", variable1 );
  21. printf( "variable2: %d\n", variable2 );


En línea

boy-ka

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: Cambiar el valor de una variable en un puntero
« Respuesta #2 en: 7 Abril 2015, 10:09 am »

si "p" es un puntero, con "p" accedes a la dirección de memoria apuntada y con "*p" accedes al contenido de la memoria apuntada. Un ejemplo:

Código
  1. int variable1 = 5;
  2. int variable2 = 10;
  3.  
  4. int* puntero; // ahora mismo no apunta a nada válido
  5. puntero = &variable1; // puntero apunta a "variable1"
  6. printf( "0x%x -> %d\n", puntero, *puntero );
  7.  
  8. // Cambiamos el valor "apuntado"
  9. *puntero = 23;
  10. printf( "0x%x -> %d\n", puntero, *puntero );
  11.  
  12. puntero = &variable2; // puntero apunta a "variable2"
  13.  
  14. printf( "0x%x -> %d\n", puntero, *puntero );
  15.  
  16. // Cambiamos el valor "apuntado"
  17. *puntero = 71;
  18. printf( "0x%x -> %d\n", puntero, *puntero );
  19.  
  20. printf( "variable1: %d\n", variable1 );
  21. printf( "variable2: %d\n", variable2 );


Ya, pero quiero decir si puedo recuperar el valor de cualquier puntero aunque no esté siendo utilizado por ese mismo programa, un ejemplo:

puntero = 00x144a;

Quisiera saber si eso es posible, gracias por la respuesta man.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Cambiar el valor de una variable en un puntero
« Respuesta #3 en: 7 Abril 2015, 10:17 am »

Para cambiar un valor de memoria fuera de tu proceso, tendrás que utilizar funciones del sistema operativo. En caso de Windows, WriteProcessMemory(), al que le tienes que pasar un HANDLE al proceso en cuestión, que puedes obtener con OpenProcess(), al que le has de pasar el ProcessID del proceso.

Para encontrar procesos por su nombre, puedes usar CreateToolhelp32Snapshot(), Process32First() y Process32Next(), que te llenarán una estructura PROCESSENTRY32, cuyo campo th32ProcessID es el PID de cada proceso, y szExeFile el nombre del ejecutable del proceso.

La información de las funciones la puedes encontrar en MSDN, basta Googlear los nombres.
En línea

boy-ka

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: Cambiar el valor de una variable en un puntero
« Respuesta #4 en: 7 Abril 2015, 10:24 am »

Para cambiar un valor de memoria fuera de tu proceso, tendrás que utilizar funciones del sistema operativo. En caso de Windows, WriteProcessMemory(), al que le tienes que pasar un HANDLE al proceso en cuestión, que puedes obtener con OpenProcess(), al que le has de pasar el ProcessID del proceso.

Para encontrar procesos por su nombre, puedes usar CreateToolhelp32Snapshot(), Process32First() y Process32Next(), que te llenarán una estructura PROCESSENTRY32, cuyo campo th32ProcessID es el PID de cada proceso, y szExeFile el nombre del ejecutable del proceso.

La información de las funciones la puedes encontrar en MSDN, basta Googlear los nombres.

Excelente, muchisimas gracias, aunque esto se puede utilizar para fines maliciosos xD.
De todos modos eso está ahí por algo, Electro magnético voy a investigar sobre ello.

PD {ESCRIBÍ ELECTRO MAGNÉTICO, PORQUE PENSÉ QUE ERAS ELEKTRO XD}
« Última modificación: 7 Abril 2015, 10:43 am por boy-ka » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Cambiar el valor de una variable en un puntero
« Respuesta #5 en: 7 Abril 2015, 10:25 am »

Ya, pero quiero decir si puedo recuperar el valor de cualquier puntero aunque no esté siendo utilizado por ese mismo programa, un ejemplo:

puntero = 00x144a;

Quisiera saber si eso es posible, gracias por la respuesta man.

Si yo veo que una posición de memoria tiene el valor 0x144a no tengo forma de saber si ese valor se corresponde con una dirección de memoria apuntada o con un valor.

En cualquier caso, ivancea96 te ha comentado una forma en la que puedes modificar la memoria de programas externos.

Un saludo

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[batch] Cambiar valor a una variable con IF AYUDA! « 1 2 »
Scripting
Delva 12 11,037 Último mensaje 16 Noviembre 2010, 22:35 pm
por xassiz~
Cambiar el Valor de una Variable a una hora concreta
Java
thechacal23 4 3,896 Último mensaje 3 Enero 2012, 03:47 am
por Proteus1989
cambiar valor variable ciclo for duda
Scripting
asdexiva 3 2,864 Último mensaje 7 Febrero 2015, 21:50 pm
por engel lex
variable puntero a double vs variable double
Programación C/C++
fafafa01 3 2,834 Último mensaje 26 Junio 2016, 10:14 am
por fafafa01
Cambiar valor de una variable de tipo estructura
Programación C/C++
4dr14n31t0r 3 2,375 Último mensaje 27 Septiembre 2016, 19:52 pm
por 4dr14n31t0r
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines