模拟STM32 Flash数据丢失、被串改的异常情况

这篇具有很好参考价值的文章主要介绍了模拟STM32 Flash数据丢失、被串改的异常情况。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在项目中,通常会将一些需要掉电存储的数据保存在flash中,但在某些情况下存储的数据会被莫名其妙的修改或者丢失,但这种情况又很难复现。为了模拟这种情况,我们可以读出Flash数据,修改某个值以后再下载进去,不需要动程序程序部分。以下内容分为三个部分,第一是读取Flash数据,第二是修改Flash数据,第三是修改后的数据下载回单片机。

一、读取Flash数据

借助的工具是SEGGER J-Flash

硬件工具是Jlink SWD

(1)打开SEGGER J-Flash工具,点击Options选项,选择Project Settings,打开界面后,选择SWD模式,如下图所示。

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

(2)MCU选择你当前用的型号,最后点击确认。如下图所示。

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

(3)连接单片机。

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

(4)读取Flash数据,根据程序设定的存储页数计算出地址,就得到了要读取的范围,举例:

STM32F103VCT6的1Page是1024字节,我程序设定从第200Page开始存储

#define ParameterAddress        (FLASH_BASE + (200 * 1024))	
// 200 * 1024 = 0x32000	
// 0x08000000 + 0x32000 = 0x08032000

 所以计算出来的地址是0x08032000

按下图打开界面

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

 输入地址,读取长度是0x1000字节

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

读取成功界面如下

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

 (5)Flash数据另存为Hex文件。

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

注意保存为Hex

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

二、修改Flash数据

打开Hex文件,下图红色框中的就是存储的数据

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机红色框的最后一个字节是字节校验码,Hex文件的格式解析可以参考下面链接

Hex文件格式

STM32 Hex文件格式解析

程序中设定了每个数据都是32bit存储,并且是地址+数据的方式存储,以红色框第一行的程序举例

地址0x20002437,值是0x000000C8

地址0x20002837,值是0x00320032

地址0x20002C37,值是0x000007D0

地址0x20003037,值是0x000007D0

最后一个E2是校验码。

假设我现在将0x000000C8修改为0x00000064,需要重新计算校验码,校验码计算方式是

1.将这一行的所有的字节(16进制)相加求和,得到sum

2.取sum的低8bit,得到A

3.0x100-A = 校验码。

那么修改后的校验码计算过程:

Sum = 20+20+00+00+24+37+00+20+64+00+00+00+28+37+00+20+32+00+32+00+2C+37+00+20+D0+07+00+00+30+37+00+20+D0+07+00+00 = 4BA

即Sum = 0x4BA

 取低8位为0xBA,则校验码为0x100-0xBA = 0x46

更改为后如下图

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

 三、将数据烧入单片机

(1)打开hex文件

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

如下图所示,hex文件带地址,下图红色框的地址默认为读取的起始地址,能够加载hex文件进来,说明校验码正确,校验码错误是不能加载hex文件的,小红色框的0x64表明修改成功

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机 (2)写入单片机flash,请确保Jlink连接着单片机

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

写入成功界面

flash数据被篡改 csdn,stm32,嵌入式硬件,单片机

         最后可以通过别的手段检测到Flash中的这个数据已经被篡改了。

        其实这个读取功能还可以用于读取别人下载进单片机中程序,读取地址从0x08000000开始,然后将其下载到另外的单片机中,实现的功能是一样的。文章来源地址https://www.toymoban.com/news/detail-783876.html

到了这里,关于模拟STM32 Flash数据丢失、被串改的异常情况的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【正点原子STM32连载】 第四十三章 FLASH模拟EEPROM实验 摘自【正点原子】APM32E103最小系统板使用指南

    1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 本章将介绍使用APM32E103的片上Flash模拟EEPROM,并对齐进行读写操作。通过本章的学习,读者将学习到

    2024年02月20日
    浏览(48)
  • STM32 FLASH 读写数据

    2.1 修改代码后编译,会有提示信息 KEIL,计算出来代码总共 61076 Byte 2.2 如果什么都没有改,直接编译是没有这个提示信息的 0x08000000 是存放代码的起始地址,我们保存的数据要和代码分开,放在代码区域后面,所以后面加了个80000, 比keil 编译里面算出来的和要大将近2 万个

    2024年02月12日
    浏览(31)
  • 使用STM32CubeProgrammer工具读取单片机Flash数据读取

    本文主要介绍,如何使用STM32CubeProgrammer工具读取和写入单片机Flash内部的数据,方便调试使用。 2.1 连接Stlink和单片机,点击“connect”进行连接 2.2 读取固定长度的数据 根据程序的大小,设置需要读取的字节数,如下图所示。点击“read”将单片机Flash中的数据读取到STM32Cube

    2024年02月12日
    浏览(41)
  • STM32G473VET6 FlashDB数据库移植(裸机、片内Flash)

    此文档也适用于STM32G070 此处使用FlashDB官方最新源码 FlashDB: 一款支持 KV 数据和时序数据的超轻量级数据库 (gitee.com) 克隆源码后目录如下 红框中几个为移植必要文件与参考 根据FlashDB官方文档可知,FlashDB底层依赖于RT-Thread的FAL组件,所以需要先移植FAL FlashDB源码中port目录下即

    2024年01月21日
    浏览(41)
  • STM32单片机初学8-SPI flash(W25Q128)数据读写

            当使用单片机进行项目开发,涉及大量数据需要储存时(例如使用了屏幕作为显示设备,常常需要存储图片、动画等数据),单靠单片机内部的Flash往往是不够用的。         如STM32F103系列,内部Flash最多只能达到512KByte,假设要储存240*240分辨率、64K彩色图片,

    2024年02月03日
    浏览(42)
  • STM32 利用FlashDB库实现在线扇区数据管理不丢失

    📍FalshDB地址: https://gitee.com/Armink/FlashDB ✨STM32没有片内EEPROM这样的存储区,虽然有备份寄存器,仅可以实现对少量数据的频繁存储,但是依赖备份电源(BAT引脚)为芯片维持供电,才能保持数据的不丢失。FlashDB库利用在线对片内或片外存储扇区进行管理,可以有效的保存数据

    2024年04月12日
    浏览(30)
  • 【STM32】STM32学习笔记-FLASH闪存(48)

    STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程 读写FLASH的用途: 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 通过在程序中编程(IAP),实现程序的自我更新 在线编

    2024年03月16日
    浏览(50)
  • STM32笔记 Flash

    笔记来源于江科协议的视频 芯片采用与stm32F103C8T6 •STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程,系统存储器里面存储的是BootLoader,是不允许修改的。 •读写FLASH的用途: 利

    2024年01月18日
    浏览(38)
  • STM32内部Flash

    目录 一、内部Flash简介 二、内部Flash构成 1. 主存储器 2. 系统存储区 3. 选项字节 三、内部Flash写入过程 1. 解锁 2. 页擦除 3. 写入数据 四、工程空间分布 某工程的ROM存储器分布映像: 1. 程序ROM的加载与执行空间 2. ROM空间分布表         STM32芯片内部有一个Flash存储器,主要

    2024年02月19日
    浏览(48)
  • STM32CubeMX学习笔记16--- STM32内部FLASH

    1. 内部FLASH简介         之前的文章中介绍过STM32F1利用SPI与外部FLASH(W25QXX芯片)通讯的例程,本例程将介绍STM32F1的内部FLASH,通过内部FLASH实现数据读写操作。 不同型号的STM32,其FLASH容量也有所不同,最小的只有16K字节,最大的则达到了1024K字节。此处我们使用的是ST

    2024年04月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包