hardware which is able to recover over-written data is extremely expensive and rarely works outside a lab environment
Very true. For spinny-disks, it involves analysing the analog signal from the read heads for both the payload data and the ECC data for each sector, then using all sorts of signal processing to suggest possible interpretations and statistical analysis to find out likely erased contents. I'm not sure if and/or how it is possible/done for flash (SSDs et cetera).
They say that with extremely sensitive read heads and lots of processing, it is possible to uncover overwritten data from spinning rust: not just zeroed, overwritten with new, unrelated data. This is ultra-expensive, and I believe requires liquid nitrogen cooled equipment (to get the signal-to-noise ratios needed). This is why
shredding – overwriting the entire drive several times over with random data – is used in security-sensitive situations.
(In olden days before journaling file systems like Ext3, Ext4, XFS, JFS, ZFS etc., one could use the
shred utility to shred individual files in this fashion. Note that you need to use a cryptographically secure PRNG, though. With current file systems, and even with old filesystems on RAID or Flash with integrated wear levelling (SSDs, SD cards, USB memory sticks, etc.), overwriting the file does not necessarily overwrite the old file data, so only full-disk shredding is reliable nowadays.)