Como esse assunto me interessa também, ontem fiz alguns testes no Lock Bits de um Atmega328p,
Para programar o chip, eu uso o próprio FTDI do Arduino nesse site explica como:
http://www.geocities.jp/arduino_diecimila/bootloader/index_en.htmlLendo o DS do Atmega, os bits 0 e 1 do LOCK BYTE quando 0(programado) Não permite mais a mudança
dos Fuse Bits e Lock Bits e também não permite a leitura do Flash e do Eeprom.
No meu Arduino 2009 Clone, que estava com a ultima versão do Optiboot os Lock Bits eram 2F(00101111)
zerei os dois ultimos bits para 2C(00101100) e gravei.
Aparentemente o bootloader funciona corretamente e manda novas sketches sem problema, mas com programa do primeiro link não mais consigo ler a Flash e Eeprom.
Façam o LOCK por sua conta e risco. Se quiserem voltar ao estado anterior será necessário apagar o chip, e seguir os passos do primeiro link
Links:
DS atmega328p :
http://www.atmel.com/dyn/resources/prod_documents/doc8271.pdf pag. 297 em diante.
EDIT: Não cheguei a ver como faz no Atmega8.