Modificacion de un archivo BIN ( SAVEDATA )

Bueno os comento lo que quiero hacer, quiero editar un archivo .BIN que en realidad es un savegame de un juego pero he intentado hacer ya casi todo lo que esta a mi alcance y no consigo descifrar su contenido para asi poder editarlo. realmente todo esto es para mi desarrollo.

he buscado por internet, googleando y todo en web inglesas, hay varios programas para editar dicho archivo desde dentro del programa pero el que yo tengo es de una version posterior y no es compatible con ese programa y me gustaria hacerlo yo manualmente.

Os comento que no es un archivo de imagen de cdrwin ninada de eso, he usado editores exadecimales y nada.
El contenido es inteligible, solo aparecen caracteres supongo que debe existir algun programa que lo traduzca a texto legible, pero no encuentro ninguno.

PD: comentaros de que no soy programador pero si entiendo un poco gracias a los tutoriales y varios libros que e comprado por mi cuenta.

Saludos
Nunca he editado un archivo así pero no creo que en un archivo de salvado de un juego encuentres mucho texto mas allá del nombre del jugador y alguna cosilla mas de ese tipo. Esos "caracteres raros" que ves es lo que hay.
Yo creo que seria para hacer algo tipo... pokesave, no? pero para otro juego, se sabe que al guardar progreso, lo que se escribe tiene un significado, de ahi el pokesave, um... eso me da una idea... ya os contare si sale bien xD
exactamente es lo que dice nazareth jejeje pero para el proevolution soccer 2010 para pc, se que ese .bin contiene las caracteristicas de mi Leyenda, pero tiene que estar encriptada o algo asi porque no se lee nada solamente caracteres raros como os comente, esta el editor de leyendas del proevolution 2009 pero no es compatible con el de 2010 porque tendra otra forma de escritura u otra encriptacion.
DarkJedah escribió:se que ese .bin contiene las caracteristicas de mi Leyenda, pero tiene que estar encriptada o algo asi porque no se lee nada solamente caracteres raros como os comente


A eso se le llama archivo binario [+risas]

Prueba a abrir un MP3 o una imagen con un editor de texto plano. Veras los mismos "caracteres raros". No quiere decir que este encriptado, simplemente que el programa encargado de leer el archivo interpreta lo que hay en ese archivo y te da una salida que puedas entender.

Hacer un programa que lea (o escriba) un archivo binario de X tipo sin tener una interfaz de la estructura de dicho archivo es una tarea bastante dificil.

Saludos [bye] [bye]
Primero necesitarías conocimientos sobre el lenguaje en binario y la conversión de hexadecimal a ascii y decimal.

Una vez sepas como funcionan los números en binario tienes que averiguar que significa cada uno. La opción más facil es alterar esos valores y ver que sucede. Claro, la más facil pero también es la más pesada teniendo en cuenta que eso puede tener 500.000 bytes de información. Aunque también es cierto que cuanto das con un dato es más facil intuir lo que está cerca. Así si por ejemploal cambiar un número te cambia el número de unidades de un objeto en el inventario del personaje, podemos intuir que es la "zona" de inventario. Seguramente modificando los valores de al lado modifiquemos el número de elementos del elemento de debajo del inventario o quizás su tipo.

Hay que tener en cuenta que por ejemplo, puede que la información no venga seguida en plan cantidad1->cantidad2->cantidad3... si no que vengan en bloques de información.

Así por ejemplo en una partida guardada podemos escribir en el offset 0x00000100 la información del inventario de esta manera:

XXXX XXXX
----- -----
aaab bbbb


de forma que la a sea el identificador del objeto y la b sea la cantidad.

así
0x00000104: 10D0 015A

Significaría que en ese punto de memoria guardamos el elemento número 269 (10D es 256 en decimal), a lo mejor eso significa poción pequeña de regeneración color pistacho (eso lo deciden los programadores). y tenemos 346 unidades.

Pero claro, eso yo como programador del juego lo puedo saber porque se que información existe en esa posición de memoria, pero tú, no. Así que la única manera de saber que en este programa la dirección de memoria 0x00000104 contiene el tipo de elemento y la cantidad de elementos de la posición 3 del inventario es ir al editor, modificar los valores, cargar la partida y comprobar que ha pasado. Al ver que ahora en la posición 3 del inventario, en lugar de tener pociones pequeñas de regeneración color pistacho tienes escudos mágicos de canela enriquecida, pues sabes que el número que has modificado sirve para cambiar el tipo de elemento.

si piensas un poco y se usan 4 bytes (los 8 dígitos) para guardar la información de un elemento, es facil deducir que los 4 siguientes modificarán el elemento 4 del inventario, y los 4 subsiguientes modificarán el elemento 5... verdad? puede que no. Pruébalo y comprueba que realmente se cambia. a lo mejor en vez de ser 4 son 5 porque el 5º indica cuantos elementos de ese tipo tienes equipados o cualquier rollo. Ahora que sabemos realmente como se almacena la información, tras 3 meses de estudio, tenemos que saber que información podemos incluir. Si metemos el elemento FFF se nos borra ese espacio. Si metemos el FFE nos casca. Comprobamos que si ponemos el 000 nos salen pociones de curación. Si ponemos el 001 nos sale espada pequeña. Si ponemos 002... así hasta que te aburras. Ya tenemos el listado de objetos, ya sabemos donde hay que poner esos datos. Ya podemos crear una miniaplicación que nos cambie el inventario.


Si, es jodido, pero hay trucos. Por ejemplo, guarda dos partidas. Una con una espada equipada y otra con un hacha equipada. Ahora compara ambas partidas y mira la inforamación que cambia. Obviamente cambiará mucha información: hora de guardado, número de veces guardado, posición del personaje, variables aleatorias, etc... pero entre todo eso, estará el cambio del equipamiento,y estará también toda la información que no ha cambiado.

Todo tuyo y suerte.

En resumen, es una mierda. Puedes tirarte años para saber que significa cada cosa.
me ha quedado bastante claro todo xDD, y lo veo muy dificil para una persona con nivel tan bajo como yo, me picaba la curiosidad pero creo que mejor lo dejo aparcado. muchas gracias
6 respuestas