30

demande a kévin de te faire la liste des moyens de détourner ca sans kernel (même si a mon avis le kernel est le meilleur vu qu'il fait bien plus que ca mais je n'ai pas envie que ca parte en troll)
avatar

31

h220xtsr ( pas sûr), ttstart, sstart, kerno (pas sûr)
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

32

Sasume
: Tu utilises une adresse relative.

je veux bien mais relative par rapport une adresse de départ : l'adresse du prog => comment l'obtenir?

PS : désolé si je suis aveugle mais là je vois pas trop

33

Hmm c'est Kevin qui m'avait donné l'astuce à l'époque, je vais essayer de te retrouver ça...

extern void self asm("tigcc_compiled.");
void *selfPtr = &self;


Voilà, avec ça t'as un pointeur sur le 1er octet de ton programme. Y'a une ligne en plus si ton programme est compressé en PPG, mais je l'ai pas notée, ça doit se trouver quelque part dans un topic de la rubrique "C".
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

34

35

uep
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

36

D'ailleurs, le hack de Kevin ne marchera plus si TI ajoute de la RAM neutral (ça a l'air bien parti pour, avec la suppression du ghost)

La méthode un peu moins gore serait de chercher si l'adresse correspond à un handle et si ce n'est pas le cas enlever 0x40000, mais c très bof et ça dépend de la méthode exacte employée par le décompresseur. En fait si on n'a pas besoin de l'adresse réelle et que celle dans le ghost convient (càd à peu près tjs, sauf si on veut un handle), la méthode non-ppg marche très bien.

[EDIT : oups]

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

37

IroS > pourquoi tu ne veux pas utiliser les pack archive ? ça serait pas plus simple pour toi ?
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

38

Surtout que ton prog est déjà en kernel, non ?
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. »

39

Flanker
: IroS > pourquoi tu ne veux pas utiliser les pack archive ? ça serait pas plus simple pour toi ?

comment ça pour moi? je suis si nul que ça sick enfin c'est pas faux...
Sasume
: Surtout que ton prog est déjà en kernel, non ?

le rapport? C juste pour info et culture personnelle, je n'ai pas l'intention de me lancer dans un archiveur.
[hors sujet]oui il est en kernel, j'aurai aimé pouvoir le faire dans les deux modes mais bon...[/hors sujet]

40

comment ça pour moi? je suis si nul que ça

bah pour moi, que tu fasses ton propre format ou que tu utilises les pack archives, ça ne change rien tongue il n'y avait aucun sous-entendu
si tu utilises les pack archives, tu n'as rien à faire, si tu fais ton format, tu dois coder.
[hors sujet]oui il est en kernel, j'aurai aimé pouvoir le faire dans les deux modes mais bon...[/hors sujet]

c'est une très mauvaise idée, surtout en asm (peut-être qu'en C ça passerait mieux). Au final, il vaut beaucoup mieux choisir un des formats et s'y tenir. Un programme kernel transformé à l'arrache en nostub va être bien plus gros que s'il avait été programmé depuis le début en nostub, et réciproquement (je dis ça par expérience personnelle ^^)
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

41

Bah parceque le pack archive marche en mode kernel -> réponse aux deux questions smile
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.

42

hé les gar ce serait pas ca pour choper l'adresse du prog en cours :
SYM_ENTRY *FindProgramVar (void);
euh...

43

c'est une fonction du TIOS, ça ?
au fait, j'ai cru comprendre que le prog était en kernel, c'est ça ?
kernel::Ptr2Hd jsr kernel::Hd2Sym
si c'est le cas, il suffit de faire 		lea	0(Pc),a0
		jsr	


pour choper le SYM_ENTRY du programme
Hd
et  		lea	0(Pc),a0
		jsr	kernel::Ptr2

pour avoir l'adresse du début du code

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

44

si c ca!!
SYM_ENTRY *FindProgramVar (void);


Finds the running program's variable.

FindProgramVar returns a pointer to the SYM_ENTRY structure of the running program, or NULL in case it is not found (e.g. if the program was compressed).

Note: Do not call anything which may cause a heap compression between when this function is called and when the pointer to it is used. Otherwise, the pointer may become invalid, causing a crash or other random, unexpected behavior. You can also use FolderOp to avoid this problem.

45

Flanker> euh, ça marche pas si c dans le ghost space...

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

46

"Function (tigcc.a)"

c pas une fonction du TIOS, c une fonction de TIGCCLIB.

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

47

cerde2000>>ba oui c ca c le truc que j'ai utilisé pour faire mon self extracting et ca marche bien
par contre comment on fait apres pour choper a partir de où commence le code ????
euh...

48

Pollux > je pense que la méthode pour prog kernel marche, elle est ©PpHd smile
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

49

bah ça doit pas marcher sous Titanik happy

enfin remarque Ptr2Hd pourrait tjs détecter le ghost space dans ces cas-là... la solution plus propre serait de faire "move.l #un_label_du_prog,a0", comme ça on est sûr que c la relocation du kernel (donc a priori pas dans le ghost) qui est utilisée.

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

50

le kernel sait s'il a utilisé ou non le ghost space, nan ? donc il peut le soustraire s'il l'a utilisé. Si ça marche pas avec TitaniK, c'est qu'il est buggué, stou
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

51

Vertyos :
Hmm c'est Kevin qui m'avait donné l'astuce à l'époque, je vais essayer de te retrouver ça...

extern void self asm("tigcc_compiled.");
void *selfPtr = &self;

Raté, ça ne marche plus avec TIGCC 0.95!
C'est "__ld_entry_point" qu'il faut mettre maintenant et plus "tigcc_compiled.".

Et sinon, il vaut mieux de passer par un lanceur externe qu'un auto-décompresseur. Si ExePack utilise un lanceur externe, c'est pour une raison!

Quant au ghost space, c'est pour ça qu'il y a:
  // In case the program is in the ghost space, AND out the extra bit(s).
  ((unsigned long) program_counter) &= 0x3FFFF;

dans FindProgramVar.
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é

52

Kevin Kofler :
Raté, ça ne marche plus avec TIGCC 0.95!
C'est "__ld_entry_point" qu'il faut mettre maintenant et plus "tigcc_compiled.".

Ah. Compatibilité anterieure happy
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

53

J'ai dit dès le départ que c'était un hack! Et "hack" = "arrêtera de marcher à tout moment".
tigcc_compiled. est le début du fichier, pas le début du programme. Ce n'est plus la même chose.
Mais il y a maintenant une méthode qui n'est pas un hack: __ld_entry_point.
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é

54

Et qui ne changera donc plus *jamais* ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

55

Étant des programmeurs amateurs (un mot que tu aimes tant tongue), nous ne pouvons rien promettre.
Cela dit, il n'est pas prévu que __ld_entry_point arrête de marcher, c'est un symbole documenté du linker, et nous ne comptons pas changer le linker encore une fois.
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é

56

Tu m'as l'air de passer de l'état de programmeur amateur à l'auto-proclamation "professionel" quand ça t'arrange toi roll

Ok, alors disons que ça marchera à long terme...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

57

Flanker :
bah pour moi, que tu fasses ton propre format ou que tu utilises les pack archives, ça ne change rien tongue il n'y avait aucun sous-entendu si tu utilises les pack archives, tu n'as rien à faire, si tu fais ton format, tu dois coder.

j'ai bien compris ne t'inquiète pas. en fait je n'ai jamais utilisé pack archive, je fais mes propres formats la plupart du temps, ça demande plus de réflexion et de temps mais y a que comme ça qu'on progresse à mon avis
Flanker
: c'est une très mauvaise idée, surtout en asm (peut-être qu'en C ça passerait mieux). Au final, il vaut beaucoup mieux choisir un des formats et s'y tenir. Un programme kernel transformé à l'arrache en nostub va être bien plus gros que s'il avait été programmé depuis le début en nostub, et réciproquement (je dis ça par expérience personnelle ^^)

ok! c'est bon à savoir

58

qu'est-ce qui ne va pas?      //Pointe sur le sym du prog en cours      SYM_ENTRY *sym = FindProgramVar();            //Pointe sur le handle      HANDLE *handle;      handle = HeapDeref(sym->handle);            //Récupère la taille du prog      unsigned short add=100,size=*(unsigned short*)handle;            //Modifie la taille      HANDLE h = HeapRealloc(*handle,size+add+2);      //Si ça a réussi      if (h)      {           //Met à jour le pointeur du handle           handle = HeapDeref(h);           // Pointe "old" sur le tag avant redimensionnement et "p" sur l'octet precedant le tag           char *old = (char*)(handle+*(unsigned short*)handle+1);           char *p=old-1;                      // Ajoute 10 octets à la variable           *(unsigned short*)handle = size+add;                      // Réécrit le tag           *(unsigned char *)(old + add) = ASM_TAG;             // cherche le mot nul           while(*(p--) || *p) p-=3;             // déplace la table de relogements           memmove(p+add,p,old-p);      }
on dirait que le pointeur du handle n'est pas remis à jour??!?

59

Déjà, ça n'est pas un pointeur de handle, mais un numéro de handle. Ensuite c'est normal, HeapRealloc ne fait qu'étendre le handle si possible mais n'en change pas le numéro (cf la doc de tigcc...).
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.

60

Si si, c'est un pointeur de HANDLE :
HANDLE *handle;
lolpaf

IroS> Regarde un cours de C sur l'arithmétique des pointeurs... Ajouter un entier à un "HANDLE *" et à un "char *", ça ne fait pas la même chose...

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