Quiero hacer una prueba sencilla para lograr un objetivo. Intentar leer en la memoria RAM unos valores de las variables que no conoces, localizar esa variable, crear tu aplicación aunque sea en C# capaz de leer sus valores. Hay que crear dos proyectos. Uno como hice abajo, lo que hace es con un timer incrementar el valor del componente progressBar y mostrar su valor en label1.
Como muestra en la imagen de abajo, se ha incluido en el Form1, un lable, un button, un timer y progressBar.
Su código fuente es:
Código
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Leer_RAM { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // Si pulsas el botón, empieza el contador. private void button2_Click(object sender, EventArgs e) { timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { int Valor = progressBar1.Value; // Guarda el valor actual. progressBar1.Increment(1); // Incrementa a 1. label1.Text = Valor.ToString(); // Muestra el valor del incremento del ProgressBar. // Si el valor llega a 100. if (Valor == 100) { progressBar1.Value = 0; // Empieza desde 0. } } } }
Este programa se recomienda ejecutarlo directamente del .exe compilado, no usando Visual Express 2013. Supuestamente no tengo idea del código fuente del .exe de arriba, tener claro que no lo conoces, se los dejo para dar ideas. Ahora hay que crear otro proyecto desde cero, puedes usar C++ que es más rápido a la hora de intercambiar información, para dejarlo más fácil ya que estamos aprendiendo, usaremos C#, y los que quieran VB .net.
Para leer los valores del archivo.exe, hay que verlo desde un descompilador o algún programa que lea en tiempo real el proceso. Aquí hay uno, es muy utilizado para cambiar vidas infinitas a los juegos de PC. Se logra buscar esa variable, se le suma nuevos valores y tiene más vida, en nuestro caso no trataremos este tema, se tratará de localizar dicha variable y ver como cambian sus estados. Luego crear un progrma a parte que lea dichas variables y mostrarla en un label.
Cheat Engine
http://www.cheatengine.org/?referredby=CE63
Puedes usar otro programa y también recomendarlo si parece interesante.
La idea principal es, ser capaz de localizar esas variables, hacer una aplicación que los lea y muestre en un form1 con C# o otro lenguaje que más te guste.
El ejemplo que puse arriba quiero sacar los valores que muestra en label1, que es el mismo del progressBar1.
En un juego de Rally, quiero sacar el cuentakilómetros indicado en pantalla a mi propia aplicación, pero esto es otra historia mucha más adelante. Por ahora me conformo en entender lo más básico.
¿Parace fácil?
Un cordial saludo.