Checksum

Quisiera saber si hay alguien por aqui que sepa sobre el tema del checksum..Ya que quisiera hacer una modificacion a algunos saves que poseo..
He leido en el foro de M3 y Scdev que existe la posibilidad de cambiar la informacion de un save.Pero apesar de que encuentro el dato en cuestion (obviamente el que quiero cambiar) al modificarlo el save se corrompe y queda inservible..
Me comentan que eso se debe al checksum..y me dieron esta informacion:(la cual copie al pie de la letra para ver si alguien entiende que ma tratan de decir)
.............................................................

Esta informacion me la dieron para el juego de Pkmn FR/LG necesito comprenderlo al 100% para poderlo llevar acabo a otras plataformas [decaio]
HELP!! No se a quienes mas recurrir....
Buffffffffffff, que pereza... esto lo he dado en el laboratorio de sistemas operativos de este año... para implementar unas funciones de un compresor Tar en Linux...

De todas formas ese código no lo comprendo entero, pero si te sirve de algo (porque no tengo ni idea de el nivel de información/comprensión que tienes) el checksum es un número que almacena la suma de todos los bytes, y se comprueba al principio para saber que no está corrupto, asi que si la suma no es la misma por algo que has modificado, pues eso, te lo reconocerá como corrupto..


Edito: para que no te lo reconozca como corrupto lo que deberías hacer es modificar el valor del campo checksum para que guarde el nuevo valor real de la suma de los bytes, de este modo, al calcularlo de nuevo para comparar con el valor almacenado no habrá problema
Parte de la info ya la tengo entendida (esta bien que estoy novato pero no tanto) pero exactamente no ubico donde demonios esta el checksum y por otra parte ¿podrias explicarmelo mejor? [tadoramo]
Si lo deseas te investigo valores de algun juego (sea Nds o GBA) para que comencemos a trabajar con el y me lo expliques "al vuelo" ya que quiero saber es desde donde se encuentra el valor a cambiar hasta como hacer correctamente esa suma y con ello cambiar un save correctamente..
Soy muy bueno encontrando esos valores lo que no se es como "estabilizarlos"
Ups, acabo de postear mas o menos del mismo tema en otro post. Aun no habia llegado a leer este. [agggtt] Sorry.

http://www.elotrolado.net/showthread.php?s=&postid=1704927249#post1704927249

por lo menos en este hilo parece haber un nuevo candidato a conversar de este tema.


Te explico Dr Katts;
mas o menos el checksum es lo que te ha explicado Darksilvano. Pero aparte de Checksum tambien hay otras funciones que tienen la misma finalidad. Como pueden se los "Codigos de Redundancia Ciclica", más conocidos como CRCs que son un tipo de "Hash".
Total: que su finalidad es comprobar que una parte del archivo no haya cambiado (sea por perdida de datos o por modificación a proposito), algunos tienen la capacidad de poder regenerar los datos perdidos, o sino, parte de ellos.

Para informarte mejor tienes, por ejemplo, la wikipedia, que esta en español:
http://es.wikipedia.org/wiki/Checksum
http://es.wikipedia.org/wiki/CRC (Español)
http://en.wikipedia.org/wiki/Cyclic_redundancy_check (Ingles)
etc...
Busca por internet, el mejor recurso de la información.

Para descubrir donde se encuentra el codigo de comprobacion de error, es bastante facil, solo has de comparar dos partidas guardadas con el minimo de diferencias posibles (recomendable los que llevan registro de tiempo, dado que solo modifica el tiempo), me explico:
1.- Consigues una partida guardada. Haces un backup en tu pc.
2.- Cargas el save en la DS y seguidamente guardas en el mismo slot (si tiene varias ranuras donde guardar).
3.- Sacas el nuevo save al PC y haces una comparación de los dos que tienes.
4a.- Si los dos saves son idénticos, quiere decir que no tiene ningun tipo de registro, sea de tiempo jugado, sea de lo que sea (o no le has dado tiempo suficiente). Si te ocurre esto, deberás repetir el paso 2 pero esta vez modificando algo dentro del juego, sea el dinero, HP, etc...
4b.- Si los dos saves son diferentes, las diferencias entre ellos serán justamente los registros que haya hecho el juego + los codigos de comprovación. Solo has de saber diferenciar entre los registros y los "checksums".
5.- A partir de aqui queda descubrir que tipo de Algoritmo usa para calcular ese codigo de comprovación, y asi calcularlo nosotros una vez modificado el save, o simplemente eludir su comprobación.


Le he echado un vistazo al codigo ese y no corresponde con la idea que tenia en mente de como saltarse la comprovación... tampoco he acabado de entender su funcionamiento porque no conozco los archivos "tab.bin", ni "multibootloader-de.dmp".

Te agradeceria que me pasaras los link de donde has sacado info util sobre este tema, para enriquecerme yo tambien.

Como he comentado en el otro post, tengo la idea de desarrollar un programa para descubrir los codigos de comprobación por fuerza bruta. Espero que podamos charlar mas en profundidad de este tema, ya que nos interesa.
Gracias por la informacion [360º] (Con esto estare entretenido unos cuantos dias)..Referente a comparar saves ya lo tengo estudiado (como ya mencione en algunos juegos tengo desglosado el save y los cambios que deseo hacer)..Pero como en su momento mencione el gran problema al que me enfrento es al Checksum y al CRC (Que bueno que hiciste mencion del mismo) pero estoy totalmente perdido con estas cosas..
Soy cheater de hueso colorado pero en el NDS me he visto en serios problemas para lograr hacer algo realmente tracendental..
Cuando escuche del dipstar pense que podria hacer algo pero...NO FUNCIONA EN SC!!! y en mi M3 ni idea de como hacerlo funcionar (seria lo unico que me ayudaria a sacarlo de donde se esta haciendo de polvo)...ahora voy a comensar a estudiarlo para entenderlo a ver si puedo hacer algo en estas fechas.Grax
4 respuestas