GodSys

GodSys
El Poder de la Programación

miércoles, 28 de abril de 2010

Linux: Modificar valor en memoria!

Hola..qué tal? De nuevo por acá =D...

Ahora les traigo un código que vimos anteriormente pero que era para Window$... Les traigo el código en C de un programa que modifica un valor de una dirección de memoria de un proceso exterior a este...
*Recuerdan que en Window$ utilizamos OpenProcess() para abrir un proceso y WriteProcessMemory() para escribir un valor sobre una dirección de memoria de dicho proceso??..Bueno..ahora realizaremos lo mismo de una forma más sencilla sobre Linux...

Para realizar esto utilizaremos una de las funciones más "copadas" que nos provee Linux(está explicada vulgarmente con mis palabras para su mejor entendimiento):

- ptrace(Qué se hará con el proceso, PID del proceso, Dirección de memoria, Valor que se asigna en esa dirección);

Esta función permite tracear, debugear, tomar el control de un proceso para modificarlo, ver sus resultados y su funcionamiento, étc.
En este caso lo utilizamos para "tomar el control de un proceso" y luego escribir en una dirección de memoria un valor, o cambiar un valor de una dirección de memoria **(SI NO SE ENTIENDE ESTO VER LAS PUBLICACIONES ANTERIORES PARA UN MEJOR ENTENDIMIENTO)...

Acá está el código:

#include <>
#include <>>
#include <>
#include <>
#include <>

int main()
{
ptrace(PTRACE_ATTACH, 3895, NULL, NULL);
wait(NULL);

ptrace(PTRACE_POKEDATA, 3895, 0x8070bd4, 1111111111);

ptrace(PTRACE_DETACH, 3895, NULL, NULL);


return 0;
}

Pasamos a explicar:
·PTRACE_ATTACH: con esto nos "atachamos" al proceso, es decir, tomamos su control..cabe destacar que el proceso al que nos atachamos ya está en ejecución. Es como si abriera el proceso para modificarlo.
·3895: es el PID (Process ID), es decir, un identificador que identifica a cada proceso, es único y diferente para cada proceso. Para poder ver los PIDs de todos los procesos en ejecución ejecutamos "ps aux" (sin las comillas) en una terminal y nos saldrá una lista con todos los procesos que se están ejecutando en nuestro sistema y en la segunda columna llamada "PID" nos sale el PID de cada proceso..cabe destacar que los PIDs son números. Este PID es el que colocamos aquí.
·PTRACE_POKEDATA: esto nos permite introducir valores en la memoria del proceso al que nos atachamos anteriormente.
·0x8070bd4: esta es la dirección de memoria en donde modificaremos y almacenaremos el valor que especificaremos a continuación.
·1111111111: este es el nuevo valor que se introducirá en la dirección de memoria que especificamos anteriormente. Lo pueden cambiar por los nuevos valores que quiera...cabe destacar que es un valor long en este caso, así que intenten probando este número por si el valor que quieren cambiar no cambia...
·PTRACE_DETACH: dejamos seguir corriendo al proceso normalmente ya que hicimos las modificaciones que quisimos en el mismo.

Bueno..este código lo que hace es modificar al "Balance" en el Blackjack (juego que viene por defecto con Ubuntu). Acuerdensen que tienen que introducir el PID correcto del proceso para abrirlo y modificarlo, el PID una vez que finalizan y vuelven a abrir el proceso cambia, así que estén atentos.

Sigan investigando acerca del ptrace() que es muy interesante...
Y si quieren encontrar las direcciones de memoria de diferentes valores de diferentes procesos utilizen: scanmem (busquenlo en Google.com e informense sobre su uso).

Gracias...me voy a dormir :D
Hasta la próxima!
GodSys

Linux: Abriendo nuevos caminos!

Hola gente! Tanto tiempo...disculpen todos estos días de ausencia, estaba en otra y con complicaciones con Interet :S...

Bueno...vengo con unas buenas!! Por fin me libere de esa cárcel denominada "Window$"..
Sí señores, aquí estoy, dentro de Linux... Tenía archivado por ahí el Live CD de instalación de Ubuntu (una de las mejores distribuciones de Linux) y se m ocurrió volver a instalarlo porque me cansé del Window$..me canse de estar atado!!
Linux es libre, gratis, código abierto... Te abre muchísimos caminos... Al programar sobre él me siento como un Dios, me da el poder de todo!!

No los estoy obligando a nada..sólo quiero insitarlos a que prueben este fabuloso Sistema Operativo llamado Linux.... Hay millones de distribuciones Linux, recomiendo Ubuntu...

Bueno..ahora este blog compartirá tanto información sobre la programación, el hacking y el cracking dentro de Window$ y de Linux....

Linux no tiene nada que envidiarle a el Sistema Operativo de Micr0soft... lo único que voy a extrañar de Window$ a la hora de programar son sus APIs.. pero la programación sobre Linux es mucho mejor, además provee de funciones que hacen mucho más fácil el trabajo...tiene más posibilidades que en Window$...
Y además a ser de código abierto, puedes leer, modificar y distribuir el código fuente de todos los programas y aplicaciones de este....