I don't know of any tool that will do a surface scan and fix the bad blocks too.
What type of a Mac and what type of hard drive are you having problems with?
I doubt you will find any software tools to "fix" bad blocks, at least for recent hardware. I don't know when it started but some time back the ability to remap a bad sector was merged into the firmware of the hard drive.
If you look at the S.M.A.R.T. registers for your drive with a tool like SMARTReporter, you should see an entry with ID number 05 and title "Reallocated Sectors Count". This is the number of bad sector's which the drive has remapped.
Perhaps Disk Warrior's "Bad Block" is referring to something else? (I couldn't guess what that might be though).
Update in reply to comment (below):
SMARTReporter appears to be a rather "quirky" utility. You can in fact query & display the contents of a drive's S.M.A.R.T. registers, you just have to jump through unexpected hoops to do it.
In the SMARTReporter FAQ you can find this tidbit:
Can SMARTReporter tell me exactly which S.M.A.R.T. test is failing?
Yes, starting with version 2.4.5! Right-click the drive in the drive-list in the preferences window and select "Check S.M.A.R.T. attributes".
Another SMARTReporter quirk is that cut'n paste apparently only works in these display windows when you use the menu bar entries. The keyboard shortcuts & mouse "right-click" context window won't do it. On the other hand, SMARTReporter IS free. ;-)
But I digress ...
Curiously, SMART Utility calls the drive "Failing" when all other utilities show it as "Verified". It shows 1 Pending Bad Sectors. So, how do you change a "pending" bad sector to a "removed" or "reallocated" one?
My understanding is that you would not do it. The drive's firmware is supposed to do it automagically on its own. Note what it says in the table in the Wikipedia S.M.A.R.T. article.
05 Reallocated Sectors Count
Count of reallocated sectors. When the hard drive finds a read/write/verification error, it marks this sector as "reallocated" and transfers data to special reserved area (spare area). This process is also known as remapping, and "reallocated" sectors are called remaps.
This is why, on modern hard disks, "bad blocks" cannot be found while testing the surface – all bad blocks are hidden in reallocated sectors. However, as the number of reallocated sectors increases, the read/write speed tends to decrease.
The raw value normally represents a count of the number of bad sectors that have been found and remapped. Thus, the higher the attribute value, the more sectors the drive has had to reallocate.
C5 Current Pending Sector Count
Number of "unstable" sectors (waiting to be remapped, because of read errors). If an unstable sector is subsequently written or read successfully, this value is decreased and the sector is not remapped. Read errors on a sector will not remap the sector (since it might be readable later); instead, the drive firmware remembers that the sector needs to be remapped, and remaps it the next time it's written.
So if the above is true then apparently the Pending Sector Count needs to be interpreted cautiously. The sector read error most likely occured during the disk scan you did earlier with TechTool. (BTW, do you mean TechTool Deluxe 3.1.3?) Since TechTool probably didn't try to write the sector, it was not (yet) reallocated.
Can that be done without a reformat?
I think a "reformat" would only accomplish something if the format wrote to every sector on the drive. I do not know whether a standard (non-secure) erase with Disk Utility ... which is what I believe you mean by a reformat in the context of a MAC ... would accomplish this.
If you did this it would be a very time consuming task. I recently did something like this with a 500GB laptop drive and it took a tad under 2 1/2 hours to complete. Of course, you'd have to add in the time to (hopefully) restore your system from your (hopefully trustworthy) backup.
It is not clear to me that there is a need for you to attempt to actively force this to be "corrected". Supposedly the drive's firmware should handle this on it's own the next time there is an attempt to write to bad sector. Also, it seems likely to me that the offending sector is not currently being used as part of any file. TechTool just "stumbled across" it while scanning all sectors of your drive.
But if you wanted to attempt to force a correction then I guess you'd have to do something which would force a write to that sector. It doesn't seem worth the effort though. I would just continue to back up your files and keep an eye on your drive in case it starts to degrade further.