Je lance généralement mon programme avec:
Perl -e 'print "A"x200' | ./vuln_prog
Le stdin est consommé par une fonction gets()
en C++.
Si ce n'était qu'un argument de commande, je pourrais ouvrir gdb en faisant:
gdb ./vuln_prog
run $(Perl -e 'print "A"x200')
Cependant, mon scénario n'est pas un argument de commande, mais plutôt une entrée (STDIN?). Comment pourrais-je déboguer cela dans gdb? J'ai essayé un tas d'options, mais rien ne semble vraiment fonctionner.
Je voudrais normalement simplement exécuter gdb sur le processus, et quand il demande une entrée utilisateur, tapez-le, mais je ne veux pas taper juste "A". Je veux taper tous les caractères de\x00-\xff, que je ne peux pas taper.
gdb ./vuln_prog
run < filename_with_input