So I tried this before I got into pywallet because I read a post about some versions of pywallet being modified to steal bitcoins. I knew it would take some time for me to figure all that out. Anyway, I found this on reddit in response to a guy who had 18 btc in a corrupt wallet. It worked, it loaded the wallet without the corruption error, unfortunately it showed 0 btc
From reddit user musicbunny
"1 in a million:
Make sure you do not lose your backup wallet.dat file.
Make a backup of your backup wallet.dat file. (copy the file)
Cut off the end of the wallet.dat file, so only the first 80% exists. Basically, split the file in two.
Try putting in the first half wallet.dat file you've made from your backup.
If you're lucky it will get to the point of having your 18 btc and then not having bitcoin-qt freak out on you.
If this doesn't work, then you'd probably have to go through the source code of bitcoin-qt and find out how it serializes data/reads data/writes data, and then write a program to get at the data, find the good data, find the bad data, split the two, and then write back."
https://www.reddit.com/r/Bitcoin/comments/1crbne/corrupted_walletdat_with_18_btc_possible_to/