Vale, gracias, le agregué más información al post anterior, revísalo porfa, y también te he mandado un PM, gracias de antemano.
Bueno, he estado revisando tu programa.
El problema parece ser que es debido a Framework, como ya sabes, todos los programas creados con Visual Studio son interpretados por una VM, en VB6 la VM es MSVBVM60.DLL, en las versiones posteriores son ejecutados por las librerías y dependencias Framework.
Después de estar revisando un poco el ejecutable, las operaciones de incrementar o restar son ejecutadas evidentemente por la VM de VisualStudio (Framework), dichas librerías ejecutan y procesan el código a su manera, realmente no entiendo como demonios funciona internamente, lo que sí es seguro es que los punteros son asignados en espacios de memoria de forma aleatoria.
Cuando ejecuto tu programa, puedo encontrar el pointer (puntero) asignado a tu variable. Después de incrementar el valor, la variable "salta" y se almacena en otra dirección de memoria nueva (
ésto es MUY raro y jamás lo había visto, es por culpa del maldito Framework), curiosamente, el pointer que he encontrado es capaz de seguir ese "salto" y continua mostrando el valor correcto de tu variable.
El problema viene aquí: Cuando ejecuto de nuevo el programa, el pointer que había encontrado antes ya no sirve (ésto es la primera vez que lo veo). He usado el pointer-scanner para comprobar si son punteros de multi-nivel, pero no es el caso.
También he probado de crear un AA script, funciona correctamente, pero cuando reinicio el programa, Framework interpreta el código de alguna forma extraña y deja inservible el AA script.
____________________________________
Mi conclusión es que Framework nos está jugando una mala pasada. Por alguna razón, cuando ejecutas el programa, asigna sus funciones en un rango aleatorio de la memoria (offsets). Con el resto de ejecutables que he trabajado, las variables se asignan de forma aleatoria, pero sus pointers y funciones (offsets) siempre ocupan la misma dirección relativa. Me explico:
Ejecuto por primera vez tu programa, tras encontrar la dirección, Framework hace lo siguiente:
003D06BE - FF 80 4C010000 - inc [eax+0000014C]003D06BE = Es el offset encargado de incrementar tu variable
inc = Es la instrucción ASM que incrementa
[eax+0000014C] = La dirección de memoria con tu variable
La segunda vez que ejecuto tu programa ocurre lo siguiente:
005806BE - FF 80 4C010000 - inc [eax+0000014C]El offset ha cambiado pasando de 003Dxxxx -> 0058xxxx, pongo la mano en el fuego que el culpable de éste cambio sin-sentido es debido al Framework.
Lamentablemente no puedo darte una solución a tu problema
Deberíamos mover tu pregunta al foro oficial de CheatEngine, a ver si alguien puede lanzar un poco de luz a éste problema
__________________________________________
EDITEstoy revisando más a fondo tu problema. Parece ser que la función AOBSCAN() se puede encontrar el offset exacto que realiza el incremento para luego hacer una inyección de código o incluso dumpear la dirección de memoria donde se almacena tu variable.
El problema es que no soy muy experto en usar el AOBSCAN() bajo CE, estoy haciendo pruebas, pero creo que se puede conseguir