You can perform "Thorough" scan in ScanDisk in Windows 98 or in Win2000 and above, go to Command prompt, and type
chkdsk/r and press ENTER.
These two methods find bad sectors and
repair them (repairing a bad sector means trying to extract the data present in that bad sector).
And there are many third party tools which perform similar functions like Unistall DiskRepair.
http://www.unistal.com/disk_repair.html
And almost all HDD manufactures have their own tools to test the Drives and recover data from bad sectors, you can search your HDD manufacturer's site for the tools.