Sel-Modifying Code: erf, j'avais oublié de poster un exemple :-(
5 réponses
AMcD®
Eh oui, j'ai oublié de filer l'exemple (basique) annoncé il y a quelques
jours. Désolé.
Bon alors, voici. C'est évidemment de l'ultra-basique et utilise le
classique WriteProcessMemory(). On peut évidemment faire bien plus hard et
technique, mais bon, je me méfie now :-).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Clément
"AMcD®" a écrit dans le message de news: 42cb1089$0$21738$
Eh oui, j'ai oublié de filer l'exemple (basique) annoncé il y a quelques jours. Désolé.
Bon alors, voici. C'est évidemment de l'ultra-basique et utilise le classique WriteProcessMemory(). On peut évidemment faire bien plus hard et technique, mais bon, je me méfie now :-).
En prime, quelques commentaires gratuits !
Merci ! Même si je comprends pas tout, c'est intéressant ! Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Merci encore. Spoofix.
"AMcD®" <arnold.mcdonald@free.fr> a écrit dans le message de news:
42cb1089$0$21738$626a14ce@news.free.fr...
Eh oui, j'ai oublié de filer l'exemple (basique) annoncé il y a quelques
jours. Désolé.
Bon alors, voici. C'est évidemment de l'ultra-basique et utilise le
classique WriteProcessMemory(). On peut évidemment faire bien plus hard et
technique, mais bon, je me méfie now :-).
En prime, quelques commentaires gratuits !
Merci !
Même si je comprends pas tout, c'est intéressant !
Est-ce que c'est complètement impossible de faire la même chose en C ? (sans
ASM inline)
"AMcD®" a écrit dans le message de news: 42cb1089$0$21738$
Eh oui, j'ai oublié de filer l'exemple (basique) annoncé il y a quelques jours. Désolé.
Bon alors, voici. C'est évidemment de l'ultra-basique et utilise le classique WriteProcessMemory(). On peut évidemment faire bien plus hard et technique, mais bon, je me méfie now :-).
En prime, quelques commentaires gratuits !
Merci ! Même si je comprends pas tout, c'est intéressant ! Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Merci encore. Spoofix.
AMcD®
Clément wrote:
Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas faire. Cela se fait, normalement, en langage d'assemblage, pur ou inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le hacking, c'est quand même toujours l'obligation de mettre de l'ASM à un endroit ou un autre.
-- AMcD®
http://arnold.mcdonald.free.fr/
Clément wrote:
Est-ce que c'est complètement impossible de faire la même chose en C
? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas faire. Cela
se fait, normalement, en langage d'assemblage, pur ou inline. Tu sais,
malgré tout ce qu'on peut lire de-ci, de-là, le hacking, c'est quand même
toujours l'obligation de mettre de l'ASM à un endroit ou un autre.
Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas faire. Cela se fait, normalement, en langage d'assemblage, pur ou inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le hacking, c'est quand même toujours l'obligation de mettre de l'ASM à un endroit ou un autre.
-- AMcD®
http://arnold.mcdonald.free.fr/
Cyrille Szymanski
"AMcD®" wrote in news:42cd1e39$0$12598$:
Clément wrote:
Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas faire. Cela se fait, normalement, en langage d'assemblage, pur ou inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le hacking, c'est quand même toujours l'obligation de mettre de l'ASM à un endroit ou un autre.
A partir du moment où tu arrives à obtenir l'adresse de ce qui t'intéresse c'est faisable.
En C, il faudra jongler judicieusement pour obtenir des adresses de portions de code situées au beau milieu d'une procédure, mais avec un peu de jugeotte et une connaissance a priori du compilo c'est jouable.
Le code sera plus ou moins illisible alors qu'en ASM il reste simple. Partant de là je ne vois pas franchement l'intérêt de se casser la tête.
-- Cyrille Szymanski
"AMcD®" <arnold.mcdonald@free.fr> wrote in
news:42cd1e39$0$12598$626a14ce@news.free.fr:
Clément wrote:
Est-ce que c'est complètement impossible de faire la même chose en C
? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas
faire. Cela se fait, normalement, en langage d'assemblage, pur ou
inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le
hacking, c'est quand même toujours l'obligation de mettre de l'ASM à
un endroit ou un autre.
A partir du moment où tu arrives à obtenir l'adresse de ce qui t'intéresse
c'est faisable.
En C, il faudra jongler judicieusement pour obtenir des adresses de
portions de code situées au beau milieu d'une procédure, mais avec un peu
de jugeotte et une connaissance a priori du compilo c'est jouable.
Le code sera plus ou moins illisible alors qu'en ASM il reste simple.
Partant de là je ne vois pas franchement l'intérêt de se casser la tête.
Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas faire. Cela se fait, normalement, en langage d'assemblage, pur ou inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le hacking, c'est quand même toujours l'obligation de mettre de l'ASM à un endroit ou un autre.
A partir du moment où tu arrives à obtenir l'adresse de ce qui t'intéresse c'est faisable.
En C, il faudra jongler judicieusement pour obtenir des adresses de portions de code situées au beau milieu d'une procédure, mais avec un peu de jugeotte et une connaissance a priori du compilo c'est jouable.
Le code sera plus ou moins illisible alors qu'en ASM il reste simple. Partant de là je ne vois pas franchement l'intérêt de se casser la tête.
-- Cyrille Szymanski
Alexandre
bonjour,
"AMcD®" a écrit dans le message de news: 42cb1089$0$21738$
Eh oui, j'ai oublié de filer l'exemple (basique) annoncé il y a quelques jours. Désolé.
<snip>
ça me fait penser à un petit "challenge" vu il y a quelques temps sur je sais plus quel site, qui est très sympa : faire un programme (en C par exemple, mais n'importe quel programme évolué suffit) qui affiche son code source.... (bien entendu, pas seulement en mode debug...)
bonjour,
"AMcD®" <arnold.mcdonald@free.fr> a écrit dans le message de news:
42cb1089$0$21738$626a14ce@news.free.fr...
Eh oui, j'ai oublié de filer l'exemple (basique) annoncé il y a quelques
jours. Désolé.
<snip>
ça me fait penser à un petit "challenge" vu il y a quelques temps sur je
sais plus quel site, qui est très sympa :
faire un programme (en C par exemple, mais n'importe quel programme évolué
suffit) qui affiche son code source.... (bien entendu, pas seulement en mode
debug...)
"AMcD®" a écrit dans le message de news: 42cb1089$0$21738$
Eh oui, j'ai oublié de filer l'exemple (basique) annoncé il y a quelques jours. Désolé.
<snip>
ça me fait penser à un petit "challenge" vu il y a quelques temps sur je sais plus quel site, qui est très sympa : faire un programme (en C par exemple, mais n'importe quel programme évolué suffit) qui affiche son code source.... (bien entendu, pas seulement en mode debug...)
Patrick 'Zener' Brunet
Bonjour.
Erf : c'est la fonction d'erreur ? :-D
Je réponds à AMcD® qui a écrit :
Clément wrote:
Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas faire. Cela se fait, normalement, en langage d'assemblage, pur ou inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le hacking, c'est quand même toujours l'obligation de mettre de l'ASM à un endroit ou un autre.
J'avais essayé à une époque de déclarer des tableaux sur la pile et ensuite, d'utiliser un pointeur de fonction pour plonger dedans. Mais donc en fait c'est de l'ASM déguisé, quoiqu'avec des tableaux de pointeurs de fonctions...
Avec cette technique il faut jouer fin avec le compilo + optimiseur : bien gérer les conventions d'appel. En fait dans ce type de plongée, les accidents les plus graves sont à la remontée.
Le but de la manip en C était bien sûr de faire du code polymorphe et portable à la fois.
Tout ceci est très joli (et utilisable aussi à des fins parfaitement licites).
Pour info, le dernier numéro de MISC est presque entièrement consacré au polymorphisme du code, et il y est même question de binaire multi-plate-forme...
Mais je suis sûr que vous l'avez déjà lu vous aussi ;-)
Cordialement,
-- /*************************************** * Patrick BRUNET * E-mail: lien sur http://zener131.free.fr/ContactMe ***************************************/
Bonjour.
Erf : c'est la fonction d'erreur ? :-D
Je réponds à AMcD® <arnold.mcdonald@free.fr> qui a écrit :
Clément wrote:
Est-ce que c'est complètement impossible de faire la même chose en C
? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas
faire. Cela se fait, normalement, en langage d'assemblage, pur ou
inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le
hacking, c'est quand même toujours l'obligation de mettre de l'ASM à
un endroit ou un autre.
J'avais essayé à une époque de déclarer des tableaux sur la pile et ensuite,
d'utiliser un pointeur de fonction pour plonger dedans. Mais donc en fait
c'est de l'ASM déguisé, quoiqu'avec des tableaux de pointeurs de
fonctions...
Avec cette technique il faut jouer fin avec le compilo + optimiseur : bien
gérer les conventions d'appel. En fait dans ce type de plongée, les
accidents les plus graves sont à la remontée.
Le but de la manip en C était bien sûr de faire du code polymorphe et
portable à la fois.
Tout ceci est très joli (et utilisable aussi à des fins parfaitement
licites).
Pour info, le dernier numéro de MISC est presque entièrement consacré au
polymorphisme du code, et il y est même question de binaire
multi-plate-forme...
Mais je suis sûr que vous l'avez déjà lu vous aussi ;-)
Cordialement,
--
/***************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
***************************************/
Est-ce que c'est complètement impossible de faire la même chose en C ? (sans ASM inline)
Heu, manipuler des opcodes en C ou autre langage, je ne sais pas faire. Cela se fait, normalement, en langage d'assemblage, pur ou inline. Tu sais, malgré tout ce qu'on peut lire de-ci, de-là, le hacking, c'est quand même toujours l'obligation de mettre de l'ASM à un endroit ou un autre.
J'avais essayé à une époque de déclarer des tableaux sur la pile et ensuite, d'utiliser un pointeur de fonction pour plonger dedans. Mais donc en fait c'est de l'ASM déguisé, quoiqu'avec des tableaux de pointeurs de fonctions...
Avec cette technique il faut jouer fin avec le compilo + optimiseur : bien gérer les conventions d'appel. En fait dans ce type de plongée, les accidents les plus graves sont à la remontée.
Le but de la manip en C était bien sûr de faire du code polymorphe et portable à la fois.
Tout ceci est très joli (et utilisable aussi à des fins parfaitement licites).
Pour info, le dernier numéro de MISC est presque entièrement consacré au polymorphisme du code, et il y est même question de binaire multi-plate-forme...
Mais je suis sûr que vous l'avez déjà lu vous aussi ;-)
Cordialement,
-- /*************************************** * Patrick BRUNET * E-mail: lien sur http://zener131.free.fr/ContactMe ***************************************/