IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Lire & Ecrire dans un processus


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut Lire & Ecrire dans un processus
    Bonsoir à tous,

    Du temps ou j'étais sous windows j'avais créer un trainer pour un jeu, ca m'avait servie de projet pour m'essayer à l'écriture en mémoire & co .

    J'avais entre autre utilisé les fonctions OpenProcess(), GetWindowThreadProcessId(), ReadProcessMemory() et WriteProcessMemory().

    J'aimerai savoir si il était possible d'effectuer les même chose sous linux ( je suis sous ubuntu 10.04 ) je ne demande pas qu'on fasse le travail a ma place mais plutot une liste de mot clé qui me mettraient dans la bonne voie.

    Merci d'avance, bonne soirée.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 220 064
    Points
    220 064
    Billets dans le blog
    126
    Par défaut
    Bonjour,

    Je ne connais pas la solution, mais je suis vraiment interessé
    Le système étant plus protégé ( si j'ose dire ) cela sera peut être plus difficile.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 401
    Points : 23 780
    Points
    23 780
    Par défaut
    Oui, tu peux mais pas facilement, de cette manière.

    Pour faire ce que tu fais, il vaut mieux déclarer un segment de mémoire partagé avec shmget().

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 220 064
    Points
    220 064
    Billets dans le blog
    126
    Par défaut
    Oui mais dans ce cas, c'est plus le programme lui même qui dit: "Venez acceder à ma mémoire librement"

    Dans le cas geek-59600, il précise que son point de départ était un trainer. Donc, c'est acceder à la mémoire d'un programme, à un point qui ne devrais pas.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Oui voila c'est plus dans ce sens la, enfaite dans mon trainer je remplacer 3 octets dans la mémoire du processus afin d'y mettre des NOP \x90, si je me rappelle bien afin d'empêcher la décrémentation du nombre de missile dans le jeu.

    J'avais rédigé un bref tuto à mes début en C++ il n'est certes pas parfait et contient quelques erreur cependant si ca t'aide à y voir plus clair je peux te fournir le lien en MP ne sachant pas si j'ai le droit de le poster directement sur le forum.

    Merci de votre attention.
    Bonne journée

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Tu cherches à accéder à la mémoire d'un processus qui n'est pas le tien, qui plus est pour modifier des données (c'est a dire écrire).

    Un OS qui te laisse faire ceci est une passoire. C'est la base même de la gestion de la mémoire : chaque processus est étanche, et ne doit pas pouvoir être accédé en écriture depuis un autre processus.

    Après, rien ne t'empêche, en lançant un programme en root, d'aller écrire un segment mémoire directement, mais rien ne te garanti que le système ne va pas purement et simplement tuer le processus ... Ou les deux d'ailleurs.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Je comprends, c'est vrai que c'est plus safe ainsi mais ma vilaine curiosité m'incite à fouiner encore un peu, pourriez vous m'orienter au sujet de la lecture/écriture dans la mémoire, liste de mot clef, exemple ou autre.

    Merci

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 401
    Points : 23 780
    Points
    23 780
    Par défaut
    Citation Envoyé par gangsoleil Voir le message
    Un OS qui te laisse faire ceci est une passoire. C'est la base même de la gestion de la mémoire : chaque processus est étanche, et ne doit pas pouvoir être accédé en écriture depuis un autre processus.
    Cependant, ça peut être tout-à-fait légitime si on a les droits idoines. L'exemple-type est celui de gdb qui permet de rattacher un processus existant à loisir et de le monitorer. C'est d'ailleurs l'usage d'un débugueur que je conseillerais pour faire un trainer occasionnel.

    Il en reste que ça doit être possible, mais que je ne connais pas les bons appels. Je vais creuser un peu.

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 220 064
    Points
    220 064
    Billets dans le blog
    126
    Par défaut
    Oui, il faut savoir que pour faire les trainer sous windows ( et aussi autre technique de cracking ), les commandes utilisées sont les commandes de debugguage de windows.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Donc la 'voie' a suivre serait celle des appels système lors d'un débug ?

    Je vais fouiner

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 220 064
    Points
    220 064
    Billets dans le blog
    126
    Par défaut
    La voie à suivre: Le code de gdb

    D'ailleurs je me demande si on peut changer les données à la volée avec gdb :s ( du moins je ne le fais jamais, ou je ne sais pas le faire :s )

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 401
    Points : 23 780
    Points
    23 780
    Par défaut
    Voila. L'appel en question est ptrace(), conforme à peu près à tout ce qui peut se vanter d'être un Unix de près ou de loin, à l'exception notable de POSIX, visiblement.

    Le procédé est bien débroussaillé ici : http://www.alexonlinux.com/how-debugger-works

Discussions similaires

  1. lire et ecrire dans un fichier.doc en java
    Par devamine dans le forum Documents
    Réponses: 8
    Dernier message: 08/07/2008, 08h12
  2. Probleme pour lire et ecrire dans un meme flux
    Par kururin dans le forum C#
    Réponses: 1
    Dernier message: 18/05/2007, 18h50
  3. lire et ecrire dans les fichiers INI sans MFC
    Par skeltryx dans le forum C++/CLI
    Réponses: 10
    Dernier message: 24/04/2007, 09h03
  4. lire et ecrire dans un ficher
    Par menuge dans le forum Général Python
    Réponses: 1
    Dernier message: 09/11/2006, 15h56
  5. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo