Well if the eeprom is external of the MCU, then no you cant copy protect it that I am aware of.
But if the firmware is masked into the CPU at the factory, or using flash memory thats protected, then yes... it might be a bit hard to get the code out of it.
HOWEVER... Theres always that however. 99% of the time, if its a masked one time program MCU that is identical to its flash counterpart, such as a Pic16F84 and PIC16C84 (hypothetically) then usually the low level utilities are still in the core! its just you cant get to them due to fuses.
So using a glitch technique you could theoretically dump out the code if the device has a flash counterpart because 99% sure they used the same core. I used to mess with this with the AVR series of chips back in the day. you could glitch it during an ISP Erase routine and still retain the code but at the same time resetting the protection fuse. This was tough because the timing had to be dead-on. any drift and you lost the code.
with a masked MCU its much easier. because you cant "erase" it. This is all assuming the low-level functions are still present in a masked ROM or OTP based core.
But if the firmware is masked into the CPU at the factory, or using flash memory thats protected, then yes... it might be a bit hard to get the code out of it.
HOWEVER... Theres always that however. 99% of the time, if its a masked one time program MCU that is identical to its flash counterpart, such as a Pic16F84 and PIC16C84 (hypothetically) then usually the low level utilities are still in the core! its just you cant get to them due to fuses.
So using a glitch technique you could theoretically dump out the code if the device has a flash counterpart because 99% sure they used the same core. I used to mess with this with the AVR series of chips back in the day. you could glitch it during an ISP Erase routine and still retain the code but at the same time resetting the protection fuse. This was tough because the timing had to be dead-on. any drift and you lost the code.
with a masked MCU its much easier. because you cant "erase" it. This is all assuming the low-level functions are still present in a masked ROM or OTP based core.