有人可以提取在我提供的微控制器中刻录的HEX文件吗?
如果可能的话,某人如何确保其代码在嵌入式系统中得到保护?对于PIC和AVR微控制器,如何保护其固件不被复制?
有人可以提取在我提供的微控制器中刻录的HEX文件吗?
如果可能的话,某人如何确保其代码在嵌入式系统中得到保护?对于PIC和AVR微控制器,如何保护其固件不被复制?
Answers:
如今,大多数微控制器都有部分或制造商特定的方法来保护嵌入式固件代码。通常通过锁定通常允许读取代码存储器的电路来完成此操作。(您必须在数据表或制造商的网站上的适用应用笔记中查找零件的详细信息)。
一旦锁定,就无法使用常规技术读出代码存储器。这提供了合理级别的保护,以防止大多数黑客查看嵌入式应用程序的机器代码。
如今,许多MCU设备都有板载FLASH存储器来存储程序代码。通常可以用新代码替换以前存储在FLASH中并受保护的程序,但是需要进行全芯片FLASH擦除操作才能解锁保护机制。擦除后,该部件将像原始保护锁之前一样操作。如果加载了新程序,通常可以重新锁定零件以保护新加载的机器代码。
微控制器中有关代码保护的任何讨论都将不完整,而无需提及通常无法保证零件制造商提供的任何保护方案都是万无一失的。制造商甚至会声明保护系统不是100%傻瓜式的。造成这种情况的原因之一是,整个黑市市场都在发生着变化,勤奋的黑客会从收费部分中为想要付费的任何人读取代码,这是有偿的。他们设计了各种方案,允许从受保护的微控制器上的ROM或FLASH中读取代码。其中一些计划非常聪明,但在某些家庭中取得了比其他家庭更好的成功。因此,请注意这一事实,然后尝试保护您的程序免遭窥视。
一旦有人将手放在从微控制器(无论是否为受保护的微控制器)中读取的机器代码的二进制映像上,他们就可以通过称为反汇编程序的工具来处理机器代码。这会将二进制数据转换成汇编语言代码,可以对其进行研究以尝试了解程序算法的工作方式。准确地分解机器代码是一项艰巨的工作,可能需要大量工作。最后,该过程可能导致产生我所描述的汇编代码。如果您的程序是用某种高级语言(例如C,C ++或Basic)编写的,则汇编代码将仅表示程序的编译和链接结果。通常不可能一路将被盗的代码反向还原到高级语言级别。
这意味着用高级语言编写嵌入式应用程序固件实际上是有好处的。它提供了另一层,这使得您的程序难以完全进行反向工程。通过使用最先进的技术来优化编译器来编译嵌入式应用程序,可以带来更大的收益,因为性能最高的优化器可以从字面上将程序变成一个巨大的意大利面碗,其中包含数十个对短子例程的调用,这些子例程非常难解密反汇编程序。
大多数有经验的嵌入式开发人员会告诉您继续使用应用程序中MCU上提供的任何保护方案...。但不要依赖于产品开发的终点。他们会告诉您,在竞争中保持领先的最佳方法是不断升级您的产品,以使旧版本过时且在黑客克隆您的代码时不再感兴趣。更改代码,添加新功能,不时旋转PC板,以交换所有I / O以及您可能想到的其他任何东西。这样,您每次都能赢得比赛。
我认为Michael的答案足以解决这个问题,但我同时添加了这两个链接: 破解PIC 18F1320及其所做的一切,我们可能会失败! 这些对我来说都很有趣。