I was facing the same problem as you a few days ago. Below is what i understand, hope it helps.
Experts : if i'm wrong, pls correct me.
The 1st 512 is boot sector call MBR not LBR. The boot sector you were trying access is LBR. LBR location can be calculate from MBR (offset location 0x1C6 : size 4 bytes)
eg.
my 16mb sdcard's MBR reads from offset location 0x1BF (0x00 0x01 0x1A 0x00 0x01 0x01 0x60 0xc1 0x39 0x00 0x00 0x00 0x47 0x70 0x00 0x00)
meaning at offset location 0x1c6 (4 bytes) = 0x39
so go read address location (0x39 * 512) for LBR
in my winhex, u can see at the bottom right side,value of physical sector no = 57 =0x39
Now i am face with another problem with reading the LBR of SDHC sd card; i.e I can read LBR of SD Ver1.x, Ver2.00 standard capacity but not Ver2.00 high capacity.
My SPI initialization flow does caters to init for all types of cards. I can read the MBR of all types of cards...but when i tried to read the LBR of the SDHC card, it is all "0"s.
My coding to read sd card is SPI CMD17 (read single block)
What i have done during troubleshooting is to 1st read MBR follow by LBR;
16MB card - pass
1G card - pass
2G card - pass
4G card - fail (LBR at 0x2000)
32G card - fail (LBR at 0x2000)
Thinking that it might be my coding issue reading sector location 0x2000, i tried reading this sector of my 1G ver2.00 sdcard and it is able to read the data inside correctly.
Is there any thing special to configure for SDHC?
Pls help me if you have encounter similar issues before. I have been looking at the sample codes and searching the net... but could not find an answer yet. Thanks.