π
<-
Chat plein-écran
[^]

3 nouvelles ROMs grâce à TI

:32ti30xbv: :32ti30xbb: :32ti30xsmv: :32ti30xpmv: :32ti34mv: :32ticolp:

3 nouvelles ROMs grâce à TI

Message non lude critor » 16 Mai 2010, 00:24

Ceci n'a pas vraiment sa place dans la section z80, mais comme il n'y a pas de section correspondante... C'est la section la plus approchante.



Ce soir, 15 mai 2010, j'ai réussi à dumper 3 nouvelles ROMs sans fer à souder:
* une TI-30X
* une TI-34MV
* une TI-Collège Plus


Comment ai-je fait? Je les ai dumpées à partir des émulateurs TI-SmartView.


Le dumping électronique semblait mal parti...
En effet, la puce ROM (de format inconnu) est cachée sous une grosse goutte d'epoxy sur ces calculatrices.

Faire fondre cet epoxy nécessiterait une attaque par un acide/solvant, ou un chauffage à près de 100°C.
(avec toutes les chances de se blesser, d'endommager la puce ROM, et même la calculatrice...)


Depuis le début, j'étais convaincu que les émulateurs TI-SmartView-Collège-Plus, et TI-SmartView-30X-34MV contenaient les ROMs des calculatrices émulées.

Mais depuis des mois, je n'avais jamais trouvé où...
Les fichiers exécutables binaires, et les librairies dll ne semblaient pas contenir quoi que ce soit qui ressemble à une ROM de calculatrice...
Bref, TI avait probablement crypté/encodé cette ROM...


TI-Cares m'avait déjà répondu que le processeur des TI-30X/34MV/CollègePlus n'était pas un z80, mais avait refusé de donner plus d'informations, prétextant qu'elles étaient confidentielles...



Bref, triple protection: epoxy sur le matériel, encodage/cryptage de la ROM dans le logiciel, et muselière sur TI-Cares... (quoique même sans muselière... pardon, je m'égare :;): )


Cela faisait donc des mois que je fouillais mes dossiers d'installation des émulateurs TI-SmartView, que j'envisageais plusieurs pistes...

Et ces pistes se sont rejointes ce soir! En seulement 2 heures, j'ai obtenu les 3 ROMs.


Où est la faille?

Et bien TI a eu beau mettre des protections partout, et notamment sur l'émulateur... ils ont aussi laissé la clef pour faire sauter cette protection.

En effet, les émulateurs sont développés en Java.
Et les dossiers d'installation contiennent les fichiers .class (Java compilé).

Il suffit avec un logiciel d'archivage (WinRAR) d'ouvrir "emuCollege.jar" ou "emu30X34MV.jar".

Les fichiers .class qui nous intéressent sont alors situés dans "cometiepsemu".

Plus précisément, nous intéressent les fichiers "TIEmulator3034.class" et "TIEmulatorCollege.class".


Ceux qui connaissent le Java, savent qu'il est très facile de décompiler un fichier .class, pour réobtenir le fichier source .java.

Après analyse, bien sûr, on se rend compte que ces fichiers ne contiennent pas la ROM, ni aucun des autres fichiers .class du dossier d'ailleurs.

(encore une protection de TI)


Mais... ces fichiers récupèrent la ROM, via une fonction native externe (encore une protection...).
Cette fonction se trouve dans les fichiers DLL dont le nom est précisé dans le code source.

Dans "TI30X34MVEmulator.dll":
* void CommunicatingWithC30(int[]) décode la ROM de la TI-30X
* void CommunicatingWithC34(int[]) décode la ROM de la TI-34MV

Dans "TICollegeEmulator.dll":
* void CommunicatingWithC(int[]) décode la ROM de la TI-College Plus


Ces ROMs sont récupérées dans un tableaux d'entiers de taille 65536.

On pourrait donc penser à une ROM de 64Ko...

Mais en fait après analyse, les entiers peuvent être largement supérieurs à 255 (8 bits).
Ils restent toutefois strictement inférieurs à 65536 (16 bits).

Donc chaque case du tableau stocke en fait 2 octets.

La ROM semble faire 128Ko (comme sur les TI-82 et TI-85!!! impressionnant pour un modèle non graphique :#top#: )


Une simple modification des fichiers .java cités ci-dessus, avec amputation de tout le code superflus, permet d'écrire le contenu de ce tableau d'entiers dans un fichier.


Et voilà... TI s'est crevé à mettre 34 protections partout...
Mais nous a gentillement laissé le code source qui contourne ces protections!!! :#tritop#:


Les messages système sont visibles dans les fichiers générés, ce qui est bon signe pour la validité de la ROM.
Les 3 ROMs semblent très similaires: les TI-30X/34MV/CollègePlus utilisent donc la même architecture.


Chaque fichier fait 128Ko.
Toutefois, le code utile fait un peu moins de 64Ko.
Après, il y a une série de caractères "CD" qui franchit la barrière matérielle des 64Ko... plus une série de "00" jusqu'à la fin du fichier.

On peut donc hésiter sur le matériel entre une puce ROM de 64Ko et de 128Ko.


En tous cas, je confirme que le code de ces fichiers n'est pas "visible" dans les DLL.
Il est donc bien encodé ou crypté.



Regardez un petit aperçu:

Image



Maintenant, il y a quelques questions à se poser...

De quel type de langage assembleur s'agit-il ? . . .
z80 ? Autre langage connu? Propriétaire?

Je n'ai lu qu'en diagonale, mais cela ne m'a pas l'air d'être du z80...
De plus, les fonctions de DLL organisant les octets par paires, il pourrait bien s'agir d'un processeur 16 bits...

Et si c'était la saleté de processeur de la TI-80 ? :#langue#:

Et aussi, il convient de se demander si il s'agit bien de la ROM originale des calculatrices, ou si elle a été partiellement ou totalement modifiée pour l'émulation...


Le problème est posé... il reste à trouver des gens capables d'analyser ces fichiers.
Des volontaires? :|:


Edit: Une décompilation du fichier "comtiepsngiexamcalcemucoreProcessorCoreT4x.class" laisserait supposer qu'il s'agit d'un processeur de la famille T4x, plus précisément un T49.

En effet, beaucoup de fonctions présentent ce suffixe.

Problème, totalement inconnu sous Google... Ou alors je me suis complètement planté.

Une lecture plus attentive du code nous apprend que le processeur dispose de 64 registres, et bien d'autres choses...

Petit extrait du squelette du processeur:
 
Show/Hide spoilerAfficher/Masquer le spoiler
package com.ti.eps.ngiexamcalc.emucore;

import java.util.logging.Logger;

public class ProcessorCoreT4x
{
private static final Logger LOG = Logger.getLogger("Calculator");
long CycleCount;
public int SP;
public int PC;
public int[] Register = new int[64];
public Timer[] m_pTimer = new Timer[2];
boolean BRegAcc;
public int[][][] DRamArray = new int[16][16][16];
public int[][][] WRamArray = new int[4][16][16];
public int KeyBuff = 255;
public int KeyBuff1 = 255;
public boolean CEErr;
public boolean f_in2ndmode = false;
public int PCOnKey;
public int PCKeyin;
public int PCTimer1;
public int PCTimer2;
public int PCDMA;
public int PCLCD;
public boolean benchmarking = false;
public boolean FHALT;
public boolean m_DisplayMode;
public boolean FOnKey = false;
public boolean FTimer1 = false;
public boolean FTimer2 = false;
public boolean FTimer1InterruptEnabled = false;
public boolean FTimer2InterruptEnabled = false;
public boolean FKeyin = false;
public boolean FDMA = false;
public boolean FLCD = false;
public boolean f_updatescr = false;
public boolean f_ChknSetTimerInt = false;
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 43.4%
 
Messages: 41536
Images: 14945
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Message non lude jacques » 16 Mai 2010, 09:21

Félicitations ! :#top#:
Sublime Chevalier Elu des TI

Venez visiter mon site sur les TI : Ti Softwares !!
Jetez un coup d'œil à mes programmes pour TI !!

Vous voulez faire des super programmes pour votre TI z80 ? Alors apprenez l'Axe Parser !!
Avatar de l’utilisateur
jacques
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 14.9%
 
Messages: 2057
Images: 0
Inscription: 25 Aoû 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: prépa PSI

Re: 3 nouvelles ROMs grâce à TI

Message non lude Levak » 16 Mai 2010, 10:36

Aillant assisté à l'évènement en live (par msn) je peux dire que Critor cache des choses :#gni#:
(notamment un truc important si on essaie de refaire l'expérience)
Je te laisse le dire critor, je ne sais pas si ça te tenais à coeur de ne pas le dire :#langue#:

un indice : Alors, fort ou faible ?
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
Avatar de l’utilisateur
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 98.9%
 
Messages: 6414
Images: 22
Inscription: 27 Nov 2008, 00:00
Localisation: 0x1AACC355
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: BAC+5: Epita (ING3)

Re: 3 nouvelles ROMs grâce à TI

Message non lude critor » 16 Mai 2010, 10:48

Levak a écrit:Aillant assisté à l'évènement en live (par msn) je peux dire que Critor cache des choses :#gni#:
(notamment un truc important si on essaie de refaire l'expérience)
Je te laisse le dire critor, je ne sais pas si ça te tenais à coeur de ne pas le dire :#langue#:

un indice : Alors, fort ou faible ?



Oh, y'a 1 chance sur 2 de se tromper...

Donc oui, quand on reconstruit la ROM à partir du tableau d'entiers rempli par le DLL, pour chaque entier de 16 bits, l'octet de poids fort doit être écrit avant l'octet de poids faible.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 43.4%
 
Messages: 41536
Images: 14945
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Message non lude critor » 16 Mai 2010, 11:23

Bon, j'ai des informations.


Le T4X est un coeur Toshiba, encore.
(ah, TI et Toshiba... c'est une longue histoire :#love#: )


Très peu d'informations sous Google...
J'ai trouvé des puces Toshiba utilisant les versions T41 et T42 de ce coeur, mais pas la T49.

Soit c'est du au manque de documents, soit la T49 est une version spéciale pour l'émulation.


Comme prévu, le T4X n'est pas un processeur 8 bits.



Mais... ce n'est pas non plus un processeur 16 bits...




Et si...






Donc, c'est un ? ...








Allez, il vient quoi après...










C'est un...












Un 4 bits!!!
Et oui, j'ai perdu avec mon pari sur le 16-bits.


Ce ne sont probablement pas les puces utilisées dans les TI-30XMultiView/34MultiView/CollègePlus, mais j'ai trouvé quelques datasheets similaires:
TMP04090FXXXX - http://www.datasheetcatalog.org/datashe ... a/1905.pdf
TMP04CH00FXXX - http://www.datasheetcatalog.org/datashe ... a/1906.pdf

Ces puces ont:
- une ROM de 32Ko (oui un peu faible ici... il nous faut au moins 64Ko)
- 2Kbits de Working-RAM
- 6kbits de Data-RAM
(la RAM est effectivement séparée en deux dans le code Java en spoiler du 1er post)

Le coeur T4X supporte 56 instructions assembleur.

Sa fréquence nominale varie entre 32.768KHz et 2MHz.


Bon alors maintenant que je me suis crevé à vous trouver tout ça, quelqu'un va avoir la gentillesse d'analyser les fichiers ROMs (en 4-bits, je rappelle...) afin de trouver une faille nous permettant d'accéder à l'assembleur sur les TI-Collège Plus.

Je rappelle que les TI-Collège Plus ont un superbe écran matriciel, et que des jeux intéressants peuvent donc être crées.

De plus, cela ne ferait pas de mal que l'on récupère un peu le public des collégiens, qui continueraient donc d'aller sur TI-Bank dès l'entrée au lycée.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 43.4%
 
Messages: 41536
Images: 14945
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Message non lude critor » 16 Mai 2010, 12:14

Catalogue de Toshiba, un peu plus synthétique -> http://datasheets.chipdb.org/Toshiba/PD ... puters.pdf

La série T4X est décrite page 46 du PDF.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 43.4%
 
Messages: 41536
Images: 14945
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Message non lude critor » 16 Mai 2010, 12:46

Petit test Forensics avec la TI-Collège Plus.

Il s'agit de calculer arcsin (arccos (arctan (tan (cos (sin (9) ) ) ) ) ) .


Un humain "évolué" répond 9.

Une calculatrice, qui fait des approximations à chaque étape du calcul s'éloigne de ce résultat.


Selon le résultat fourni, on peut classer les calculatrices par type de processeur / unité de calcul.


La TI-Collège Plus avec son coeur T4X 4-bits, répond 9.000001077372.

D'autres calculatrices fournissent exactement le même résultat, et utilisent donc le même coeur:
* TI-30XS MultiView
* TI-34 MultiView
On s'en doutait déjà... Mais aussi:
* TI-36XII
* TI-Collège
* TI-Collège II


Pour comparaison, les principaux modèles concurrents (Casio Collège 2D+ / fx-300ES / fx-115ES) répondent 9.00000000733338, ce qui est mieux, et partagent donc le même processeur.


Quelques tables Forensics:
http://www.datamath.org/Forensics.htm
http://www.rskey.org/~mwsebastian/miscprj/forensics.htm
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 43.4%
 
Messages: 41536
Images: 14945
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Message non lude jacques » 16 Mai 2010, 13:14

Pour en revenir à l'hypothétique accès de l'assembleur sur Ti Collège, je me demandais comment on ferais pour envoyer et exécuter des programmes en assembleur sur celle-ci vu qu'elle n'a pas de liaison avec l'ordinateur (comme la ti82 de base il me semble).
Sublime Chevalier Elu des TI

Venez visiter mon site sur les TI : Ti Softwares !!
Jetez un coup d'œil à mes programmes pour TI !!

Vous voulez faire des super programmes pour votre TI z80 ? Alors apprenez l'Axe Parser !!
Avatar de l’utilisateur
jacques
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 14.9%
 
Messages: 2057
Images: 0
Inscription: 25 Aoû 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: prépa PSI

Re: 3 nouvelles ROMs grâce à TI

Message non lude Lionel Debroux » 16 Mai 2010, 13:22

Bravo critor :#top#:

afin de trouver une faille nous permettant d'accéder à  l'assembleur sur les TI-Collège Plus.

Chouette, c'est TI qui va être content ! :%):

Pour aider au décodage, il serait peut-être intéressant de contacter les communautés HP: il y a des personnes qui ont une certaine habitude du codage avec des blocs de 4 bits, parce que le processeur Saturn des HP-48/49 a plusieurs registres de 64 bits accessible par quartets.
(les HP plus récentes utilisent des ARM bien élevés, pour lesquels il y a HPGCC)


@jacques: on pourrait peut-être entrer de l'assembleur comme sur la TI-81, en exploitant le buffer overflow qui se présente si on se déplace trop loin sur un des écrans de base du système.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: 3 nouvelles ROMs grâce à TI

Message non lude critor » 16 Mai 2010, 14:19

jacques a écrit:Pour en revenir à l'hypothétique accès de l'assembleur sur Ti Collège, je me demandais comment on ferais pour envoyer et exécuter des programmes en assembleur sur celle-ci vu qu'elle n'a pas de liaison avec l'ordinateur (comme la ti82 de base il me semble).



La TI-82 de base a un port I/O.
Ce sont les TI-80 et TI-81 qui n'en ont pas.


Mais sur la TI-81, cela n'empêche pas l'exécution de code assembleur et le dumping de la ROM.

Sur TI-81, il suffit de taper des instructions dans un programme, de sorte que la représentation hexadécimale de ces instructions en mémoire forme du code z80 valide.
Ensuite, un bug permet d'exécuter le code représentant ces instructions, et non pas ce qu'elles signifient.

Sur TI-Collège Plus, on peut imaginer quelque chose de similaire...
Taper un calcul, dont la représentation hexadécimale en mémoire forme du code T4X valide.
Un bug pourrait alors permettre d'exécuter le code de ce calcul, au lieu de l'évaluer.


Lionel Debroux a écrit:Bravo critor :#top#:

afin de trouver une faille nous permettant d'accéder à l'assembleur sur les TI-Collège Plus.

Chouette, c'est TI qui va être content ! :%):


Justement, merci TI :=):
Sans toi, je n'y serais jamais arrivé :#langue#:
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 43.4%
 
Messages: 41536
Images: 14945
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Suivante

Retourner vers TI (30/34/36, Collège)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1067 utilisateurs:
>1036 invités
>25 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)