Just a thought...

If you've blown the Configuration Fuse for CODE PROTECT you will read back all 0000's after programming. Run your PIC in a board... you may find it works as intended!