GodSys

GodSys
El Poder de la Programación

viernes, 4 de junio de 2010

Grupo de hacking y programación.

Para los interesados en formar un grupo de hacking y programación, y uso de diferentes sistemas operativos, como Linux, contactenme: g_alan94@hotmail.com

Saludos

viernes, 7 de mayo de 2010

Linux: Wine

Sé que muchos extrañarán Windows, las aplicaciones y ejecutables de este, ya que Linux no puede correr programas de Windows..pero esto se soluciona fácil:

Tienen que instalar Wine que es un conjunto de librerias y aplicaciones que dan base para la ejecución de programas de Windows en Linux, es decir, es un conjunto de librerías que permiten ejecutar estos programas.

Instalar Wine desde la terminal en sistemas basados en Debian (como es el caso de Ubuntu):
#sudo apt-get install wine

Una vez instalado les va a aparecer el icono de Wine en el menú y de ahí poder cambiar su configuración. También pueden ejecutar los programas de Windows, a través de Wine, entrando desde la terminal en la carpeta donde se encuentra el programa y utilizando wine nombre_de_programa.exe. Por ejemplo:

#cd Carpeta_con_Programas_Windows
#ls
programa_windows.exe
programawin.cfg
Hola_Carpeta
#wine programa_windows.exe

Gracias..cualquier duda consultarme a mí e intentaré ayudar en lo que más pueda.!
Saludos!
GodSys

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....

domingo, 28 de marzo de 2010

Nuevo proyecto: Página Web!

Hola, qué tal amigos?
Vengo con una idea entre manos...la creación de un sitio web...

Con el blog está todo bien, pero ando buscando más libertad a la hora de transmitir la información y de compartir ideas, aplicaciones y noticias....

Ando buscando gente que se una a este proyecto: la creación de un sitio web!! Necesito gente que sepa HTML y PHP para arrancar con la creación de la página web...y gente que se vaya integrando a este sitio con conocimientos detallados sobre diferentes temas (como programación, hacking, cracking, étc.), y así ir aportando de a poco, para que juntos crezcamos! Es decir, formar juntos una "COMUNIDAD HACKER" =D

Gracias...espero sus repuestas!
Para el que quiera unirse al proyecto y a la comunidad aquí dejo mi mail: g_alan94@hotmail.com

miércoles, 17 de marzo de 2010

Hack x Crack: Todas las revitas!

Cuaderno 1

-Crea tu primer troyano indetectable por los antivirus
-FXP:sin limite de velocidad, utilizando conexiones ajenas
-Los secretos del FTP
-Esquivando firewalls
-Pass mode versus port mode

Link: http://www.megaupload.com/?d=W2Z7MG52

Cuaderno 2
-Code/decode bug (como hackear servidores paso a paso)
-Ocultacion de ip: primeros pasos
-Aznar al frente de la gestapo digital

Link: http://www.megaupload.com/?d=RDW8EDQK

Cuaderno 3
-Ocultando nuestra ip, encadenando proxys
-proxy: ocultando todos nuestros programas tras las cadenas de proxies
-practicas de todo lo aprendido

Link: http://www.megaupload.com/?d=1W6M6W2D

Cuaderno 4
-Crea tu segundo troyano indetectable e inmune a los antivirus
-Radmin: remote administrator 2.1, un controlador remoto a medida

Link: http://www.megaupload.com/?d=OO5PHELT

Cuaderno 5
-Aprende a compilar, paso obligado antes de explicarte los exploits

-Rootkits, sin defensa posible
-penetracion de sistemas por netbios
-compilacion del netcat con opciones “especiales”
-netbios: un agujero de seguridad no reconocido por microsoft
-La censurado en internet

Link: http://www.megaupload.com/?d=RG263JIQ

Cuaderno 6
-Curso de visual basic: aprende a programar desde 0
-Ficheros Stream (invisibles, peligrosos y ejecutables)
-Rippeando videos Divx, El rey
-Ocultacion avanzada de ficheros en windows xp
-Listado de puertos y Servicios: imprescindible!!!
-IPHXC: El tercer troyano de hack x crack (parte 1)
-Trasteando con el hardware de una lan

Link: http://www.megaupload.com/?d=RX8VWTGS

Cuaderno 7
-Apache, El mejor servidor web- transforma tu pc en un servidor web
-El cuarto troyano de Hack x Crack: El CCPROXY, un servidor oculto para anonimizar nuestras conexiones
-IPHXC (segunda parte) nuestro tercer troyano
-La inseguridad del protocolo POP3: Capturando las claves de nuestra cuenta de correo
Los primeros pasos con IRIS (sniffando la red)
-Accede por Telnet a servidores POP3, entendiendo los protocolos
-Curso de visual basic, segunda entrega
-Rippeando (2ª parte) el audio: AC3 — MP3 –OGG
-Consigue una cuenta POP3 gratis

Link: http://www.megaupload.com/?d=VHWJZKOV

Cuaderno 8
-Linux: Netcat Perl “pipes”
-Reverse shell, burlando al firewall
-Encadenando programas
-Penetracion inversa en PCs remotos
-SMTP: descubre los protocolos de internet
-Apache: Configuracion, comparte ficheros desde tu propio servidor web
-Jugando de nuevo con el NETCAT
-SERIE RAW: protocolos
-Visual Basic: “Arrray de controles” “vectores” “ocx”

Link: http://www.megaupload.com/?d=F0SZD2L8

Cuaderno 9
-NMAP: El mejor escaneador de internet: instacion, interfaz grafica, opciones de uso
-Iniciacion al PORT SCANNING – Tecnicas de “scaneo”
-Serie RAW: IRC – Internet Relay Chat
-Chateando mediante Telnet
-GNU Linux- Permisos de archivo CAT y otros comandos
-APACHE- Modulos y servidores virtuales
-Descubre los protocolos de “la red” con nosotros
-VISUAL BASIC – Creando librerias. Acceso a datos

Link: http://www.megaupload.com/?d=SR8TU6GC

Cuaderno 10
-GNU LINUX- Gestion de usuarios, editores de texto: “VI”
-Serie Raw: Conociendo protocolos y su seguridad
-Curso de Visual Basic (V) acceso a datos II,
-XML: el futuro de la transferencia de datos
-Apache parte IV, trio de ases: APACHE- PHP- MYSQL

Link: http://www.megaupload.com/?d=SJR633FY

Cuaderno 11
-Programacion en GNU Linux: Bash Scripting y C
-Serie Raw: entendiendo los protocolos y su seguridad; Raw 5: FTP (File transfer protocol)
-Intrusión en redes de área local, la pesadilla de todo administrador
-Apache parte V: Configura tu servidor apache como servidor proxy
-Validacion de documentos XML: DTD primera parte: creacion de DTDS
-Curso de Visual Basic (VII) IIS Bug exploit: usando el webbrowser
-Augusta Ada Byron, Lady Lovelace (1815-1852) el primer programa

Link: http://www.megaupload.com/?d=FARER0Z1

Cuaderno 12
-Explotando los servidores FTP:atravesando firewalls por ftp: aprende a utilizar los servidores ftp como anonimizadores!!!
-Raw 6: FTP segunda parte
-Servidor Web Apache: Protege tu apache configurandolo de forma segura: restriccion de accesos – autentificacion – analizando a nuestros visitantes – logs codificación – HTPASSWD – Cortafuegos
-Visual Studio.net: crea tu propia herramienta de cracking
-Validacion de documentos XML: DTD segunda parte, atributos y elementos
-IIS bug exploit, nuestro primer scanner
-Programacion en GNU/Linux, desarrollo de aplicaciones en entornos unix e iniciación al lenguaje C

Link: http://www.megaupload.com/?d=DBFPM4EQ

Cuaderno 13
-Manipulación de documentos XML: El Dom, 1ª parte: teoria del Dom e intterfaz Domdocument
-Programación en GNU/Linux, desarrollo de aplicaciones en entornos unix e iniciación al lenguaje C
-Curso de Visual Basic: un cliente, una necesidad, tenemos un proyecto (parte I)
-RAW 7: HTTP (Hypertext Transfer Protocol)
-Port Scanning: Escaneando ordenadoros Remotos: tipos de scaneos

Link:http://www.megaupload.com/?d=MHS0Q1L1

Cuaderno 14
-Curso de PHP, empezamos a programar, PHP (1)
-Serie RAW (8) DNS – Domain Name System
-Curso de Visual Basic, un cliente, una necesidad, un proyecto, (parte II)
-Programación en GNU Linux, desarrollo de aplicaciones en entornos unix e iniciación al lenguaje C (III)
-Manipulacion de documentos XML: El Dom 2ª parte. Interfaz XMLDOMNODE (I)
-Tecnicas de Hijacking

Link: http://www.megaupload.com/?d=GXHQDSQM

Cuaderno 15
-Curso de PHP (II) Aprende a programar tu propio generador de IPs
-Serie XBOX Life, instalando Linux en una Xbox
-RAW 9: MSN (Microsoft Messenger)
-Curso de Visual Basic, Un cliente, una necesidad, un proyecto, (parte III)
-Programación en GNU Linux, desarrollo de aplicaciones en entornos unix e iniciación al lenguaje C (IV)

Link: http://www.megaupload.com/?d=8NXM4HHA

Cuaderno 16
-Curso PHP: Aprende a manejar ficheros con PHP
-Programación en GNU Linux, programación del sistema: El sistema I.P.C.
-Manipulación de documentos XML: El DOM tercera parte
-Serie XBOX LIFE: EVOLUTION X tu mejor amigo
-RAW 10 – NNTP (Usenet)

Link: http://www.megaupload.com/?d=TT2WZCCQ

Cuaderno 17
-Hackeando un servidor Windows en 40 segundos!!!
-Programación en GNU Linux: programación del sistema, el sistema I.P.C (II)
-Curso de TCP/IP, introducción
-Curso de PHP, (4ª entrega) Aprende a manejar cadenas de texto en PHP
-Serie XBOX LIFE (III) Cambiando el disco duro y parcheando juegos

Link: http://www.megaupload.com/?d=ST8D0SVY

Cuaderno 18
-Curso de PHP, manejo de formularios web
-Serie XBOX LIFE (IV) Convirtiendo nuestra xbox en un centro multimedia
-Programación en GNU Linux, memoria compartida
-Curso de TCP/IP (2ª entrega) El protocolo de transporte UDP (protocolo de datagramas de usuario)
-El lenguaje XSL, transformacion del documento XML
-La realidad de los virus informáticos

Link: http://www.megaupload.com/?d=94O4IY91

Cuaderno 19
-Programación en Gnu Linux, colas de mensajes
-XBOX LIFE V – Jugando online gratis
-Crackeando las restricciones de seguridad de windows
-Curso de seguridad en redes – IDS
-Curso de PHP – Aprende a manejar sockets con PHP

Link: http://www.megaupload.com/?d=1GILKRA7

Cuaderno 20
-Curso de PHP: Aprende a manejar sesiones
-Curso de TCP/IP (3ª entrega) TCP, 1ª parte
-XBOX LIFE VI, Menu X
-Curso de seguridad en redes – IDS (II)

Link: http://www.megaupload.com/?d=DUX6LD1X

Cuaderno 21
-Trabajando con bases de datos en PHP
-Curso de TCP/IP: 4ª entrega: TCP 2ª parte
-IDS, Sistema de Detección de Intrusos, tercera entrega, pluggins de salida en SNORT
-XBOX LIFE VII, Creando nuestro Slayer

Link: http://www.megaupload.com/?d=QCVC9DFA

Cuaderno 22
-Asaltando foros: guia paso a paso
-Firewalls: Qué son, cómo funcionan y cómo saltárselos

Link: http://www.megaupload.com/?d=SGWAN1E4

Cuaderno 23
-Cómo explotar fallos Buffer Overflow
-Curso de TCP/IP: ICMP (protocolo de mensajes de control de internet)
-Diseño de cortafuegos (parte II)

Link: http://www.megaupload.com/?d=5ZIWZS7G

Cuaderno 24
-Los bugs y los exploits, esos pequeños bichos y diablos
-Curso de TCP/IP: La capa IP primera parte. Las direcciones IP
-Hacking de Linux
-Diseño de cortafuegos de red con iptables (3ª parte del curso de firewalls)

Link: http://www.megaupload.com/?d=K3J8TA41

Cuaderno 25
-Los bugs y los exploits, esos pequeños bichos y diablos, segunda parte
-Vulnerabilidades Web, atacando la sesión de usuario
-Curso de TCP IP: La capa IP, segunda parte, (los datagramas)

Link: http://www.megaupload.com/?d=0Q5R23T1

Cuaderno 26
-Sombras en internet: sniffando la red – formas de detección – utilidades para la detección -ethereal: descripción. Capturando tráfico. Estableciendo filtros. Capturando información sensible. Telnet vs Secure shell
-Atacando la caché DNS
-Curso de TCP IP: La capa IP 3ª parte: fragmentación de datagramas

Link: http://www.megaupload.com/?d=8V45BQON

Cuaderno 27
-Taller de Python “episodio 1″
-Taller de Criptografía – El sistema PGP
-Curso de TCP IP: protección con iptables, en una red corporativa
-Buffer Overflow
-Hackeando el núcleo

Link: http://www.megaupload.com/?d=CRF30TLN

Cuaderno 28
-Hacking Estragegia, capitulo 1
-Curso de Python, capitulo 2
-Investigación, poniendo a prueba el antivirus
-Explotando Heap/BSS Overflows, capitulo 2
-Programación, curso de C, capitulo 1
-Taller de criptografía, capitulo 2
-La “ley de la mordaza”: informar es DELITO

Link: http://www.megaupload.com/?d=SRYKBNLB

Cuaderno 29
-Hacking estrategia: infiltración en una red wireless protegida
-Capitulo III: Taller de criptografía
-Control de Logs en GNU/LINUX
-Explotación de las Format Strings, capitulo III
-Shatter Attacks
-Curso de C, capitulo II
-FAQ, curiosidades de Gmail/Google

Link: http://www.megaupload.com/?d=FTFGWJGF

Cuaderno 30
-Taller de criptografía, capitulo IV
-Ataques a formularios web
-Los secretos del protocolo SOCKS
-Creamos una Shellcode paso a paso
-Capitulo III: Curso de C: Punteros y Arrays
-Hack mundial

Link: http://www.megaupload.com/?d=K37CMYUZ

sábado, 20 de febrero de 2010

Direccion de memoria dinámicas y estáticas, Pointers y Offsets.

Bueno. Bienvenidos nuevamente a otro tutorial. Creo que después de este tuto van a salir todos hechos unos programados de cheats excelentes xD.
Hoy vamos a ver lo más difícil de las direcciones de memoria: las direcciones de memoria dinámicas.
Qué son las direcciones de memoria dinámicas? Recuerdan que en la publicación anterior vimos como editar un valor de una dirección de memoria, bueno, resulta que esta dirección de memoria en la que editamos el valor era estática, es decir, nunca cambia, siempre va a ser la misma, en este caso era 0100579C. Las direcciones de memoria dinámicas en un programa cambian cuando este se cierra y se vuelve a abrir, o cuando se reinicia, o cuando en un juegos se cambia de mapa, o en el medio del juego. Por ejemplo, tenemos el Counter-Strike y queremos encontrar la dirección de memoria donde se almacena el valor del dinero. Buscamos con el Cheat Engine hasta que logramos encontrarla, por ejemplo, es esta 03fbf5c4. Todo bien, cambiamos el valor del dinero y nos ponemos 16.000. Luego, cerramos el juego y cuando lo volvemos a ejecutar y lo abrimos con el Cheat Engine nos damos cuenta que el valor del dinero ya no se encuentra en la dirección 03fbf5c4, sino que ahora el valor del dinero se encuentra en otra dirección que desconocemos, como por ejemplo 01aa25c4. Lo que ha pasado acá es que la dirección es dinámica y cambió.
Qué problemaaa!!! Ahora cada vez que queramos cambiar valores en el Counter-Strike tendremos que buscar las direcciones de memoria cada vez que cambiemos de mapa, o reiniciemos el juego.
Bueno. Calma!.. Hay una solución: el "Offset" y el "Address of Pointer".
Qué es esto? Pongansen a pensar. De donde salen las direcciones dinámicas? La respuesta es de la suma del "Pointer" y del "Offset". Sé que aún no entienden, pero intentaré explicarlo lo más fácil.

Bueno...supongamos que tenemos la dirección dinámica donde se guarda el dinero del Counter-Strike, la dirección es 03fbf5c4. Esta dirección es guardada en otra dirección de memoria pero que es estática, por ejemplo, en 03bb546c. O sea, la dirección dinámica donde se almacena el dinero es un número hexadecimal en sí, y este número es almacenado en la dirección 03bb546c, que es una dirección estática, no cambia. Pero la dirección del dinero (que es dinámica) no se almacena tal cual en la dirección estática, sino se le resta algun numero, como por ejemplo, 1CC (este número es llamado Offset, es diferente en todos los programas, pero es estático, nunca cambia). Depués de restarle a la dirección dinámica el Offset, queda un número (llamado Pointer) que es el que realmente se almacena en la dirección estática (en este caso es 03bb546c la dirección estática).

Ahora sí, está calrito.

Dirección de memoria donde se guarda el dinero del CS 1.6 (es dinámica la dirección) = 03fbf5c4.
A
03fbf5c4 se le resta 1cc (que es el Offset) y da como resultado 3fbf3f8 (este es el denominado Pointer). Este Pointer es el que se almacena en la dirección de memoria estática.
Ahora, si queremos encontrar la dirección de memoria dinámica que almacena el valor del dinero en CS 1.6, debemos ver que valor esta almacenado en la dirección de memoria estática(
03bb546c), en este caso va a ser 3fbf3f8 (que es el Pointer) y sumarle 1cc (que es el Offset). Y nos da como resultado la dirección de memoria dinámica que contiene el valor del dinero!!!

Vamos a ilustrarlo:
Pointer + Offset = Dirección de memoria dinámica.
Pointer se almacena en dirección de memoria estática.
Offset es estático.

Para aclarar duda, la dirección de memoria del dinero es dinámica porque lo que cambia es el Pointer. Puede ser cualquier número, que sumado más el Offset, nos da como resultado la dirección de memoria dinámica.

Esto ha sido una breve explicación. Cualquier duda comuniquensen conmigo o busquen en internet, aunque no hay demasiada explicación sobre esto, pero seguro encuentran algo por los foros (como Foro PortalHacker)

En la próxima publicación veremos como aplicar todo esto en un Cheat creado y programado en C++ por nosotros para el CS 1.6 u otros juegos. Vayan practicando y estudiando..!!

miércoles, 17 de febrero de 2010

C++: Buscaminas (editando valores)

Antes de empezar con este tuto quiero que lean la publicación anterior para tener una idea de lo que es una dirección de memoria y los valores que contienen. Para qué sirven y qué se puede hacer.

Bueno..si ya lo leyeron ahora vamos a basarnos en la programación en el lenguaje C++ pero dentro del ámbito de las direcciones de memoria y su edición.

Bien. Seguiremos con el Buscaminas e intentaremos editar el valor que está en la dirección de memoria del tiempo, pero a través de un programa compilado por nosotros.
Comencemos:

Necesitamos:
>>Un compilador de C++ y un IDE. Podría ser Dev-C++ que viene con el compilador "gcc"(descargar de aquí) o Code::Block con la implementación de MinGW.
>>Ganas de aprender a programar.

EMPEZANDO A PROGRAMAR
Abrimos el Dev-C++ o el IDE que estén usando para programar y vamos a crear un proyecto nuevo (buscar información acerca del Dev-C++ para crear proyectos (es muy fácil!)). Ya tenemos el proyecto, sólo nos falta comenzar a escribir las líneas de código que darán origen a nuestro programa.
Okey! Todo bien hasta acá! Para programar la aplicación que nosotros queremos vamos a hacer uso de las famosas APIs de Windows, es decir, las funciones de las DLLs de Windows.
Empezamos a programar:

#include "windows.h"
#include "stdio.h"


Donde vemos las comillas (") debemos reemplazarlas por un "<" al principio, en la primera comilla, y un ">" a lo último, en la segunda comilla. O sea, que la palabra windows.h y stdio.h queden encerradas por un "<" (sin las comillas) al principio y otro ">" (al final).

Con esto incluímos las bibliotecas necesarias para comenzar a utilizar las APIs de Windows, se requiere sí o sí.
Bueno, vamos ya al código completo y lo explicaremos parte por parte:

#include "windows.h"
#include "stdio.h"


int main()
{
int n = 24;
DWORD pid;
HANDLE process;
HWND wnd = FindWindow(0, "Buscaminas");

GetWindowThreadProcessId(wnd, &pid);
process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);

WriteProcessMemory(process, (LPVOID)0x0100579C, &n, 8, NULL);

CloseHandle(process);

return 0;
}


EXPLICACIÓN DEL CÓDIGO
>>int main() -> Inicio del programa. Todo programa hecho en C++ comienza igual
>>{ -> Llave de comienzo. Indica que el código que se escriba este esta llave y la Llave de cierre va a ser lo que conformará al programa y su inicio.
>> int n = 24; -> Declara una variable "Integer", es decir, que contiene un número decimal. Llama a la variable como "n" y coloca el valor "24" dentro de la misma. Ese valor será el que colocaremos, por medio de las APIs, dentro de la dirección de memoria del tiempo del Buscaminas.
>> DWORD pid; -> Declara una variable característica de Windows. La variable pasa a llamarse "pid" que hace referencia a "Process ID", es decir, el ID del procesos del Buscaminas que será abierto para guardar en "pid" el ID del proceso.
>> HANDLE process; -> Otra variable característica de Windows que declara a "process", que guardará la dirección del proceso del Buscaminas.
>> HWND wnd; -> Igual que la anterior. Pero guarda la "dirección" de una ventana que es obtenida con "FindWindow()".
>> FindWindow() -> Es una API de Windows que permite encontrar ventanas colocando el título de la misma. Ej.: FindWindow(0, "Título de ventana").
>> GetWindowThreadProcessId(wnd, &pid); -> API que encuentra el PID de un proceso a través de la búsqueda de una ventana del mismo.
>> OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid) -> Abre el procesos para escribir y leer sobre él.
>> WriteProcessMemory(process, (LPVOID)0x0100579c, &n, 8, NULL); -> API más importante para esta implementación. Escribe en la memoria del proceso cambiando un valor. Recuerdan la dirección de memoria que nos salió en Cheat Engine, la dirección de memoria del tiempo del Buscaminas, esa dirección que costo buscarla. Bueno, en esa dirección de memoria vamos a escribir para cambiar el valor del tiempo. Esa dirección era: 0x0100579c. Y ahí la tenemos, junto a ella está la variable "n", o sea, el nuevo valor que pasará a tener dicha dirección. Sencillo.
>> CloseHandle(process); -> Cerramos proceso.
>> } -> Llave de cierre. Cierra el main() del programa.

Bueno, después de que tenemos el código, compilamos con Dev-C++ -> Ctrl+F9 y el proyecto se compilará, ahora tendremos un ".exe". Ctrl+F10 y el ".exe" se ejecutará. Bien, ahora abrimos el Buscaminas y ejecutamos el programa que acabamos de crear con este código, gracias al Dev-C++ y su compilador. Y WOOOWW!!! El valor del tiempo ha cambiadooo!!!!! Investiga más sobre esta técnica y sobre el código.

Espero que lo entiendan. Estoy algo corto de tiempo, intenté explicarlo lo más claro posible. Lo expliqué con mis palabras, todos los término utilizados y definiciones son propias, lo hice "como me salió del alma". Acepto quejas!!

Si tienen alguna duda sobre el funcionamiento del agluna API busquen en Google sobre la misma, hay mucha información en Internet. Mi intención fue explicarle lo fundamental de este código, su uso, no quiero hacer un tutorial completo de C++, para eso existen millones de manuales.
Exploren, búsquen por la red los millones de manuales y tutoriales que hay sobre estos temas. Yo sólo intento dar una mano!

Gracias...
GodSys

Cheat Engine: Buscaminas.

Este es el primer tutorial. En este explicaremos como editar un valor en memoria de un juego, en este caso, el buscaminas de Windows. Okey, comencemos! Programas que utilizaremos: >>Cheat Engine que lo pueden descargar desde aquí >>Buscaminas (winmine.exe) de Windows. Viene por defecto con Windows.

CHEAT ENGINE
Es una aplicación programada en Delphi, muy útil, que permite la edición de un valor de la memoria de un programa que se está ejecutando. Por ejemplo, estamos jugando Counter-Strike(espero que todos lo conozcan) y nos quedamos sin balas, con esta maravilla podemos editar el valor de una dirección de memoria. Como algunos sabrán, el número de balas que tenemos es un valor, y este valor se guarda en la memoria, concretamente en una dirección de memoria, donde el programa puede acceder a la misma para leer o escribir dicho valor. Con Cheat Engine podemos acceder desde afuera para cambiar el valor de esta dirección de memoria. Entendido??

COMENZANDO: Intentaremos congelar el tiempo en el Buscaminas de Windows.
1_ Primero exploraremos el buscaminas. Vamos a Inicio>Todos los programas>Juegos>Buscaminas, o sea, ejecutaremos el Buscaminas. Ahora que tenemos el Buscaminas corriendo en nuestra PC podemos ver que al empezar a jugar el tiempo empieza a correr. La pregunta es...Donde se guarda el tiempo que va transcurriendo? La respuesta es...Es un valor, por lo tanto, en una dirección de memoria.
Lo que haremos será acceder a esta dirección con el
Cheat Engine y cambiar o congelar el valor!!! No te asustes, es muy sencilo.
2_ Instalamos el Cheat Engine. Luego lo ejecutamos y v
emos un cartel que habla acerca de un tutorial, hacemos un click en "No". El programa se ve así:
3_ Ahora sí, a jugar con esos valores!!!! xD.
Cerramos el buscaminas y el Cheat Engine que habíamos abierto anteriormente.
Ahora volvemos a ejecutar el Buscaminas, pero no comenzamos a jugar. Ejecutamos el Cheat Engine. Ahora lo que vamos a hacer es abrir el proceso del Buscaminas que ya se está ejecutando, desde el Cheat Engine. Asi que vamos a hacer click e
n el icono de la computadora que aparece en verde.
Nos aparecerá la lista de todos los procesos que se están ejecutando en nuestra Pc ("Process List"). Bajamos la barra hasta abajo hasta encontrar el proceso winmine.exe ,o sea, es el Buscaminas que se está ejecutando. Y le damos a "Open" (abriremos el procesos dentro del Cheat Engine).
Ahora ya podemos ver en la parte superior del programa que hemos abierto el procesos winmine.exe (Buscaminas) desde el CH (abreviacioón que comenzaré a utilizar de ahora en adelante para el Cheat Engine xD). Ahora viene lo mas difícil (no tanto :D), tendremos que buscar la dirección de memoria en donde se almacena el valor del tiempo del Buscaminas. Volvemos al Buscaminas que tenemos abierto y vemos que todavía no hemos empezado a jugar, por lo tanto, el valor del tiempo es igual a 0. Entonces donde vemos que dice "Value:" (marcado con rojo en la sgte. imagen) hay un cuadro de texto, ahí escribimos 0, es decir, lo que vale el tiempo en el juego. Y luego le damos a "First Scan" (primer escaneo) y CH buscará en el juego todas las direcciones de memoria que contengan el valor 0 (cero).

Pero..Cuál de todas esas direcciones de memoria es la del tiempo??? Bueno..calma, buscar una dirección no es nada fácil. Sigamos.
Tenemos demasiadas direcciones. Lo que vamos a hacer es empezar a jugar al Buscaminas, es decir, haremos click en uno de los cuadrados para empezar a buscar minas xD. Listo, ahora el tiempo ha empezado a correr, y obviamente alguna de esas direcciones que tenemos ha empezado a correr al igual que el tiempo en el juego. Lo que ahora haremos será buscar esa dirección a través de su valor como lo hicimos anteriormente, entonces, donde dice "Value:" hay un cuadro de texto (donde ingresamos anteriormente el 0), allí vamos a colocar el valor del tiempo actual en el Buscaminas, para esto vamos a ver cuanto lleva el tiempo del juego e ingresaremos un numero más adelantado para esperar que el tiempo llegue a ese valor y pulsaremos rápidamente "Next Scan" (siguiente escaneo).
Por ej.: El tiempo en el juego va por 25 segundos, lo que haremos en CH es colocar 30 en el casillero y esperaremos a que el tiempo del juego llegue a 30 segundo y cuando lo haga rápidamente presionaremos "Next Scan".

Lo que hace esto es buscar el valor 30 dentro de todas las direcciones que aparecieron cuando colocamos el 0 para comenzar a escanear. Primero el tiempo estaba detenido, en 0, buscamos ese valor con "First Scan", nos aparecieron miles de direcciones con ese valor, entre ellas estaba la del tiempo. Luego para despejar las demas empezamos a correr el juego y el tiempo comenzo a correr también y colocamos el valor 30 para ser escaneado entre todas esas direcciones que anteriormente nos aparecieron y esperamos que el tiempo en el juego llegue a 30. Le dimos a "Next Scan", lo que hace esto es buscar un valor entre todas las direcciones de memoria que nos aparecieron antes. Y allí despejamos las demás direcciones y no quedó solo una, la del tiempo, con su respectivo valor.
Encontramos la dirección de memoria del tiempo con su valor!! Lo logramos, ahora solo nos queda jugar con ella. Es decir, podemos cambiarle su valor o congelarla en el valor actual y no seguirá corriendo el tiempo. En el caso del Counter-Strike, podríamos congelar el numero de balas y así nunca se nos acabarían :D.
Hacemos doble click en la dirección de memoria que contiene el valor del tiempo y abajo nos aparecerá la misma. Y si hacemos doble click donde dice "Value" (marcado con amarillo en la imagen anterior) podremos cambiar su valor, el valor de tiempo, poner el tiempo que queramos. O congelar el valor haciendo click en el cuadradito que aparece debajo de "Frozen"....

Como verán es algo muy fácil!!!
Perdonen el extenso tutorial, pero quiera que entiendan cada punto, lo que es una dirección de memoria, los valores, étc.
P.D.: El Cheat Engine se puede utilizar para una gran (por no decir inmenza) cantidad de juegos, cambiando valores en el juego...Ojo! Algunos valores corresponden a la luminosidad del juegos, la transparencia de las paredes, étc. Podrían hasta crear un cheat para ver a través de las paredes en el Counter-Strike, o agregarse vida.

En le próximo tuto veremos como hacer esto pero desde C++, es decir, creando un programa que haga esto!

Gracias...
GodSys

Nuevo Blog!!!

Bienvenidos a este blog que recién abre =D.
Bueno, este blog va a tratar mayormente sobre programación en diferentes lenguajes (ASM, C/C++, Visual Basic, Java, Perl, Python, HTML, PHP), sobre hacking y herramientas para esta actividad, sobre cracking y herramientas utilizadas para el mismo. También hablaremos sobre Sistemas Operativos como Linux y Windows, pero sobre todo Linux, descubriendo su "magia" y su poder. Además, hablaremos sobre juegos, crearemos y programaremos cheats para los mismos, utilizaremos técnicas de cracking sobre los estos.
Y junto con la programación tocaremos el tema de las APIs de Windows. Utilizaremos diferentes APIs para la programación de cheats, herramientas hacker, hook, inyección DLL.
Y de vez en cuando alguna que otra noticia o novedad dentro del ámbito informático será publicada.
Intentaré actualizar este sitio por lo menos 2 veces al día.
Gracias...
Que lo disfruten!!

GodSys