Unlock MCU ATmega644P Binary from its encrypted memory, it could include flash and eeprom, read the firmware out from the memory directly after crack MCU;
The EEPROM access registers are accessible in the I/O space. The write access time is in the range of 4.6 – 8.2 ms, depending on the frequency of the calibrated RC oscillator.
See Table 16 for details. A self-timing function however, lets the user software detect when the next byte can be written. If the user code contains code that writes the EEPROM, some precautions must be taken.
In heavily filtered power supplies, VCC is likely to rise or fall slowly on Power-up/down. This causes the device for some period of time to run at a voltage lower than specified as minimum for the clock frequency used.
CPU operation under these conditions is likely to cause the program counter to perform unintentional jumps and eventually execute the EEPROM write code.
To secure EEPROM integrity, the user is advised to use an external under-voltage reset circuit in this case. In order to prevent unintentional EEPROM writes, a two-state write procedure must be followed.
Refer to the description of the EEPROM Control Register for details of this. When the EEPROM is read or written, the CPU is halted for two clock cycles before the next instruction is executed. The EEPROM Address Register (EEAR) specifies the EEPROM address in the 64 bytes EEPROM space. The EEPROM data bytes are addresses linearly between 0 and 63.
The initial value of EEAR is undefined. A proper value must be written before the EEPROM may be accessed. For the EEPROM write operation, the EEDR register contains the data to be written to the EEPROM in the address given by the EEAR register.
For the EEPROM read operation, the EEDR contains the data read out from the EEPROM at the address given by EEAR. When the I-bits in SREG and EERIE are set (one), the EEPROM Ready Interrupt is enabled. When cleared (zero), the interrupt is disabled.
The EEPROM Ready Interrupt generates a constant interrupt when EEWE is cleared (zero). The EEMWE bit determines whether setting EEWE to one causes the EEPROM to be written. When EEMWE is set (one), setting EEWE will write data to the EEPROM at the selected address.
If EEMWE is zero, setting EEWE will have no effect. When EEMWE has been set (one) by software, hardware clears the bit to zero after four clock cycles. See the description of the EEWE bit for an EEPROM write procedure.