Buenas,
He seguido viendo ejemplos y por fin he conseguido hacer algo con CE
El problema que tenia es que no era capaz de encontrar la dirección estática de las variables que quería. Lo he solucionado con el siguiente script para auto assemble.
Con este código cambio el valor de una variable a 100, sin importar el cambio de dirección.
[ENABLE]
alloc(stack1,1024)
label(originalcode)
label(exit)
label(returnhere)
stack1:
mov [esi+000000E0],#100
originalcode:
//mov [esi+000000E0],eax
exit:
jmp returnhere
"ClientRuntime.dll"+93600D:
jmp stack1
nop
returnhere:
[DISABLE]
dealloc(stack1)
"ClientRuntime.dll"+93600D:
mov [esi+000000E0],eax
Este esto son los datos de memory viewer que hay que extraer para elaborarlo analizando la dirección desde find out what writes to this address
ClientRuntime.dll+93600D - 89 86 E0000000 - mov [esi+000000E0],eax
Este es el manual que segui:
https://www.youtube.com/watch?v=Ov37X9Ldn44Funciona medio bien, me explico, la variable que analizo, no solo cambia cuando es escrita por el proceso que encuentro, entonces en algunos momentos del juego el scrip deja de ser efectivo 100%
He intentado crear el mismo script para las instrucciones que encuentro en find out what accesses to this address, ya que el count de estos aumenta cada segundo pero cada vez que intento activar el script el juego se cierra.
Estos son los dos procesos con los que intento hacer el script y el juego se cierra:
ClientRuntime.dll+935C25 - 81 3A 40420F00 - cmp [edx],000F4240
ClientRuntime.dll+3C18A7 - FF 30 - push [eax]
No se si es que escribo mal el código ya que la estructura no es igual o por otra cosa.
Cualquier ayuda sera agradecida.
Un saludo,
Hola, me alegra leer éste tipo de cosas, veo que has avanzado bastante. Respecto a tu última pregunta... los otros opcodes que has encontrado (ClientRuntime.dll+935C25 - 81 3A 40420F00 - cmp [edx],000F4240 & ClientRuntime.dll+3C18A7 - FF 30 - push [eax]) seguramente sean sharedcode. Es decir:
La instrucción cmp [edx],000F4240 debe acceder o modificar tu variable y alguna otra variable adicional, por eso cuando inyectas el autoassemble en ese opcode también cambias el valor a otra zona de memoria y por eso crashea. Sigue leyendo el tutorial y aprende como disseccionar los sharedcodes
Si tienes dudas me preguntas