Page 1 of 5

bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 16 Dec 2015, 21:10
by grosged
Je ne sais pas si cela aboutira un jour à quelque chose de concret, mais bon... ça ne coute rien d'essayer ;)
Alors voilà, j'aimerais que l'on partage nos recherches/trouvailles en tout genre au sujet de la TI-82A
(le top serait de déboucher sur une faille, laquelle nous permettrait de lancer du code machine!..utopique?)
De mon côte, après avoir une peu cherché au niveau des tokens (voir http://www.tout82.org/t278-catalogue-et-tokenmaps#5128 )
j'ai commencé à explorer une nouvelle piste:

Au moyen de TILP et d'un éditeur hexa (wxhexeditor), J'ai trituré un peu des fichiers provenant de la TI82A pour ensuite les renvoyer, histoire de la chambouler un peu...
dans l'espoir de trouver une faille...
Voici , pour l'instant le fruit de mes recherches :

1) on sauvegarde une image en lançant un StorePic 0
2) on le transfère sur le pc
3) via un éditeur hexa, on modifie la taille des données à prendre en compte (et non la taille physique du fichier) en la réduisant à 1 octet (en offset 57, transformer F602 en 0100)
4) on réinjecte ce fichier trafiqué (entre-temps , après actualisation, TILP affiche pour l'image une longueur de 246 octets (de données exploitables)
5) toujours depuis TILP, on supprime ce fichier OU on le réinjecte encore 1 fois
6) la TI82A bascule vers ce menu:

Image

à ce stade , on peut bouger avec les flèches haut et bas , mais dès qu'on valide avec [entrer], la TI82A se fige...
Pour sortir de ce menu, on peut faire un reset en faisant [une touche] puis [alpha] (gardé enfoncé) et [la même touche]

à noter qu'il m'est parfois arrivé de déboucher ensuite sur un autre message (au lieu du reset final)
en choisissant [stats] puis [alpha] avec [stats] :

Image
le menu pour (re)charger l' O.S. , suivi quelques secondes plus tard d'un message d'erreur quand l'installation du nouvel O.S. n'a pas marché :
Image

Il m'est aussi arrivé de tomber directement sur cette 2nde partie , en faisant [trace] puis [alpha] avec [trace]

EDIT : y a du nouveau !
les 4 derniers octets du fichier image sont exécutés en tant que code machine, par la TI82A !!!
De plus, il est possible d'étendre cette zone à plus de 4 octets , simplement en modifiant en position (offset) 70 la valeur 16bits (au départ 02F6, 758 en décimal) qui correspond à la taille physique du fichier !!!!
Ainsi, en y écrivant par exemple la valeur 762 en décimal c-à-d 02FA en hexadécimal (octet de poids fort en 1er, donc FA 02) on étend la zone de 4 octets !!! (voir soulignés en marron ces 4 octets ajoutés manuellement via l'éditeur de fichier wxHexEditor)

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 16 Dec 2015, 22:37
by Lionel Debroux
(le top serait de déboucher sur une faille, laquelle nous permettrait de lancer du code machine!..utopique?)

Pas du tout utopique: ça a déjà été fait, et publiquement annoncé, il y a plusieurs mois.
Mais il n'y a probablement pas qu'une façon de parvenir à réaliser l'ACE, et c'est donc très bien que d'autres fassent des travaux en ce sens, en plus de l'exercice d'apprentissage individuel que cela procure :)

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 16 Dec 2015, 22:51
by Epharius
Tout ce que je sais, c'est que Brandon Wilson a trouvé une faille et a réussi à exécuter de l'assembleur sur une Ti-82a, mais qu'il avait gardé la méthode privée. Depuis, cette méthode a été révélée ? Ou quelqu'un d'autre que BW a-t-il trouvé une solution ?

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 16 Dec 2015, 22:57
by critor
De toutes façons, la méthode telle que je l'ai vue n'est pas utilisable telle quelle pour le grand public.
Besoin de brancher ta calculatrice à l'ordinateur à chaque fois que tu veux exécuter un programme assembleur, et tu auras très probablement un reset assez rapidement après la fin du programme.

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 17 Dec 2015, 10:27
by grosged
Oh oui! C'est le gros problème ce Reset :(

Je poursuis tout de même mes recherches, et j'ai du nouveau ce matin : après vérifications, je peux affirmer que les 4 derniers octets du fichier image trafiqué sont éxecutés en tant que langage machine par la TI !!
En insérant 00 00 18 FC
ce qui correspond à :

loop: NOP
NOP
JR loop:

(c'est-à-dire un programme en boucle qui ne fait rien du tout)

Cela nous donne un écran vierge. La TI ne plante pas, le mini-programme boucle bien sur lui-même car elle répond encore aux touches : en faisant [apps] puis [alpha] avec [apps] on quitte la boucle...et puis...PAF! Un Reset :(

C'est vrai que 4 octets c'est pas énorme, mais ça suffit amplement pour faire un saut ailleurs (par ex vers une zone mémoire contenant une autre image abritant du code machine)

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 17 Dec 2015, 10:37
by Epharius
Incroyable, bravo pour cette découverte :o
Mais je n'ai pas compris pourquoi ces octets sont exécutés et pas les autres, quelqu'un sait pourquoi ?

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 17 Dec 2015, 10:45
by grosged
Pour l'instant, "Mystère et boule de gomme!" :D
J'ai tenté de placé une mini boucle( un JR sur lui-même codé 18FE) un peu partout ailleurs dans le fichier image, sans succès.
Tout ce que je sais, c'est que lorsque la TI-82A reçoit le fichier-'image (trafiqué de sorte que la TI ne lise qu'un octet de donnée) , elle considère ensuite que le fichier fait 246 octets (cf TILP après actualisation) au lieu de la longueur classique de 758 octets. Puis au moment d'effacer ce fichier, je pense que TILP fait bugger la TI , du fait de cet écart de jugement 246 <-> 758 octets

EDIT: je viens de modifier le post initial, je n'avais pas bien expliqué ces notions de taille de données / taille de fichier,
j'espère que c'est maintenant plus clair pour vous ;)

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 17 Dec 2015, 12:25
by grosged
Encore du nouveau ! Nous ne serions plus limité à 4 octets !!!

En position (offset) 70, du fichier-image, on peut lire la valeur hexa 02F6 (codée F6 02) ce qui correspond en décimale à 768 c-à-d la taille physique du fichier !!
j'ai remplacé cette valeur par FA 02 (donc rallonge de 4 octets) puis j'ai manuellement rallongé le fichier de 4 octets
Pour finir, j'ai écrit dans les 8 derniers octets 00 00 00 00 00 00 18 F8
ce qui correspond à :

loop: NOP
NOP
NOP
NOP
NOP
NOP
jr loop:

Hé bien ça marche !!! la TI ne plante pas mais tourne en boucle (écran vierge) !!!

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 17 Dec 2015, 16:52
by grosged
Bon ! Hé bien j'avoue qu'à ce stade, je ne sais plus trop quoi faire, je me sens bloqué : je n'ai d'expérience en programmation assembleur que sur Amstrad CPC (hou làààà , c'est loin!!) N'ayant aucune connaissance des TI sur le plan hardware/développement Z80, je fais donc appel à vous...
Y aurait-il un (ou des) spécialiste(s) capable(s) de prendre le relais ?
Il est possible de lancer un programme en langage machine, mais comment procéder pour en sortir proprement ? (Sans reset au final)
Le peu que j'ai pu deviner , c'est que l'on doit avoir le programme en "Disable Interrupt" (DI en entête)
Mais après ...mystère !
Il doit bien y avoir un moyen de rétablir la TI dans l'état précédant le lancement du programme asm (je pense aux trucs du genre rétablir la pile, les registres, ... bref! quelques instructions bien placées, mais lesquelles, exactement ?)
J'ai essayé de comprendre l'état au repos , d'une TI, en lançant un émulateur TILEM et scruté un peu les registres en mode debug (TI-83+ émulé) mais je galère un peu...
Au fait, la TI-82A se programme-t-elle comme une TI-84+ ? (mêmes call/Bcall au même endroit,...etc)

Re: bidouillages sur TI-82A : déceler 1 faille ?

Unread postPosted: 17 Dec 2015, 17:24
by critor
Pas mal du tout, grosged ! :bj: