要做DSP芯片破解,首先需要对芯片内部结构及其算法特征进行深入分析和理解,这是专业ic芯片解密工程师的一项必修课,因为只有在充分理解芯片内部结构和加解密特性的基础上,才能为芯片选择最最合理和安全可靠的破解方案。
结合在解密公司多年的工作经验,在这里为大家提供DSP芯片解密技术分析中对EEPROM编程算法的理解,供大家参考。(注:以DSPIC30F系列芯片破解为例)
EEPROM存储块(block)与程序存储器类似,是通过读表和写表操作访问的。因为EEPROM存储器只有16位宽,所以其操作不需要使用TBLWTH和TBLRDH指令。数据EEPROM的编程和擦除步骤与闪存程序存储器类似,区别在于数据EEPROM为快速数据存取进行了优化。在数据EEPROM上可以执行以下编程操作:
编程一个字
编程一行(16个字)
擦除一个字
擦除一行(16个字)
在正常操作中(整个VDD工作范围),数据EEPROM可读写。与闪存程序存储器不同,在EEPROM编程或擦除操作时,正常程序执行不会停止。EEPROM擦除和编程操作是通过NVMCON和NVMKEY寄存器执行的。编程软件负责等待操作完成。软件可以使用以下三种方法之一检测EEPROM擦除或编程操作的完成时间:
用软件查询NVMIF位(IFS0 12 )。当操作完成时NVMIF位会被置1。
用软件查询WR位(NVMCON 15 )。当操作完成时WR位会被清零。
允许NVM中断。当操作完成时,CPU会被中断。ISR可以处理更多的编程操作。
注:当编程或擦除操作执行过程中,如果用户试图读取EEPROM,会得到不可预料的结果。
1.擦除一个EEPROM字。
设置NVMCON寄存器以擦除一个EEPROM字。
将要擦除的字的地址写入TBLPAG和NVMADR寄存器。
将NVMIF状态位清零并允许NVM中断(可选)。
将密钥序列写入NVMKEY。
将WR位置1。这将开始擦除周期。
查询WR位或等待NVM中断。
2.将数据字写入数据EEPROM写锁存器。
3.将数据字编程入EEPROM。
设置NVMCON寄存器以编程一个EEPROM字。
将NVMIF状态位清零并允许NVM中断(可选)。
将密钥序列写入NVMKEY。
将WR位置1。这将开始编程周期。
查询WR位或等待NVM中断。
如果需要将多个字编程入EEPROM,每次擦除并编程16个字(1行)会比较快。向EEPROM编程16个字的过程如下:
1.读一行数据EEPROM(16个字)并以数据“镜像”方式保存到数据RAM。要修改的EEPROM部分必须处于偶数16字地址边界内。
2.使用新数据更新数据镜像。
3.擦除EEPROM行。
设置NVMCON寄存器以擦除EEPROM的一行。
将NVMIF状态位清零并允许NVM中断(可选)。
将密钥序列写入NVMKEY。
将WR位置1。这将开始擦除周期。
查询WR位或等待NVM中断。
4.将16个数据字写入数据EEPROM写锁存器。
5.将一行数据编程到数据EEPROM。
设置NVMCON寄存器以编程EEPROM的一行。
将NVMIF状态位清零并允许NVM中断(可选)。
将密钥序列写入NVMKEY。
将WR位置1。这将开始编程周期。
查询WR位或等待NVM中断。
以上就是dsp芯片破解的一种算法EEPROM的详细教程,你学会了吗?
2018-05-02 14:03:37 1300次 http://www.yiqi.com/retiao/detail_2119.html 热门标签: