66 links
  • Ban's links
  • Home
  • Login
  • RSS Feed
  • ATOM Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
  • Injecter un appel de fonction avec GDB

    Vous avez une application qui ne fonctionne pas comme il faut, et vous n'avez pas le courage de tout rebuild pour faire des tests ? Vous sortez GDB, normal. Après quelques recherches, vous trouvez que cette application oublie purement et simplement d'initialiser une de ses bibliothèques ? Pas de problème, on va injecter l'appel manquant.

    C'est tout simple : ajouter un breakpoint là où l'on souhaite injecter l'appel (moi j'ai choisi main tout simplement : break main), puis lancer le programme (run). Quand le breakpoint est atteint, on appelle la fonction le plus simplement du monde avec call, et on reprend l'exécution comme si de rien n'était avec continue.
    Et voilà, pas besoin de patch binaire :] (bon OK le faire à chaque lancement c'est super chiant, même si ça peut se scripter en envoyant des commandes sur l'entrée standard de GDB)

    Pour que ça fonctionne il faut bien sûr soit injecter à une adresse connue (par ex. une fonction exportée), soit avoir les symboles de débogage pour que GDB puisse trouver l'adresse.

    November 7, 2015 at 19:55:09 GMT+1 * - permalink -
    QRCode
    - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=804363
    gdb debugging
Links per page: 20 50 100
Shaarli - The personal, minimalist, super fast, database-free, bookmarking service by the Shaarli community - Help/documentation