读取芯片里的程序通常有以下几种方法:
通过芯片的测试接口
一些芯片提供了专门的测试接口,可以使用这些接口来读取芯片内部的程序。
使用特殊的编程器
对于某些芯片,可能需要使用特殊的编程器来读取其内部程序。
通过JTAG接口
一些芯片支持通过JTAG(Joint Test Action Group)接口来读取其内部程序。
通过线程接口
一些芯片提供了线程接口,可以通过线程接口读取获取芯片内部的程序。
使用Keil软件
如果芯片是Flash类型的,可以使用Keil软件配合硬件调试工具进行读取。需要配置Keil工程,去掉硬件调试中的Load Application at Startup选项,并配置flash为不进行擦写。然后进入芯片仿真模式,并以全速运行以确保memory中的数据准确。接着,使用命令窗口输入保存memory区命令,如SAVE C:\path\to\savefile.txt 0x00000000,0x00006750,其中save是命令码,路径是保存文件的地址,起始地址是芯片代码区的开始地址。最后,读取保存的文件,如果文件内容与Keil编译生成的hex文件一致,则可以判断代码是否被正确读取。
使用专用工具
对于某些类型的芯片,如Flash Extractor芯片,可以通过拆卸芯片后放置在适配器上,使用专用的读取程序如NAND_Reader.exe进行读取。这涉及到芯片的拆卸、清洁、放置在适配器上,并通过软件选择存储转储的工作文件夹、选择芯片、配置等步骤完成读取过程。
使用Jlink工具
对于STM32等类型的芯片,可以使用Jlink工具读取内部的程序。通过选择整个Flash区域或手动指定地址范围进行读取,读取成功后可以选择保存为Hex格式的文件,以便后续分析和验证。
物理破解
攻克芯片解密的方法,都是采用物理破解的方法,即重新改变芯片内部线路的方法,这种方法所读取出来的程序正确率为100%。
建议根据具体的芯片类型和可用工具选择合适的方法进行读取。如果芯片类型较为常见且支持通用工具,如JTAG接口或Keil软件,则这些方法通常较为简便和可靠。对于特殊类型的芯片,可能需要使用专用的硬件和软件来进行读取。