1

2

Underflow? Je connaissais même pas! happy C'est quoi la différence par rapport à un stack overflow?
avatar
Ancien pseudo : worfang.

3

"De l'Art de faire des Posts qui ne servent a Rien." (c) Ximoon

15:13 @Ximoon - 29-11-2005
"C'est débile ce sondage, une fois de plus Dude, tu ne sers à rien #hehe#" #love# Il est collector celui là ^^

18:56 @Ximoon - 09-10-2010
"Mince Dude sert à quelque chose %) (pas taper :D )" Owii xD #trilove#

4

5

Merci des précisions à vous deux. wink
avatar
Ancien pseudo : worfang.

6

Ah oui desolé Martial sorry
Stack underflow, et pas Buffer underflow smile
"De l'Art de faire des Posts qui ne servent a Rien." (c) Ximoon

15:13 @Ximoon - 29-11-2005
"C'est débile ce sondage, une fois de plus Dude, tu ne sers à rien #hehe#" #love# Il est collector celui là ^^

18:56 @Ximoon - 09-10-2010
"Mince Dude sert à quelque chose %) (pas taper :D )" Owii xD #trilove#

7

Martial: a moins de faire des choses bizzares, sans MMU ça me parais dur, ou alors il faudrait que tout tes programmes se tiennent d'utiliser une fonction spécifique pour acceder a la pile sorry (bonjour les perfs)
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.

8

9

non il n'y a pas d'exception, enfin pas sur 68000 (il n'y en a pas non plus pour du stack overflow), enfin pas en 68K brut.
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.

10

tu pourrais le savoir "post mortem" si tu décores la zone de mémoire potentiellement touchable avec un pattern particulier style 0xDEADBEEF ou 0x55AA55AA et après tu regardes quelles sont les adresses touchées.

11

Certe, mais c'est un peu tard cheeky
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.

12

je sais, mais c'est un vrai problème pour les machines sans mmu.

Le seul truc que TI a trouvé sur les ti68k c'est protéger en écriture la zone des vecteurs (le premier ko, je crois) pour obtenir un adress error.

13

14

(Hors sujet : N'y aurait t-il pas moyen d'utiliser ces overflow pour balancer du code machine sur les N-Spire?)
avatar
Ancien pseudo : worfang.

15

Ca correspond aux besoin de Martial ? Si le bas de la pile est juste après les vecteurs, c'est dans la poche smile Il suffit de rediriger l'interruption pour gérer l'underflow.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

16

17

Il y a deux piles séparées ? Pourquoi ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

18

19

OK mais l'intéret ? smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

20

21

Thi > sur TI c'est complètement dénaturé à cause du trap #12 mais sur un vrai OS 68k, le noyau tourne en mode superviseur et les programmes utilisateur en mode normal. Le fait d'avoir deux piles séparées permet d'éviter des failles à base de traps.

En gros, en mode superviseur, a7 est la pile superviseur, et la pile utilisateur ne peut se manipuler qu'avec move an,usp. c'est un registre comme un autre.

Quand la machine boote t'es en mode superviseur. le vrai kernel au sens de linux peut s'exécuter. Ensuite quand on démarre un processus, on passe en mode utilisateur *. Dans ce cas, a7 est sauvé dans ssp, et usp est placé dans a7.

Quand un programme en mode normal exécute trap #n, le CPU passe en mode superviseur (donc a7=ssp, et pas usp), met le SR (qui contient le mode et les flags) sur la pile, puis met le PC de l'appelant sur la pile. En gros on est "rentré dans le noyau" pour faire par exemple un appel système. A la fin du trap, on doit faire RTE pour revenir au processus, car on doit dépiler le PC de retour ET AUSSI le SR qui permettra de revenir en mode utilisateur.

L'idée d'avoir deux piles séparées ça permet d'éviter que le RTE revienne en restant en mode système en trafiquant simplement le SR qui resterait sur la pile utilisateur. parce que le trap a switché en pile superviseur avant de sauver SR et PC.

tu vois le truc? pour moi c'est évident car éprouvé durement en projet système T_T , mais c'est pas forcément clair à la première lecture.

22

Ben... j'ai relu 2 fois mais je vois pas comment on pourrait trafiquer la copie du SR. Il faudrait pouvoir exécuter le code qui trafique en mode superviseur, puisque le SR est copié après le passage en mode superviseur. Or, on peut pas exécuter du code en superviseur tant qu'on n'a pas trafiqué le SR. C'est le serpent qui se mort la queue non ?

Si on sépare pas les piles, le programme peut écrire ce qu'il veut sur la pile, ça sera écrasé lors du passage en mode superviseur.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

23

> Le seul truc que TI a trouvé sur les ti68k c'est protéger en écriture la zone des vecteurs (le premier ko, je crois) pour obtenir un adress error.
> "Out of memory" plutôt
Non, c'est l'AI7 (non masquable, même avec (SR & $0F00) = $0700).
AMS la traite par un dialogue indiquant "Protected Memory Violation".
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

24

21> j'explique mal. c'est pas simple du tout. Mais imagine une routine noyau (style appel système write) à qui tu donnes une adresse d'écriture bidon. Tu peux lui donner l'adresse correspondant au pt de stockage du sr, et lui demander de l'écraser. En faisant RTE, tu récupères alors ton SR modifié, et pas celui qui a été stocké. Ce qui te permet de définir le bit S depuis le mode superviseur. (en utilisateur, tu peux pas changer ce bit, par contre, le code du trap le peut, puisqu'il est exécuté en superviseur.) Avoir deux piles limite ces pbms, puisque tu sais pas ou est le SSP. (il faut le deviner, on peut pas le lire directement depuis le mode normal)

25

squalyl (./24) :
(il faut le deviner, on peut pas le lire directement depuis le mode normal)


sauf si bonne connaissance de l'OS ou tu peut savoir ou il "cache" la SSP
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.

26

Lionel Debroux (./23) :
on, c'est l'AI7 (non masquable, même avec (SR & $0F00) = $0700).

D'ailleurs à la base c'est pour se protéger des stack underflows ce mécanisme smile

27

Godzil > évidemment, mais c'est moins par zazard, du coup grin

28

D'accord smile Merci pour cette initiation aux techniques de hack smile C'est tout bête mais intéressant à savoir.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

29

apparemment ça avait des conséquences importantes pour les unix 68k par exemple smile

30