tang_qianfeng 发表于 2023-12-27 10:45:24

探讨一下,那些MCU解密的,而且还不破坏母片,用的啥原理啊?

难道他们摸索到了芯片的漏洞?

lb0857 发表于 2023-12-27 10:59:17

串口或者烧写端口发几段引诱代码
mcu乖乖的投降
吐出所有代码

tang_qianfeng 发表于 2023-12-27 11:05:08

lb0857 发表于 2023-12-27 10:59
串口或者烧写端口发几段引诱代码
mcu乖乖的投降
吐出所有代码
(引用自2楼)

哪有这么简单哦

lb0857 发表于 2023-12-27 11:08:34

tang_qianfeng 发表于 2023-12-27 11:05
哪有这么简单哦
(引用自3楼)

不开盖就是这样情况
全自动操作
人工放到测速架上面接下来就是软件的事情了

tang_qianfeng 发表于 2023-12-27 11:10:11

lb0857 发表于 2023-12-27 11:08
不开盖就是这样情况
全自动操作
人工放到测速架上面接下来就是软件的事情了 ...
(引用自4楼)

那是bug吗?听人家说是代码在擦除的时候,只在擦除加密位的时隙给芯片加电到擦除电压,只擦加密位,不知道真假

lw32 发表于 2023-12-27 12:01:42

tang_qianfeng 发表于 2023-12-27 11:10
那是bug吗?听人家说是代码在擦除的时候,只在擦除加密位的时隙给芯片加电到擦除电压,只擦加密位,不知 ...
(引用自5楼)

有些MCU会有这样的BUG,导入程序到RAM运行,然后就可以把FLASH的全部内容读取出来了
这个BUG不同厂家的MCU难易程度不一样,据说是只能在上电的某个瞬间注入代码才行,MCU复位之后内部的保护机制有个时间差

cy18 发表于 2023-12-27 15:49:18

lb0857 发表于 2023-12-27 10:59
串口或者烧写端口发几段引诱代码
mcu乖乖的投降
吐出所有代码
(引用自2楼)

之前看到有帖子说把烧录口干掉,看来是有道理的...

ycheng2004 发表于 2023-12-27 16:34:21

本帖最后由 ycheng2004 于 2023-12-27 16:48 编辑

STM32可以这样解密,
现在IC品牌太多了, 好像加密都差不多
请问网友,加密哪家强?主要防读出数据,

modbus 发表于 2023-12-27 17:24:00

ycheng2004 发表于 2023-12-27 16:34
STM32可以这样解密,
现在IC品牌太多了, 好像加密都差不多
请问网友,加密哪家强?主要防读出数据, ...
(引用自8楼)

不能防读出,开盖读防不住,还是得依靠唯一ID加密

tang_qianfeng 发表于 2023-12-28 07:40:40

ycheng2004 发表于 2023-12-27 16:34
STM32可以这样解密,
现在IC品牌太多了, 好像加密都差不多
请问网友,加密哪家强?主要防读出数据, ...
(引用自8楼)

actel,哈哈

ycheng2004 发表于 2023-12-28 07:46:19

tang_qianfeng 发表于 2023-12-28 07:40
actel,哈哈
(引用自10楼)

这种不能用C语言编程吧?

tang_qianfeng 发表于 2023-12-28 07:51:23

ycheng2004 发表于 2023-12-28 07:46
这种不能用C语言编程吧?
(引用自11楼)

有带arm硬核的吧,

wqy0410 发表于 2023-12-28 11:22:09

丝印打磨,别用ST。就算破解也要花些力气吧

fcm32 发表于 2023-12-28 14:38:02

lb0857 发表于 2023-12-27 10:59
串口或者烧写端口发几段引诱代码
mcu乖乖的投降
吐出所有代码
(引用自2楼)

说起来确实是这么回事,但一些细节需要处理好,也不是每个人就能简单搞定的。

我看到的F0的破解器,是连接了SWD的,所以肯定是通过调试口。

最重要的一步,是往SRAM里下载木马程序。这一步虽然重要,但却是最简单,因为,以STM F0为例,加密后,没有禁止向SRAM写入数据!!!
我认为这个才是最大的漏洞,曾经我尝试过在加密后禁止SRAM的写,但带来了一个问题,市面上许多的下载器、调试器用不了了!估计这些工具都没有合理的安排烧写算法的下载时刻,为了和市面工具兼容,只好放弃此限制。

木马程序下载成功后,就是要想办法让它运行了。这里牵涉到2个问题:一是CPU的操作,二是MCU的保护机制。
CPU能够在SWD接口的控制下,进行哪些操作,需要仔细去读M0和DEBUG的手册。
而MCU的保护机制,以F0为例,在RDP LEVEL1时,如果从SRAM运行程序、SWD和系统BOOT,这三者其一读取FLASH时,都是受保护的,那要怎么绕过这个保护机制?怎么让MCU认为木马程序不满足以上三个条件?而且,非法访问FLASH会产生hardfault,对于M0这种CPU,还不支持中断重映射,这样一旦产生了hardfault,通常会进入FLASH的hardfault中断,一般是个死循环,退不出来了。

以F0兼容系列为例,MCU的保护机制,一众原厂也是参考的ST,但估计在具体的设计实现上,会有一些细微差别。现在研究这些破解的,都是从ST开始,也看到有部分国产的能被破解,但由于原厂设计上的差异,可能破解起来还是有些不同。我也买过一个F0的破解器,暂时破不了我们的MCU,也联系了卖家,把我们的F0/F1寄过去,据反馈不能得到完整 的程序,至于是不能破解,还是破解了一部分,就不得而知了。

如果不能防止木马下进SRAM,那另一个有效的方法,就是禁止FLASH的CODE,能被DBUS读取。因为要把FLASH内容丢出来,通过读取的方式,必然是走的CPU的DBUS通道,因此,切断此通道,是个行之有效的办法。目前,AT的sLib,和我们的PLib,都是类似。

ycheng2004 发表于 2024-4-25 22:09:31

本帖最后由 ycheng2004 于 2024-4-25 22:10 编辑

fcm32 发表于 2023-12-28 14:38
说起来确实是这么回事,但一些细节需要处理好,也不是每个人就能简单搞定的。

我看到的F0的破解器,是连 ...
(引用自14楼)

请问你们的F0/F1 MCU是什么品种?最近在选型,
G系列用这个方法可以读出数据吗?
谢谢!

fcm32 发表于 2024-4-27 08:45:44

ycheng2004 发表于 2024-4-25 22:09
请问你们的F0/F1 MCU是什么品种?最近在选型,
G系列用这个方法可以读出数据吗?
谢谢! ...
(引用自15楼)

G系列据说已经可以破解了,可以上闲鱼搜:stm32g0 解密

我们的F0/F1主要兼容ST,然后有扩展一些自己的特色。早期型号CAN不兼容,后期型号CAN也兼容,更有双can、can-fd等。

lb0857 发表于 2024-4-27 23:15:43

fcm32 发表于 2024-4-27 08:45
G系列据说已经可以破解了,可以上闲鱼搜:stm32g0 解密

我们的F0/F1主要兼容ST,然后有扩展一些自己的特 ...
(引用自16楼)

代码加crc检验的方法,据说效果不错。
盗窃的代码,修改id之后,必然会造成crc检验不同,因此触发代码被盗用处理机制。间隔一定时间之后错误运行关键代码。
让盗窃者产品出故障。

Elex 发表于 2024-4-27 23:56:00

fcm32 发表于 2023-12-28 14:38
说起来确实是这么回事,但一些细节需要处理好,也不是每个人就能简单搞定的。

我看到的F0的破解器,是连 ...
(引用自14楼)

印象中最大bug是系统对加密控制的判断执行依据是FLASH_OPTR寄存器而不是烧写的FLASH的option bytes,虽然这个FLASH_OPTR是上电时一次性自动从FLASH的option bytes和BOOT引脚加载的。如果这个FLASH_OPTR被改写了,加密限制好像就可以打开了。

fcm32 发表于 2024-4-28 08:43:46

Elex 发表于 2024-4-27 23:56
印象中最大bug是系统对加密控制的判断执行依据是FLASH_OPTR寄存器而不是烧写的FLASH的option bytes,虽然 ...
(引用自18楼)

原理上是这样的,但实际上应该不是这个原因。有机率通过电源的一些操作,读OPTR寄存器出错,和实际保护级别不一样。但这个其实挺难的,因为它是判断FLASH的输出再进行OPTR的更新,而且,数据不正确的话,是默认设置成LEVEL 1的。

看网上流传的破解视频,破解时间挺久的,那就不应该是通过让OPTR寄存器出错的方法。因为如果是加密去除了,通过SWD读取代码应该不会这么慢。现在破解的速度1秒钟大概2KB。

ycheng2004 发表于 2024-4-28 11:36:32

本帖最后由 ycheng2004 于 2024-4-28 11:38 编辑

fcm32 发表于 2024-4-28 08:43
原理上是这样的,但实际上应该不是这个原因。有机率通过电源的一些操作,读OPTR寄存器出错,和实际保护级 ...
(引用自19楼)

这个漏洞只针对F0/F1,Arm Cortex-M0+是不是用这个方法/漏洞破解不了?
看到网上Arm Cortex-M0+也可以破解,只是解密费用高, 约几万元, 可以阻当很多人去破解了,

ycheng2004 发表于 2024-4-28 17:20:26

fcm32 发表于 2024-4-28 08:43
原理上是这样的,但实际上应该不是这个原因。有机率通过电源的一些操作,读OPTR寄存器出错,和实际保护级 ...
(引用自19楼)

请问各位网友,,,国产很多ARM单片机, 仿真可以用St-link/j-link等通用仿真器吗?谢谢

fcm32 发表于 2024-4-29 08:23:34

ycheng2004 发表于 2024-4-28 11:36
这个漏洞只针对F0/F1,Arm Cortex-M0+是不是用这个方法/漏洞破解不了?
看到网上Arm Cortex-M0+也可以破 ...
(引用自20楼)

应该不是这个漏洞。别的原理。

亲鱼上可以搜到,g0也能破解,就是M0+

fcm32 发表于 2024-4-29 08:25:00

ycheng2004 发表于 2024-4-28 17:20
请问各位网友,,,国产很多ARM单片机, 仿真可以用St-link/j-link等通用仿真器吗?谢谢 ...
(引用自21楼)

J-Link肯定是所有的arm内核都能仿,但具体还是需要厂家添加支持。
STLink就不一定了,大多数能仿。

另外,要想不被读出code,risc-v可能是个好方向 ,因为出来的晚,研究的人少,暂时会相对安全一些。

modbus 发表于 2024-4-29 11:10:23

fcm32 发表于 2024-4-29 08:25
J-Link肯定是所有的arm内核都能仿,但具体还是需要厂家添加支持。
STLink就不一定了,大多数能仿。

(引用自23楼)

risc-v开盖读也拦不住吧

fcm32 发表于 7 天前

modbus 发表于 2024-4-29 11:10
risc-v开盖读也拦不住吧
(引用自24楼)

开盖肯定不在讨论范围内了,因为这种方法和内核并无关系,和厂家也无关系。

实际上开盖之后的处理,有几种方式:
一 跳过加密位(或电路),这种方式在以前简单的8位OTP上比较常见。实际上,对于电路规模庞大的32位MCU来说,不逆向电路,基本是不可能的。
二 从FLASH下探针,地址、数据、控制信号等,直接从FLASH读取。这个对于32位比较难,32位地址+10几位地址线+控制线,而且你还要了解 FLASH IP的规格,5-60条线不是那么好下探针的,更别说还有64位、128位FLASH的。
页: [1]
查看完整版本: 探讨一下,那些MCU解密的,而且还不破坏母片,用的啥原理啊?