I thought the ability to read back the contents of flash memory depended on the setting of the lock bit(s). If set then contents cannot be read back. Erasing the lock bits also erases the flash contents, so it's purpose was to allow a form of copy protection. At least that was my understanding and I've not researched if the Arduino IDE locks the flash contents after uploading?
Lefty