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

GDB Discussion :

[GDB]Modifier une variable sans avoir le code source


Sujet :

GDB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Par d�faut [GDB]Modifier une variable sans avoir le code source
    Bonjour,
    Je suis entrain de jouer � un jeu dont je n'ai pas le code source et je voudrais touver avec gdb l'emplacement de la variable qui sp�cifie le nombre de vies restantes (afin de la modifier). J'ai actuellement (au d�but du jeu) 5 vies; il faudrait donc que je trouve une variable de type int, uint, short ou unsigned short ou quelque chose dans le genre �gale � 5.
    J'arrive � faire "attach [PID du processus]" dans gdb mais je ne sais pas comment lui faire faire une telle recherche.
    Comment pourrais-je m'y prendre? (le programme n'est pas open-source)

  2. #2
    Membre �m�rite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par d�faut
    Hum... si tu n'as que le binaire, il y a de fortes chances qu'il soit compil� en release, c'est-�-dire sans symboles de debug ; gdb devrait te le dire ?

    Et sans symboles de debug, il ne te reste plus qu'� analyser le code machine pour trouver ta variable, autant dire que �a va te demander beaucoup de temps...

  3. #3
    Membre exp�riment�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    D�tails du profil
    Informations personnelles :
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par d�faut
    Tu peux essayer avec un find mais il faut avoir une plage d'addresse valide.

    Dans cet exemple je cherche l'entier 2 dans une plage prise au hasard (l'addresse de d�part a �t� donn� par gdb lors de l'attach).

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (gdb) where
    #0  0xffffe424 in __kernel_vsyscall ()
    #1  0xb6c1bc4d in ?? ()
    Backtrace stopped: previous frame inner to this frame (corrupt stack?)
    (gdb) find 0xb6c1bc4d, +800, (int) 2
    0xb6c1bdaf
    0xb6c1be0b
    2 patterns found.
    (gdb) find 0xb6c1bc4d, +800, (int) 10
    Pattern not found.
    (gdb) find 0xb6c1bc4d, +800, (int) 2
    0xb6c1bdaf
    0xb6c1be0b
    2 patterns found.
    (gdb)

  4. #4
    Candidat au Club
    Femme Profil pro
    1
    Inscrit en
    Avril 2014
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activit� : 1

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par d�faut
    Salut,
    ce n'est pas du tout compliqu�. Dans gdb, pour modifier une variable � partir de son adresse fait juste:
    set *(int*)<ADRESSE> = <VALEUR>
    ex:

    set *(int*)0xbffd3c4c = 0xCAFEF00D

    ou d'une fa�on plus courte
    set {int}0xbffd3c4c = 0xCAFEF00D

    Si tu es sur windaube je te conseil d'utiliser CheatEngine, qui est un outil pour analyser les donn�es dans l'espace d'adressage de n'importe quel processus. C'est un outil int�ressant permettant de faire la recherche de variable de n'importe quel type (float, int, char, ...) it�rativement � travers diff�rents snapshot de la m�moire. C'est super utile si tu veux �tendre les possibilit�s d'un jeu par exemple. C'est un domaine tr�s actif que l'on appel le "game enhancement", et est utilis� massivement pour faire les codes d'action replay.

  5. #5
    Membre exp�riment�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    D�tails du profil
    Informations personnelles :
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par d�faut
    Merci cocolapin0 pour le partage, tr�s int�ressant.

    Soit dit en passant si je devais coder le jeu, pour le nombre de vies j'utiliserais personnellement un char, plus petit en taille m�moire (1 octet) et largement suffisant si le nombre de vies ne saurait �tre sup�rieur � 255, ce qui est le cas je pense dans tous les jeux.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 19/06/2014, 18h38
  2. [XL-2003] permettre � l'utilisateur de modifier une variable chemin sans acc�s au code
    Par goldfinger13 dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 05/11/2011, 18h21
  3. Pouvoir modifier son site sans toucher au code via une interface
    Par openeyes dans le forum G�n�ral Conception Web
    R�ponses: 5
    Dernier message: 04/11/2010, 12h09
  4. logiciel pour modifier des pages d'une site sans connaissance de code
    Par charisma dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 4
    Dernier message: 07/06/2007, 17h10
  5. R�ponses: 2
    Dernier message: 03/05/2006, 15h33

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