Genellikle benim programı çalıştırmak. bu sadece bir komut argüman olsaydıgdb borulu girişine (argümanlar) ile ayıklama
, ben yaparak gdb açabilir:
gdb ./vuln_prog
run $(perl -e 'print "A"x200')
Ancak, benim senaryo oldukça girişi bir komut argüman değil, ama (? STDIN). Bunu gdb'de nasıl ayıklardım? Bir sürü seçenek denedim, ama hiçbir şey gerçekten işe yaramaz gibi görünüyor.
Normalde sadece gdb'yi işlemden geçiririm ve kullanıcı girdisi sorulduğunda, onu yazarken, sadece "A" yazmak istemiyorum. Yazamadığım \ x00- \ xff dizinindeki tüm karakterleri yazmak istiyorum.
Neden "gets" kullanıyorsunuz? Bazen kabul edilebilir (örneğin bir şeyi test etmek için hızlı bir program yazıyorsanız ya da program sadece güvenilir girdi ile çalıştırılacaksa) ama merak ediyorum. – flarn2006
Bu benim kodum değildi. Kodun sağlandığı eğlenceli bir ters mühendislik çalışmasıydı. – mandreko
Tamam. Kasıtlı olarak kullanılıyordu * çünkü, saldırıya olası bir çözümün bir parçası gibi savunmasızdı. – flarn2006