Un detalle la dirección que encontraste es decimal u octal? Porque cuando llamas a WriteProcessMemory le estas pasando una dirección en octal OJO, si es decimal quita todos los ceros a la izquierda que tengas.
EDIT:
Estoy casi seguro que tu problema es que estas poniendo la dirección en octal, y de igual manera escribirá en la memoria del proceso solo que en una dirección que no quieres escribir.
EDIT:
Estoy casi seguro que tu problema es que estas poniendo la dirección en octal, y de igual manera escribirá en la memoria del proceso solo que en una dirección que no quieres escribir.
Código (c) [Seleccionar]
WriteProcessMemory(process, (LPVOID)405254, (LPVOID)&data, strlen(data), NULL)