Autor
|
Tema: Cambiar el valor de una variable en un puntero (Leído 8,856 veces)
|
boy-ka
Desconectado
Mensajes: 74
|
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
Mensajes: 1.248
|
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: int variable1 = 5; int variable2 = 10; int* puntero; // ahora mismo no apunta a nada válido puntero = &variable1; // puntero apunta a "variable1" printf( "0x%x -> %d\n", puntero, *puntero ); // Cambiamos el valor "apuntado" *puntero = 23; printf( "0x%x -> %d\n", puntero, *puntero ); puntero = &variable2; // puntero apunta a "variable2" printf( "0x%x -> %d\n", puntero, *puntero ); // Cambiamos el valor "apuntado" *puntero = 71; printf( "0x%x -> %d\n", puntero, *puntero ); printf( "variable1: %d\n", variable1 ); printf( "variable2: %d\n", variable2 );
|
|
|
En línea
|
|
|
|
boy-ka
Desconectado
Mensajes: 74
|
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: int variable1 = 5; int variable2 = 10; int* puntero; // ahora mismo no apunta a nada válido puntero = &variable1; // puntero apunta a "variable1" printf( "0x%x -> %d\n", puntero, *puntero ); // Cambiamos el valor "apuntado" *puntero = 23; printf( "0x%x -> %d\n", puntero, *puntero ); puntero = &variable2; // puntero apunta a "variable2" printf( "0x%x -> %d\n", puntero, *puntero ); // Cambiamos el valor "apuntado" *puntero = 71; printf( "0x%x -> %d\n", puntero, *puntero ); printf( "variable1: %d\n", variable1 ); 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
Mensajes: 3.412
ASMático
|
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
Mensajes: 74
|
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
Mensajes: 1.248
|
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
|
|
|
|
|
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
|
16 Noviembre 2010, 22:35 pm
por xassiz~
|
|
|
Cambiar el Valor de una Variable a una hora concreta
Java
|
thechacal23
|
4
|
3,896
|
3 Enero 2012, 03:47 am
por Proteus1989
|
|
|
cambiar valor variable ciclo for duda
Scripting
|
asdexiva
|
3
|
2,864
|
7 Febrero 2015, 21:50 pm
por engel lex
|
|
|
variable puntero a double vs variable double
Programación C/C++
|
fafafa01
|
3
|
2,834
|
26 Junio 2016, 10:14 am
por fafafa01
|
|
|
Cambiar valor de una variable de tipo estructura
Programación C/C++
|
4dr14n31t0r
|
3
|
2,375
|
27 Septiembre 2016, 19:52 pm
por 4dr14n31t0r
|
|