Software kann nix ohne Hardware...
Muehli hat zu diesem Thema schon viel geschrieben.
Also, sobald die Festplatte feststellt, daß ein Sektor nur noch mithilfe der Fehlerkorrektur ausgelesen werden kann, wird dieser als "current pending" (schwebend) markiert. Nach dem nächsten Schreibvorgang wird geprüft, ob dieser wieder fehlerhaft ist. Wenn ja, wird er ausgetauscht (reallocated). Ansonsten wird die Fehlermarkierung wieder gelöscht.
Ich habe schon einige Platten in der Hand gehabt, bei denen die Kontaktleiste der Leiterplatte oxidiert war. Diese Platten waren recht langsam, und hatten viele "schwebende" Sektoren. Nachdem ich die vergammelten Kontakte mit einem Glasfaserpinsel (Radiergummi geht auch) gereinigt hatte, setzte plötzlich ein Selbstheilungseffekt ein, d.h. die platteninterne Fehlerkorrektur wurde aktiv. Passiert aber in freier Wildbahn relativ selten.
Man kann dies z.B. mithilfe der Smartmontools (smartctl --offlineauto=on /dev/sda) auch selbst anstoßen, oder mit "dd if=/dev/sda of=dev/sda" die Platte komplett neu beschreiben. Je nachdem, wie der Plattenhersteller die Firmware programmiert hat, können dann schwache Sektoren ausgetauscht werden. Es gibt aber auch genügend Exemplare, wo das nicht funktioniert, z.B. wenn die Platte eine Schreibschwäche hat. Seagate-Platten schreiben dann die Anzahl der nicht mehr ordentlich beschreibbaren Sektoren in den SMART-Wert 187 / 0xBB. Der ist manchmal sehr aussagekräftig, auch wenn die normalen SMART-Daten noch gut aussehen.
Meine Faustregel lautet: Bis etwa 10 schwache Sektoren nach einigen Monaten sind normal. Alles, was deutlich darüber hinausgeht, ist ein Alarmsignal!
Low-Level-Format können nur die Hersteller, dazu benötigt man Geräte, die die Köpfe von außen führen und dann Spurinformationen schreiben. Manche Programme behaupten aus historischen Gründen, so etwas zu können, dabei wird aber nur der Datenbereich mit "00" überschrieben.