CN108304700A - 基于mcu的软件防反编译加密方法 - Google Patents
基于mcu的软件防反编译加密方法 Download PDFInfo
- Publication number
- CN108304700A CN108304700A CN201711376259.6A CN201711376259A CN108304700A CN 108304700 A CN108304700 A CN 108304700A CN 201711376259 A CN201711376259 A CN 201711376259A CN 108304700 A CN108304700 A CN 108304700A
- Authority
- CN
- China
- Prior art keywords
- program
- eeprom
- coding
- mcu
- read protection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000001514 detection method Methods 0.000 claims abstract description 4
- 238000002360 preparation method Methods 0.000 claims abstract description 4
- 230000007257 malfunction Effects 0.000 claims abstract description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001681 protective effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于MCU的软件防反编译加密方法,包括以下步骤:绑定MCU的唯一编码;设定读保护;在程序驱动层加壳;完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被破坏,继续执行主程序,循环检测读保护标志寄存器。
Description
技术领域
本发明涉及一种软件防反编译加密方法,具体涉及一种基于MCU的软件防反编译加密方法。
背景技术
MCU(Micro Control Unit)中文名称微控制单元(微控制器),又称单片微型计算机(Single Chip Microcomputer)或者单片机,是指随着大规模集成电路的出现及发展,将计算机的CPU、RAM、ROM、定位计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。MCU可以为不同应用场合下的嵌入式系统提供不同组合的逻辑控制。
随着半导体技术的日益革新以及汽车电子、消费类电子、工业控制等相关应用行业迅猛发展,MCU的应用也变得日益广泛。据行业分析报告预计,截至至2017年,MCU全球市场规模将达到170亿美元。
然而随着MCU市场的蓬勃发展,MCU反编译、反汇编破解工具越来越多,这就给基于MCU开发中的软件爱你安全带来了很大挑战。目前基于MCU软件的加密方法有三类,其一为采用仅支持一次烧写(OTP)的flash,此种格式的flash破解难度较大,可以有效防止程序被破解,但是不支持可擦写的flash会给软件开发带来很大的难度;其二为MCU设计之初加入的硬保护,如熔断保护、读保护等,这种加密方法企图从源头保证程序不被拷贝,从而消除程序被反编译的风险,但是针对这种加密方法,反向工程仅使用成本很小的物理手段配合出厂硬件密钥机壳将其破解;其三为软件保护,如加壳等,通用的加壳法方法是定义一组字符串,通过在程序中不同位置将不同的字符组合的方式验证程序是否被篡改,从而达到为程序加壳的目的,然而如果在不改动程序的情况下单一进行复制,程序仍然可以运行,因此加密也就失去意义。基于以上背景本专利提出一种基于MCU的软件防反编译加密方法,以有效解决上述问题。
发明内容
对此,本发明旨在提供一种安全性更高的基于MCU的软件防反编译加密方法。
实现本发明目的的技术方案是:
一种基于MCU的软件防反编译加密方法,包括以下步骤:
绑定MCU的唯一编码,定义随机密码本数字,其字节数与确定的明文编码一致,按照固定数字位数字不变其它数字位随机的方式生成明文编码,并将明文编码写入设定的EEPROM中设定位置,然后将生成的明文编码与密码本固定密码进行与、或、非、加、减、乘、除基本运算的组合运算生成密文编码,最后将生成的密文编码及密码本数字写入EEPROM中设定位置,完成MCU的唯一编码的绑定;
设定读保护,在程序主循环中加入读保护寄存器标志位判断,实时监测程序寄存器标志位是否改变,一旦识别到程序寄存器标志位改变即读保护被解除,清除EEPROM中数据;
在程序驱动层加壳;
完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被破坏,继续执行主程序,循环检测读保护标志寄存器。
上述技术方案中,所述壳体包含两种,一种是EEPROM中密文固定数字位判断,另一种是判断明文密文操作中地址变量的Checksum值是否发生改变,一旦有一个壳体出错,选择一个常见的程序出错判断变量给其赋错值,使程序进入常见出错状态。
上述技术方案中,下载程序时通过分开烧录的方式向MCU的EEPROM中烧入12个字节的编码,其中4个字节的明文编码作为芯片的唯一编码,明文编码的每个字节有三个固定数字位,不同字节之间的固定数字位不同,固定数字位数字组合作为程序的版本号,版本号固定不变;另外4个字节为与明文编码对应的密文编码,最后4个字节为密码本固定数字。
本发明具有积极的效果:本发明的加密方法,首先是将EEPROM中的明文编码与密文编码进行逆加密运算,将运算结果与密码本数字进行比较,若不一致则清除EEPROM数据后锁死,其次是在运算结果与密码本数字一致时检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM数据,最后是在读保护寄存在标志位未改变时检测主程序中的壳体,只有在壳体未被破坏的情况下才继续执行主程序,而每一部分都具有反编译保护作用,并且三部分相互保护,相互协调使得加密算法破解成本大大增加,软件的安全性大大提高。
附图说明
图1为本发明中程序烧录顺序流程图;
图2为绑定MCU的唯一编码的算法流程图;
图3为加密方法流程图。
具体实施方式
下面结合说明书附图对本发明中的具体结构做以说明:
一种基于MCU的软件防反编译加密方法,参看图1至图3所示,包括以下步骤:绑定MCU的唯一编码:定义密码本数字,其字节数与确定的明文编码一致,按照固定数字位数字不变其它数字位随机的方式生成明文编码,并将明文编码写入设定的EEPROM中设定位置,然后将生成的明文编码与密码本固定密码进行与、或、非、加、减、乘、除的基本运算的组合运算生成密文编码,最后将生成的密文编码及密码本数字写入EEPROM中设定位置,完成MCU的唯一编码的绑定;设定读保护:在程序主循环中加入读保护寄存器标志位判断,实时监测程序寄存器标志位是否改变,一旦识别到程序寄存器标志位改变即读保护被解除,清除EEPROM中数据;在程序驱动层加壳;完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被破坏,继续执行主程序,循环检测读保护标志寄存器。本发明的加密方法,首先是将EEPROM中的明文编码与密文编码进行逆加密运算,将运算结果与密码本数字进行比较,若不一致则清除EEPROM数据后锁死,其次是在运算结果与密码本数字一致时检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM数据,最后是在读保护寄存在标志位未改变时检测主程序中的壳体,只有在壳体未被破坏的情况下才继续执行主程序,而每一部分都具有反编译保护作用,并且三部分相互保护,相互协调使得加密算法破解成本大大增加,软件的安全性大大提高。
进一步,本实施例中的所述壳体包含两种,一种是EEPROM中密文固定数字位判断,另一种是判断明文密文操作中地址变量的Checksum值是否发生改变,一旦有一个壳体出错,选择一个常见的程序出错判断变量给其赋错值,使程序进入常见出错状态。
再进一步,下载程序时通过分开烧录的方式向MCU的EEPROM中烧入12个字节的编码,其中4个字节的明文编码作为芯片的唯一编码,明文编码的每个字节有三个固定数字位,不同字节之间的固定数字位不同,固定数字位数字组合作为程序的版本号,版本号固定不变;另外4个字节为与明文编码对应的密文编码,最后4个字节为密码本固定数字。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而这些属于本发明的实质精神所引伸出的显而易见的变化或变动仍属于本发明的保护范围。
Claims (3)
1.一种基于MCU的软件防反编译加密方法,包括以下步骤:
绑定MCU的唯一编码:定义随机密码本数字,其字节数与确定的明文编码一致,按照固定数字位数字不变其它数字位随机的方式生成明文编码,并将明文编码写入设定的EEPROM中设定位置,然后将生成的明文编码与密码本固定密码进行与、或、非、加、减、乘、除的基本运算的组合运算生成密文编码,最后将生成的密文编码及密码本数字写入EEPROM中设定位置,完成MCU唯一编码的绑定;
设定读保护:在程序主循环中加入读保护寄存器标志位判断,实时监测程序寄存器标志位是否改变,一旦识别到程序寄存器标志位改变即读保护被解除,清除EEPROM中数据;
在程序驱动层加壳;
完成以上准备步骤后,程序在运行时,首先读取EEPROM中的明文编码与密文编码并将明文编码与密文编码进行逆加密运算,将运算结构与密码本数字进行比较,若不一致则清除EEPROM中的数据后锁定,若一致则检测读保护寄存器,若读保护寄存器标志位改变,则清除EEPROM中的数据,若读保护寄存器标志位未改变,则不清除EEPROM数据,然后程序向下执行,检测主程序中的壳体,若壳体被破坏,给程序常见出错变量赋值,程序出错,若壳体未被保护,继续执行主程序,循环检测读保护标志寄存器。
2.根据权利要求1所述的基于MCU的软件防反编译加密方法,其特征在于,所述壳体包含两种,一种是EEPROM中密文固定数字位判断,另一种是判断明文密文操作中地址变量的Checksum值是否发生改变,一旦有一个壳体出错,选择一个常见的程序出错判断变量给其赋错值,使程序进入常见出错状态。
3.根据权利要求1所述的基于MCU的软件防反编译加密方法,其特征在于,下载程序时通过分开烧录的方式向MCU的EEPROM中烧入12个字节的编码,其中4个字节的明文编码作为芯片的唯一编码,明文编码的每个字节有三个固定数字位,不同字节之间的固定数字位不同,固定数字位数字组合作为程序的版本号,版本号固定不变;另外4个字节为与明文编码对应的密文编码,最后4个字节为密码本固定数字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711376259.6A CN108304700A (zh) | 2017-12-19 | 2017-12-19 | 基于mcu的软件防反编译加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711376259.6A CN108304700A (zh) | 2017-12-19 | 2017-12-19 | 基于mcu的软件防反编译加密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108304700A true CN108304700A (zh) | 2018-07-20 |
Family
ID=62870273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711376259.6A Pending CN108304700A (zh) | 2017-12-19 | 2017-12-19 | 基于mcu的软件防反编译加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108304700A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109214217A (zh) * | 2018-09-07 | 2019-01-15 | 深圳市航顺芯片技术研发有限公司 | 一种微控制器芯片防破解的方法 |
CN110807177A (zh) * | 2019-11-06 | 2020-02-18 | 南京法艾博光电科技有限公司 | 逆向工程防御装置和方法 |
CN117390702A (zh) * | 2023-12-11 | 2024-01-12 | 厦门天锐科技股份有限公司 | 一种分体式驱动加壳方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968834A (zh) * | 2009-07-28 | 2011-02-09 | 上海移为通信技术有限公司 | 电子产品的防抄板加密方法和装置 |
CN102339369A (zh) * | 2011-08-18 | 2012-02-01 | 珠海天威技术开发有限公司 | Mcu信息保护方法 |
CN102495990A (zh) * | 2011-12-07 | 2012-06-13 | 惠州市德赛西威汽车电子有限公司 | 一种基于微型芯片的软件保护方法 |
CN105512574A (zh) * | 2015-12-08 | 2016-04-20 | 李灵超 | 电子产品的防抄板加密方法及装置 |
CN106055932A (zh) * | 2016-05-26 | 2016-10-26 | 东莞博力威电池有限公司 | 带Boot loader功能的MCU程序防抄袭方法和系统 |
CN106874775A (zh) * | 2016-12-26 | 2017-06-20 | 深圳市风云实业有限公司 | 一种防复制的嵌入式系统实现方法 |
-
2017
- 2017-12-19 CN CN201711376259.6A patent/CN108304700A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968834A (zh) * | 2009-07-28 | 2011-02-09 | 上海移为通信技术有限公司 | 电子产品的防抄板加密方法和装置 |
CN102339369A (zh) * | 2011-08-18 | 2012-02-01 | 珠海天威技术开发有限公司 | Mcu信息保护方法 |
CN102495990A (zh) * | 2011-12-07 | 2012-06-13 | 惠州市德赛西威汽车电子有限公司 | 一种基于微型芯片的软件保护方法 |
CN105512574A (zh) * | 2015-12-08 | 2016-04-20 | 李灵超 | 电子产品的防抄板加密方法及装置 |
CN106055932A (zh) * | 2016-05-26 | 2016-10-26 | 东莞博力威电池有限公司 | 带Boot loader功能的MCU程序防抄袭方法和系统 |
CN106874775A (zh) * | 2016-12-26 | 2017-06-20 | 深圳市风云实业有限公司 | 一种防复制的嵌入式系统实现方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109214217A (zh) * | 2018-09-07 | 2019-01-15 | 深圳市航顺芯片技术研发有限公司 | 一种微控制器芯片防破解的方法 |
CN110807177A (zh) * | 2019-11-06 | 2020-02-18 | 南京法艾博光电科技有限公司 | 逆向工程防御装置和方法 |
CN117390702A (zh) * | 2023-12-11 | 2024-01-12 | 厦门天锐科技股份有限公司 | 一种分体式驱动加壳方法、装置、电子设备及存储介质 |
CN117390702B (zh) * | 2023-12-11 | 2024-03-15 | 厦门天锐科技股份有限公司 | 一种分体式驱动加壳方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304700A (zh) | 基于mcu的软件防反编译加密方法 | |
JP6400640B2 (ja) | 確率的処理 | |
US10650151B2 (en) | Method of execution of a binary code of a secure function by a microprocessor | |
CN109993008A (zh) | 用于隐式完整性的方法和布置 | |
CN107220547B (zh) | 终端设备及其启动方法 | |
CN111709010B (zh) | 基于国密算法的终端认证信息提取和验证方法及系统 | |
CN104200153A (zh) | 一种启动验证方法和系统 | |
CN105706099A (zh) | 软件更新装置及软件更新程序 | |
CN105162578B (zh) | 应用于通用数字信号处理器的加密电路 | |
CN101222698A (zh) | 一种基于硬件序列号的imei码保护方法 | |
CN111709059B (zh) | 基于国密算法的终端认证信息生成方法及系统 | |
US8347111B2 (en) | Data processing apparatus | |
CN203773549U (zh) | 利用芯片标识符的软件安全应用装置 | |
CN111709044A (zh) | 基于国密算法的硬件指纹信息生成方法及系统 | |
US20100174920A1 (en) | Data processing apparatus | |
US20190095354A1 (en) | Execution process of binary code of function secured by microprocessor | |
CN107534550B (zh) | 密码设备、密码方法、计算设备和计算机可读存储介质 | |
CN101128802B (zh) | 数据保护用的方法和用于其实施的设备 | |
CN107292172B (zh) | 用于相对于参考计算机文件自动验证目标计算机文件的方法 | |
CN102426638B (zh) | 芯片读取方法及加密方法 | |
CN113553626A (zh) | 一种数据完整性检测方法、装置、设备及存储介质 | |
CN113557529A (zh) | 混合二维条码阅读器 | |
CN105469835B (zh) | 存储装置及其测试方法 | |
CN104598829B (zh) | 数据处理方法、装置及防攻击方法和装置以及存储装置 | |
TWI529736B (zh) | 記憶裝置的測試方法及系統 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180720 |