如何对单片机程序进行加密(防止别人破解)

单片机程序的破解无非就是非法途径获得源代码或者可执行文件(hex文件)。本文主要介绍两个方法防止别人从单片机fash中获取可执行文件(hex文件)。一方面保证别人不能获取你的hex文件,另一面就算别人非法获取你的hex文件,也无法在新的单片机中运行。

一、截断可执行文件获取源

通过软件对单片机fash的程序存储区进行读保护,如果想读fash的程序存储区的话,只能先进行擦除,从而起到对单片机内程序的保护。下面通过STM32F103C8T6单片机为例,演示未开启读保护和开启读保护的区别。

1.1 未开启读保护

先在keil中用stlink对单片机进行下载程序。在keil中下载程序是没有读保护的,可以通过STM32 ST-Link Uility软件读出单片机fash中的程序。

在keil中对stlink进行设置。

然后下载,显示下载成功。

接下尝试使用STM32 ST-Link Uility软件读出单片机程序。

打开软件,点击连接

连接成功后,可以在fash中看到二进制数,也就是程序可执行文件,将其保存下来,就可以下载到相同型号单片机上使用。

1.2开启读保护

点击软件上的Target->Option bytes就可以得到下面界面。在Read Out Protection框中选择Enabled就会开启读保护。在点击Apply应用

然后再点连接,就无法连接芯片,同时在keil上无法下载新的程序。(这种也就是所谓的单片机被锁了。那些某宝买到拆板芯片使用不了,也有可能是芯片被锁了,可以参考下面的解锁fash读保护就行了。)

此时只有对芯片解除读保护才能连接芯片和下载新的程序,解除读保护的时候会擦除fash,起到保护程序不会被非法获取。下面图片是解除读保护后连接fash的值,解除读保护后fash的值被擦除了。

通过对开启读保护和未开启对比,可以看出开启读保护能够从保护我们程序被非法获取。

二、对程序源码进行加密

每一片单片机都会有一个全球唯一ID号,我们可以通过在单片机程序中加入验证单片机ID号的程序,当读到的ID号与源程序设定的ID号不一致时,启动某段程序(例如跳转到其它死循环,不执行正常程序,或者可以设置一个自毁程序,擦除fash中的代码。)当别人非法获取到我们的hex文件,也没法使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值