Yes you can do a bit by bit scan.
You start at the beginning of the drive and take a 256 bit chunk of the raw data which will represent a private key, and turn that into various address types.
Then you check these addresses on the blockchain to see if they hold any balance.
If not then you shift the 256 bit chunk by one bit and you try again.
This way you wade through all bits on that drive, until you either reach your desired address, or the end of the drive.
If it is still on there then it will find it because the chunk of 256 bit will represent your binary private key which will be calculated into the target address that is holding the funds.
Make sure to also check the binary key in reverse, because sometimes the bits of the key are stored backwards on the drive.
However, if your keys are partly overwritten, as you said then it will not work.
It will only work when the all bit's of the key are there.
So at this point it is important to discuss why you think it's partly overwritten and how you think that this situation occurred.
If you think this because you re-installed the wallet and fear that it had overwritten the old wallet then it's a good idea to scan the drive because it is possible that it just put the new wallet onto a different block on the drive without actually overwriting the old one, so that would imply that the old one is still there fully intact as raw data, just not visible to the file system anymore because the file table is pointing somewhere else, to the new wallet file.
This also means that you will not find it by examining the new wallet file which possibly exists at a different location so a hex viewer isn't going to help unless you know the location of the old file which is basically invisible to the file system.
![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)