Abysse SataKore SegaKore Dream-Storming Guardiana SEGA GALAXY BOARD Index du Forum
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   DiscordChat sur Discord   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Hack du System24 : du lourd !

 
Poster un nouveau sujet   Répondre au sujet    SEGA GALAXY BOARD Index du Forum -> Arcade SEGA : domaine de prédilection de la firme bleue
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Apocalypse



Inscrit le: 22 Juin 2006
Messages: 1252
Localisation: Grenoble

MessagePosté le: Lun Nov 27, 2017 12:00 am    Sujet du message: Hack du System24 : du lourd ! Répondre en citant

Voilà, après le System 32 il ne restait pas grand chose chez Sega d'inexploré à part le mouton à 5 pattes nommé System 24 :
- les premiers jeux utilisent des disquettes avec un contrôleur propriétaire mais on peut s'en sortir avec un PC et Anadisk
- tous les jeux sur disquette utilisent un processeur crypté (module FD1094) qui peut se suicider si la batterie n'est pas remplacée à temps
- les jeux sur romboard possède une puce de protection sur cette dernière

J'y suis donc aller par étape :
1) Décrypter les jeux sur disquette pour pouvoir utiliser un CPU classique (68000) et faire revivre un jeu suicidé ou réaliser une conversion => fait et testé dans MAME
2) Convertir les jeux disquette en rom pour une question de fiabilité (il n'y a même pas de checksum sur les jeux disquette, en même temps il aurait été dur à passer Mort de rire ) => fait et testé dans MAME
3) Faire sauter les protections des jeux utilisant une romboard => fait et testé dans MAME

Du coup maintenant on peut désuicider n'importe quel jeu et convertir n'importe quel jeu utilisant une romboard en n'importe quel autre jeu avec disquette ou romboard !

A priori je vais recevoir prochainement tout le matériel nécessaire pour réaliser des tests sur le vrai hardware. Je vous tiens au courant Clin d'oeil
_________________
http://arcadefixer.blogspot.co.nz/
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
oof-will



Inscrit le: 28 Mar 2007
Messages: 1072
Localisation: Moumou (79)

MessagePosté le: Lun Nov 27, 2017 1:46 pm    Sujet du message: Répondre en citant

Tu es mon dieu Choqué Applaudissements
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Apocalypse



Inscrit le: 22 Juin 2006
Messages: 1252
Localisation: Grenoble

MessagePosté le: Lun Nov 27, 2017 9:06 pm    Sujet du message: Répondre en citant

oof-will a écrit:
Tu es mon dieu Choqué Applaudissements

Mort de rire
Dans ce cas tu peux balancer les offrandes et les filles vierges.

Plus sérieusement je vais essayer d'expliquer la méthode.
Le module FD1094 utilisé également sur System 16 et 18 entres autres, impose de devoir décrypter dynamiquement les données (en tout cas je ne vois pas comment faire autrement). Cela veut dire qu'on ne peut pas prendre le fichier source et simplement appliquer un algorithme dessus pour le décrypter, on est obligé d'exécuter le code car l'état de certains registres influent sur le décryptage.
Avec MAME en mode debug on peut "tracer" le code exécuté mais cela ne fait pas apparaître les opcodes (cryptés ou non).
J'ai donc modifié les sources que je recompile avec Ming afin de générer une "trace" qui désassemble en temps réel l'adresse pointée par le registre PC (program counter).
Cela pose néanmoins 2 problèmes :
- cela ralenti énormément l'exécution du jeu
- il faut jouer au jeu afin d'essayer de passer dans toutes les branches du code possibles

Pour Gain Ground par exemple malgré tous mes efforts en essayant de jouer avec tous les différents personnages, armes, etc. j'avais encore plus de 500 "trous" dans le code. J'ai donc établi plus de 500 points d'arrêt et j'ai forcé manuellement le passage dans les branches non encore décryptées.
Gain Ground était le premier jeu que j'ai décrypté sur System 24 et cela m'a pris environ 20h...
Au final cela représentait environ 20.000 lignes de code.

La grosse arnaque du System 24 est que même si certains jeux utilisent une disquette, seulement 256ko sont utiles et chargés en RAM au chargement initial.
Le reste de la disquette est remplie de "vide" (0x00 ou 0xFF) ou de motifs qui se répètent à l'infini (0123456789 par exemple).
_________________
http://arcadefixer.blogspot.co.nz/
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
oof-will



Inscrit le: 28 Mar 2007
Messages: 1072
Localisation: Moumou (79)

MessagePosté le: Mar Nov 28, 2017 8:56 am    Sujet du message: Répondre en citant

J'avoue que tu m'as perdu la Nerd
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Apocalypse



Inscrit le: 22 Juin 2006
Messages: 1252
Localisation: Grenoble

MessagePosté le: Jeu Nov 30, 2017 8:18 pm    Sujet du message: Répondre en citant

Je vais reprendre à la base avec plus de détails Clin d'oeil

Le System 24 utilise 2 CPU 68000. Le premier sert à charger le BIOS puis charger le programme du second CPU (depuis la disquette ou la romboard selon le jeu).
Le second CPU est celui qui exécute le jeu.

Dans un premier temps je lance MAME en mode debug (mame -debug nomdujeu) jusqu'à ce qu'il arrive sur le second CPU (touche F6 ou menu debug "Run to next CPU"). A ce moment là le programme du second CPU est chargé, je dumpe donc le contenu de la RAM dans laquelle il est stockée (dump nomdufichier,adresse de départ, longueur). Grâce à ce fichier je recherche où sont stockées les informations dans la disquette. Parfois c'est un seul segment, parfois plusieurs, avec des offsets différents.

Ensuite j'ai modifié MAME (les sources et la procédure pour le recompiler sont disponibles sur leur site) afin de pouvoir générer une "trace" qui contienne également les opcodes et arguments décryptés. Une "trace" est une sorte de log de chaque instruction exécutée par le processeur. Comme le System 24 a 2 processeurs il faut préciser que l'on travaille sur le second. De base MAME trace le PC (program counter = adresse depuis laquelle le programme est éxécuté) ainsi que l'instruction et ses arguments.

ex : 008034: move.w #$18, $a00006.l

Avec cela on peut recompiler le programme mais comme je voulais automatiser au maximum la tâche j'ai modifié la fonction "trace" pour inclure également les opcodes et arguments décryptés.

ex : 008034: 33FC 0018 00A0 0006 move.w #$18, $a00006.l

Maintenant comme on connaît la correspondance entre les adresses en RAM et les adresses dans la disquette on peut écrire à la volée le programme décrypté.
Je fais une copie de l'image de la disquette, et je ne mets à jour que les instructions exécutées (car les données ne sont elles pas cryptées).

ex pour Gain Ground : adresse en RAM = 0x008034 ce qui correspond à 0x15DA34 dans la disquette où l'on va donc écrire 33FC 0018 00A0 0006.

Comme je le disais il faut essayer de passer dans un maximum de branches de code différentes. A la fin il reste de toute façon des zone à forcer à la main : je mets des points d'arrêts avec le debugger (bp adresse) et je force le passage dans la branche qui m'intéresse en forçant la valeur de PC (par exemple PC++, etc.).
_________________
http://arcadefixer.blogspot.co.nz/
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
oof-will



Inscrit le: 28 Mar 2007
Messages: 1072
Localisation: Moumou (79)

MessagePosté le: Lun Déc 04, 2017 9:32 pm    Sujet du message: Répondre en citant

Le travail de fou Surpris
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
iGREKKESS
Webmaster


Inscrit le: 04 Jan 2003
Messages: 7764
Localisation: Etampes

MessagePosté le: Mar Déc 05, 2017 12:49 am    Sujet du message: Répondre en citant

Merci pour le partage, c'est sympa d'expliquer, même si on entrave pas tout Clin d'oeil
_________________
Die Hard SEGA Fan ~1951-2001~, yippee-ki-yay ! - iGREKKESS' Blog (グレッケッス★アドベンチャー)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Compte Twitter
Apocalypse



Inscrit le: 22 Juin 2006
Messages: 1252
Localisation: Grenoble

MessagePosté le: Jeu Déc 07, 2017 10:18 pm    Sujet du message: Répondre en citant

iGREKKESS a écrit:
Merci pour le partage, c'est sympa d'expliquer, même si on entrave pas tout Clin d'oeil

Je suis prêt à répondre à vos questions mais c'est sûr qu'à un moment ça deviant assez technique.
Pour info finalement je m'oriente vers un multi System 24 basé sur un émulateur de disquette.
De cette façon 10 jeux serait supportés sans avoir à changer d'EPROM (attention Bonanza Bros sera le seul à nécessiter une romboard mais comme je l'ai patché on peut utiliser n'importe quelle romboard comme donneur).
Restera 4 jeux sur romboard, tous en japonais : 2 jeux de quiz et 2 jeux de majhong, pas vraiment une grosse perte.
Le gros titres seront là : Bonanza Bros, Gain Ground (z'avez vu le prix du jeu sur eBay?), Crack Down, etc.
_________________
http://arcadefixer.blogspot.co.nz/
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Gakman



Inscrit le: 05 Mar 2005
Messages: 1520
Localisation: Nancy

MessagePosté le: Lun Déc 11, 2017 12:02 am    Sujet du message: Répondre en citant

Excellent ! Très content
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    SEGA GALAXY BOARD Index du Forum -> Arcade SEGA : domaine de prédilection de la firme bleue Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum



Space Pilot 3K template by Jakob Persson.
Powered by phpBB © 2001 phpBB Group
Traduction par : phpBB-fr.com