1

Que fait-on ?

Est que quelqu'un se sent capable ou travaille déjà à chercher à exécuter quelque chose à l'aveugle (i.e. sans romdump) ? (personnellement de moins en moins)
Est-ce quelqu'un est prêt à jouer avec JTAG ?
Des idées de projets annexes ? (un éditeur PC gratuit semble intéresser beaucoup de monde et me tenterait peut-être)

2

On en est ou ?
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3

Pas très loin.

Et mon embauche récente dans une société de linux embarquée me donne à croire que les opérations pourront vite devenir compliquées sorry

Genre, JTAG qui marche en devel puis qui se fait "griller" de manière réactivable, etc etc...

4

ExtendeD tu veux dire quoi par "a l'aveugle" vous avez trouvez un moyen d'injecter du code ?

Si c'est le cas, pourquoi ne pas tenter de faire un romdump a l'image de ce qui avait été fait sur TI-85 ?
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5

Injecter du code ne devrait pas être bien dur (l'OS est tout frais et blindé de bugs), les exploiter pour exécuter quelque chose est nettement plus dur sans les outils proposés par du JTAG (je dis ça en en ayant jamais utilisé, mais je suppose que ça permet de faire du remote debug complet).

C'était quoi la méthode pour la TI-85 ?

6

la méthode exacte pour 85 n'est pas utilisable (modification de backups reel de la mémoire) mais quelque chose d'approchant peut etre fait pour dumper la ram... (celui avait ouvert la 85 a l'assembleur avait dumpé la rom sans rien connaitre de la 85 en jouant avec les backups de sa 85 et modifiant les images dedans pour les faire pointer sur la zone de la rom. Il a du y passer un temps formidable pour avoir quelque chose qui marche. mais on connais la suite ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

7

Si j'avais à faire quelque chose, et si on pouvait injecter du code, je ferais comme suit:

Le but est d'obtenir un romdump.
On connait un moyen de faire un buffer overflow (un gros).

Partant des hypothèses que la RAM fait NRAM octets, que la pile est vers la fin, la gueule de mon code (assumant un stack overflow) :
<----------------------------------------------------STACK ------------------------------------------------------------->
<----><Frame buffer-------><--------- Other memory ------------------------------------------------------>
      | buffer stack overflow
                     | Point de retour
         <------------------- A ------------------------> <------------------------------------- B ---------------><-C->


J'utiliserais un buffer démesurément grand qui écrit toute la pile:
A est une un table d'adresse absolue qui pointe dans la zone B (pour surcharger l'adresse de retour) assez grande pour surcharger tout le frame buffer.
B est une très grande zone de NOP (parce qu'on ne peut pas prédire où exactement ca va se lancer).
C est le code effectif
Le tout est de trouver l'adresse stockée dans A qui pointe dans B. Comme B est grand, et en faisant des suppositions sur le mapping de la mémoire de la pile, ca ne doit pas être bien difficile.
(On peut aussi faire une séquence grande Zone de B / petite zone C / grande zone de B / petite zone C si on a des problèmes sur la conjecture du mapping. Permet de minimiser la probabilité de tomber dans C directement).

Après le code à éxécuter:
je ferais d'abord une recherche de l'écran, en injectant autant de code qui suppose que l'écran se trouve dans une zone mémoire donnée, et on affine la recherche par dichotomie:
Pour tester, on inverse tous les bits de la zone mémoire sélectionnée, on attend, on réinverse, et ainsi de suite. Si on voit quelque chose à l'écran, c'est bon.
(On évite aussi d'écraser la table des vecteurs et de déclencher des exceptions et en priant qu'il n'y ait pas de protection de la mémoire).

Une fois qu'on a une idée de la zone mémoire de l'écran, on essaye de trouver comment c'est stocké (bitplane, linear ?)

Puis une fois qu'on sait comment fonctionne l'écran, on peut commencer à dumper la table de vecteur (en espérant qu'elle n'est pas protégée), et à dumper/afficher ce qu'elle pointe (toujours par plusieurs programmes successifs).
Puis peut être qu'on comprendra comment marche les touches claviers (et ou les ports), auquel cas, on pourra programmer un réel débuggueur.

Une autre solution (2) serait d'éxécuter un programme qui recopie la rom morceau par morceau dans un fichier spécialement chargé dans la calculatrice : on recherche un mot clé magique dans le fichier pour le trouver, une fois trouvée, on recopie une partie de la rom dedans. On télécharge le fichier sur le pc, on extrait l'information. On continue pour tous les morceaux.
Le problème est : comment faire pour que ce fichier soit conservée suite au reset inévitable qui va suivre (puisqu'on a complètement grillé la pile). Peut être exécuter un trap/vecteur qui éteins la calculatrice (ce trap/vecteur pourrait archiver/sauver lors de l'extinction ?)

Une troisième solution à partir du moment où on connait et sait gérer l'écran est de remonter le hack pour afficher les adresses exactes du frame buffer attacké (où se trouve l'adresse de retour lu) par essai / erreur (et aussi en considérant qu'on a du récupéré quand même dans les autres registres des valeurs qui sont juste avant).
Une fois cette adresse connue, on peut faire juste un petit loader dans le frame buffer qui va éxécuter un fichier spécial contenant du code écrit (par recherche de mot magique) puis saut pour exécuter ce code en priant qu'il n'y ait pas de protections d'exécution. Ce code applique la solution (2) et essaye de faire un retour dans la pile d'appel originale au niveau N+1 (qui n'a pas été écrasé) (en conjecturant et par essai sur le paramètre de retour -- en faisant un tri sur les nombres non multiples de 4, et sur les nombres qui ne se trouvent pas dans la méme zone que la table de vecteur).

A voir comment régler le problème de l'ARM et ou THUMB.

C'était les réflexions fumeuses d'un PpHd qui n'y connait rien en cracking, un Lundi Soir.
Vraiment fumeuses. Désolé pour ceux qui ont tout lu grin

8

pas tant fumeux que ça, mais je doute que l'écran doit directement mappé en mémoire comme pour les 68k HW1 sad
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

9

Qu'importe qu'il soit mappé directement ou pas du moment qu'on y accède, après tout (et rien n'empêche de rechercher l'écran au delà de la zone qu'on suppose être mappée en RAM).

10

ExtendeD (./5) :
Injecter du code ne devrait pas être bien dur (l'OS est tout frais et blindé de bugs), les exploiter pour exécuter quelque chose est nettement plus dur sans les outils proposés par du JTAG (je dis ça en en ayant jamais utilisé, mais je suppose que ça permet de faire du remote debug complet).

C'était quoi la méthode pour la TI-85 ?


Tu as une idée pour injecter du code?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

11

Je viens d'y penser. Nous savons que les textes sont stockés dans le fichier de l'OS sans encodage. Nous pouvons donc les modifier. Si un texte dépasse l'écran (de haut en bas) il y a de grandes chances que l'on tombe sur un buffer overflow ? La question est de savoir si déjà on peut modifier l'OS ainsi que son Checksum puis envoyer celui-ci sur la Nspire. Pensez-vous que cela soit réalisable ?
Si oui je vais essayer ça demain. On connait et on sait modifier le Checksum de l'OS ?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

12

non mais avant de changer l'OS il faudrait déja faire un buffer overflow grin

Pour l'écran, c'est pas impossible qu'il soit mappé en mémoire, doit y avoir un framebuffer, pour l'embarqué c'est plus simple.

et pour la protection de la mémoire, c'est ptet justement pour en avoir une qu'ils ont pris un ARM grin

A mon avis la table des vecteurs on la trifouillera pas ni trouvera pas comme ça.

Déja c'est comment, une table de vecteurs classique d'ARM?

13

Si quelqu'un s'y connait en ARM qu'il se dénonce.
PpHd (./7) :
Une autre solution (2) serait d'éxécuter un programme qui recopie la rom morceau par morceau dans un fichier spécialement chargé dans la calculatrice

Il n'y a pas de notion d'archivage des fichiers comme sur 68k, c'est automatiquement archivé, donc ce n'est pas dit que les fichiers trainent en RAM, ça rend les choses moins simple.

14

faut vraiment se détacher de l'architecture 68k grin

la nspire est comme un ordinateur normal. La RAM sert à exécuter des softs et à stocker des buffers. Les fichiers sont dans un FS en mémoire non volatile, et sont chargés à la demande smile

15

squalyl (./12) :
non mais avant de changer l'OS il faudrait déja faire un buffer overflow grin


C'est le but de mon message. Nous savons sous quelle forme est le Checksum d'un fichier *.tnc ?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

16

17

A priori MD5 + RSA comme sur 68k.
C'était assez bien verouillé sur 68k et dur à contourner même en connaissant bien la plateforme, donc mieux vaut pas compter là-dessus tout de suite.

18

J'ai regardé il est presque impossible d'exploiter une faille dans zlib et expat donc le buffer overflow faudra le trouver directement sur la Nspire et non en envoyer un fichier 'corrompu'. sad
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

19

Juste par curiosité (n'ayant malheureusement pas grand chose -pour ne pas dire rien- à vous apporter sur le sujet de la N-Spire), n'y a t-il que les français à réfléchir à comment programmer sur N-Spire?
C'est nous qui avons la plus "grosse" communauté?
avatar
Ancien pseudo : worfang.

20

Daniel Vouaux (./19) :
Juste par curiosité (n'ayant malheureusement pas grand chose -pour ne pas dire rien- à vous apporter sur le sujet de la N-Spire), n'y a t-il que les français à réfléchir à comment programmer sur N-Spire?

Non, mais sur un forum francophone, vous n'aller pas trouver grand monde d'autre. roll
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

Dans ce cas là, ce serait pas possible de bosser tous ensemble sur le problème? Ou bien :
-pas envie
-problème de langue
-compétition entre nations pour la possession de la bête ( grin )
-Obi Wan Kenobi?
Ca pourrait être une occasion de regrouper la communauté des TI-istes mondiaux, non?
avatar
Ancien pseudo : worfang.

22

Kevin Kofler (./20) :
Daniel Vouaux (./19) :
Juste par curiosité (n'ayant malheureusement pas grand chose -pour ne pas dire rien- à vous apporter sur le sujet de la N-Spire), n'y a t-il que les français à réfléchir à comment programmer sur N-Spire?

Non, mais sur un forum francophone, vous n'aller pas trouver grand monde d'autre. roll

Réponse très agréable et un peu à côté de la plaque, bien vu top Si tu lui avais dit qui d'autre travaillait dessus ça aurait été un peu plus constructif oui
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

23

J'ai quelques rudiments d'assembleur ARM mais ça va pas aller bien loin je crois... M'enfin bon j'essaie de donner quelques pistes, après vous en faisez ce que vous voulez...

Le processeur ARM va lire la mémoire à coups de LDR et de STR... Le but serait donc d'injecter du code qui ferait un branchement à une autre adresse... genre un truc comme ça :

ADR r2, chaine
LDR r3,[r2]
ADR r0, launcher
LDR r1, [r0]

chaine: .asciz "Cette chaîne fout le merdier en mémoire"

@La longueur de chaîne est de jesaispascombien + le code '0'.
@Avec un peu de chance, la chaîne déborde sur une valeur d'adressage non multiple de 4
@Et ainsi, on essaierait de faire foirer le deuxième LDR... Mais ce n'est qu'une supputation.

launcher: .int 4, 15, 48,...

24

tu connais l'ARM c'est vrai ça pourrait nous aider

le principe du buffer overflow dépend pas du CPU en fait, le but est de trouver une faille logicielle dans une fonction qui oublie de vérifier la taille d'un tableau.

Exemple si qq part t'as un bête strcpy, qui copie tout jusqu'à trouver un \0, bin, tu lui files une chaine super longue qui contiendra plein de fois le codage de "nop" (sur arm ce serait ADD R0,R0,#0 par exemple) et puis un code quelconque au bout. Le but est d'écraser l'adresse de retour stockée dans la pile, par exemple. enfin c'est assez complexe et ça dépend d'une situation particulière (t'as du faire le même cours d'archi que ma copine, je suppose que t'as étudié l'utilisation de la pile toussa...

25

squalyl (./24) :
Le but est d'écraser l'adresse de retour stockée dans la pile

Ah bah c'est simple, il faut surtout pas sauvegarder le registre r14 et lui affecter une valeur correspondant à l'adresse du hack et lors du dépilement, au lieu de revenir du sous-programme, il ira faire bêtement un branchement vers l'adresse de l'exploit...

Bon après, est-ce que ma théorie fumeuse vaut le coup, je sais pas sorryok

26

disons que dans la théorie, oui, mais en pratique faut réussir à l'appliquer grin

l'idée c'est que tu files du code dans des données en espérant que ça va passer inaperçu, mais bon grin plus facile à dire qu'à faire ^^

imagine qu'en plus on sait pas
-si la machine est en big ou little endian (vous aviez pensé à ça en désassemblant?)
-si la machine est en thumb ou en mode normal
etc. etc.

27

En tout cas, nous avons tous une expérience différente dans des domaines différents et je penses qu'on y arrivera pas si on ne se réuni pas.

Kevin Kofler > Tu as un lien vers un forum qui mène une reflexion comme nous sur le hacking de la Nspire ?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

28

Ximoon (./22) :
Réponse très agréable et un peu à côté de la plaque, bien vu top Si tu lui avais dit qui d'autre travaillait dessus ça aurait été un peu plus constructif oui

Il y a Brandon Wilson (américain), mais il a laissé tomber faute de temps, j'ai l'impression. Il y a aussi Phip (un Suisse allemand) qui voulait regarder du côté JTAG, je ne sais pas où il en est.
geogeo (./27) :
En tout cas, nous avons tous une expérience différente dans des domaines différents et je penses qu'on y arrivera pas si on ne se réuni pas.
Kevin Kofler > Tu as un lien vers un forum qui mène une reflexion comme nous sur le hacking de la Nspire ?

Bah, il y a le wiki en anglais et le chan IRC.

Il y a aussi 2-3 topics en allemand sur MobiFiles, mais ce n'est pas ça qui va résoudre le problème de langues. grin
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

29

Est-ce que vous avez le code de l'OS ? Est-ce que ça servirait de l'avoir?

30