1

alors voila , j'ai entendu dire (par mon pere) qu'il etait possible de faire des programmes auto-modifiable, cad qu'il peuvent modifier leur code eux-meme (y parait qu'au debut de l'informatique y faisait cela) je m'explique : par exemple , changer une instruction a executer : un peu comme le demendait Orion ds sa question : si j'ai une boucle avec differentes instructions dedans , je veux par exemple qu'il execute une certaine instruction que n fois ds des cas precis et pis apres pouf ! ; ex:
short n=0;do{
if(la condition pour le faire)
{
ce qu'il fô faire
n++;si n> à 7 alors changer l'instruction "if(la condition pour le faire)" en branch to etiquette
}
lbl etiquette
}while(condition)
ensuite remettre l'instruction "if(la condition pour le faire)" a sa place

mais je veux pas faire ca: if(n<7){if(la condition pour le faire){ce qu'il fô faire; n++;}}
donc en fait plus precisemment est ce que c'est possible de trouver l'adresse en memoire d'1 instruction precise ds un programme et la modifier , si possible en C packe ca fait 5 jours que j'ai commencé a apprendre l'assembleur et .... c vraiment chô
(enfin ca me parait impossible en C mm en jouant avec les pointeurs)
et pis en fait est ce qqun connait un tuto ou documentation qqconque qui donnerait la decomposition en langage machine elementaire des instructions assembleurs evoluées et des fonctions du C
merci beaucoup a tou ceux qui me repondront !
NTW !!!!!

2

Ce genre de choses n'est possible qu'en assembleur, et tu doîs savoir ce que tu fais avant de le faire, parce que sinon ton programme ne tournera pas longtemps (et puis un virus sur TI... cheeky)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

3

bon d'accord alors qqun peut me l'expliquer en assembleur?
NTW !!!!!

4

Demande à PpHd, il aimes bien ça^^
(au fait, ça s'appelle Self Modifing Code (SMC))
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

5

Une fonction qui ne fait pas grand chose :
fonction:
  move.w  #$4E75,fonction+4
  dc.w 0
Ce n'est pas vraiment du self-modifying code intéressant ça.
Mais le principe reste le même.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

6

ça me rapelle un truc qui serait amusant à faire, un programme qui, avec au départ quelques instructions, se construit, puis s'éxécute avant de s'effacer et de se terminer smile
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

7

L'idée est marrante smile
Mais ça doit être un vrai casse-tête !
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

C'est très commun en corewar, un programme qui se construit en s'exécutant (ou s'exécute en se construisant...). smile
So much code to write, so little time.

9

je viens de decouvrir cc et as y sont geniaux ces programmes !!!!!!!!!!!! mais j'espere la norme k&c differe pas trop de l'ansi...
et pis j'ai pas compris a koi y sert le fichier ams_c... confus
roll oui bon a part ca , si on revenait au coeur du probleme , tu pourrais m'espliker a koa sert ta fonction Mr sasume si il te plaît ? merci
NTW !!!!!

10

fonction:
  move.w  #$4E75,fonction+4
  dc.w 0


la première ligne est un label
la seconde écrit la valuer 0x4E75 (qui correspond à l'instruction 'rts') à l'adresse du label +4, soit juste à la troisième ligne, sachat qu'on move.w #xx,abs prend 4 octets.
la troisième ligne alloue 2 octets initialisés à 0, qui seront effacés et remplacés par le 'rts'

après l'exécution du move, le programme sera:

fonction:
  move.w  #$4E75,fonction+4
  rts


(sauf que là ça marche pas car l'instruction move.w #xx, adr ne prend pas 4 octets en mémoire mais 8 ^^)
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.

11

Et ça marche pas sur calc réelle non plus parce que le 68k a un prefetch d'une instruction cheeky (i.e. ici il modifie la mémoire *après* avoir lu l'instruction, donc il faut mettre un 'nop' entre les deux)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

Un copier/coller des notes sur le prefetch sur les instructions que j'avais testées :
move.b (a0),(a1) ne fait précharger que les 2 octets suivant l'instruction
move.b/.w #imm,(a1) aussi.
move.b/.w #imm,patch aussi.
move.w (a0),patch ne fait précharger rien du tout !
clr.b patch , st.b (a0) et clr.b (a0) font précharger 4 octets.
add.b #1,(a0) / addq.b #1,(a0) -> 4 octets

Et les chargements se font bien par octets, et non par instruction (c'est-à-dire que l'on peut
modifier parfois les 2 octets finaux de la prochaine instruction alors qu'on ne peut pas modifier
les 2 premiers).

13

y'a pas de doc officielle là dessus ?

14

de mémoire, je crois avoir vu en TP que le proc préchargeait les 4 premiers octets de l'instruction suivante, enfin qu'il chargeait 4 à 4 avec 4 d'avance quoi.
Mais je peux me tromper, d'autant plus que le chargé de tp était très mauvais et que j'avais ue réelle envie de me barrer ^^
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.

15

c'est à cause de ce prefetch qu'on ne peut exécuter que 2 octets d'instruction en archive protégée contre l'exécution ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

16

vi smile (enfin c possible d'exécuter plus de 2 octets, à condition de faire des lectures en RAM suffisamment souvent)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

17

je viens de decouvrir cc et as y sont geniaux ces programmes !!!!!!!!!!!!

as est pas mal bien qu'il ne gère pas les bibilothèques (ni dynamiques ni statiques)
cc lui par contre est très limité et buggé. Si tu veux un compilo C à jour et que t'as la patience d'obtenir un certificat demande plustôt le GTC de Pollux.
mais j'espere la norme k&c differe pas trop de l'ansi...
La grosse différence , c'est le passage de paramètres au fonction. Il n'y a pas de controle sur le type des paramètres, ce qui peut être une source d'erreur si on en a pas bien pris conscience.
et pis j'ai pas compris a koi y sert le fichier ams_c...
Il sert a déclarer les ROMCALL: des fonctions incluses dans AMS.
avatar

18

Ximoon
: de mémoire, je crois avoir vu en TP que le proc préchargeait ...

NTW !!!!!

19

tt d'abord merci uther !!

et pis ximoon , dis moi tu fais des TP en cours la dessus???????
t en quelle classe ?

a part ca si j'ai compris ce que je demende parait impossible a réaliser , si on ne peut modifier que parfois les 2 derniers octets
codant pour une instruction .....
et pis c koa le "prefetch", j'ai cherché ds le dico anglais/francais, et g pas trouvé
bon ba sinon c pô grave...
merci kan meme a tous!
NTW !!!!!

20

Le problème des octets modifiables ou non ne se pose que si l'instruction modifée suit immédiatement celle en cours, comme dans l'exemple au dessu. Si elle est ailleurs dans le code, ça ne pose aucun problème, tu peux changer tout ce que tu veux (enfin, en ram quoi).
Le 'prefetch' c'est le préchargement dans le proc de la prochaine instruction à réaliser.

Sinon j'ai eu des cours de 68000 l'an dernier en première année d'école d'ingé, mais comme je connaissais déjà (allez savoir pourquoi hehe) bah je faisait la grasse mat' le lundi matin grin
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.

21

matthieu>t'aurais du faire STI, t'aurais fait de l'assembleutongue
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

22

Flanker
: c'est à cause de ce prefetch qu'on ne peut exécuter que 2 octets d'instruction en archive protégée contre l'exécution ?
Pollux :
vi smile (enfin c possible d'exécuter plus de 2 octets, à condition de faire des lectures en RAM suffisamment souvent)

Tout ça, c'est sur HW1 seulement! Sur HW2, c'est l'adresse du PC qui est testée et ça plante immédiatement.
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é

23

Tout ça, c'est sur HW1 seulement! Sur HW2, c'est l'adresse du PC qui est testée et ça plante immédiatement.

Ma jolie 92+ avec marqué Hardware version 2.00 serait une HW1 ? Ca me semble peu probable
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

24

oui, c sur HW1 seulement normalement... (d'ailleurs sur HW2 on peut lire en Flash avec des movem)

Flanker> bizarre... tu peux exécuter une instruction en Flash sans pb ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

25

bah... c pas ce qu'il fait avec CS ?
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

26

une seule (un rts), oui, et sans plantage. Ou alors je me plante, ça fait à peu près un an et demi que je n'ai pas essayé.
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

27

Avec CS je contourne la protection et du coup je n'exécute pas de code en mémoire protégée
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

28

Kevin Kofler
:
Flanker
: c'est à cause de ce prefetch qu'on ne peut exécuter que 2 octets d'instruction en archive protégée contre l'exécution ?
Pollux :
vi smile (enfin c possible d'exécuter plus de 2 octets, à condition de faire des lectures en RAM suffisamment souvent)
Tout ça, c'est sur HW1 seulement! Sur HW2, c'est l'adresse du PC qui est testée et ça plante immédiatement.


Faudra que tu m'explique comment la puce de ti peut aller lire le registre qui est interne au cpu triso

Les protections de TI s'appuient sur les pates tu 68000 qui donne l'état en cours (lecture d'une instruction/lecture donnée) et sur l'addresse sur le bus

Apres que la méthode soit légérement différente entre HW1 et HW2 c'est une autre affaire, mais un composant EXTERNE ne petu pas lire des donnée INTERNES au processeur
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.

29

Si sur certains processeurs c'est possible.
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.

30

pas de maniere automatique non, tu peut le faire de maniere programmatique (un programme qui met la valeur du pc sur le bus de donnée a un moment précis) mais tu ne PEUT acceder au variables interne a un processeur d'un points de vu externe non
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.