对单片机程序的动态加密措施

最新更新时间:2012-11-15来源: 互联网关键字:单片机  动态加密 手机看文章 扫描二维码
随时随地手机看文章

众所周知, 有一些公司或个人专门做单片机的解密服务,另外,单片机的指令不论怎样加密最终它还要在明文的方式下才能运行, 而且解密者可以使用单片机开发系统单步调试ROM中的程序。当解密者了解了指令的运行过程之后, 也就获得了加密的程序, 如某些智能计价器的运算方法等,通过修改程序并仿制新的ROM芯片, 就可以达到解密的目的。因此,对单片机的加密还要在程序的运行上进行加密处理, 也就是程序的动态加密措施。

  1 程序的动态解码

  动态解码是对加密程序的指令或数据代码进行动态恢复。在程序运行时, 有一段指令是专门对某一区域的指令或数据代码解密, 而且当解密后的代码使用完毕, 还要将其重新加密, 使存储器中不存在完整的程序代码。这种方法对防程序的静态分析很有效, 因为从加密程序的清单上很难看出程序的真实面目。然而,在程序的反跟踪方面, 动态解码又有其独到之处, 在阻止带断点调试跟踪方面, 由于程序在执行之前是以密文方式出现的, 解密者很难确定断点设置的位置, 稍有不慎就会因解密失败造成系统的破坏(电擦除EPROM中的数据)。下面是程序动态解码的具体例子:

  ……

  SUB1: ADD A,#94H ;虚设的程序段

  XRL 54H,#13H

  ……

  MOV R0,#20H

  MOV R1,#5

  MOV R2,#55H

  MOV DPTR,#SUB1

  MOV A,#00H

  LOOP1: PUSH A

  MOVC A,@A+DPTR

  XRL A,R2 ;异或运算

  MOV @R0,A ;存入实际数据

  POP A

  INC A

  INC R0

  DJNZ R1,LOOP1

  ……

  该程序是将RAM地址为20H开始的数据组(设有5个)进行动态变换, 因为初始的数据组是密码形式的, 它需要在程序运行中改变,在程序的其他段中要使用改变后的数据。这里是用SUB1程序段中的指令代码(代码为:24H,94H,63H,54H,13H)与55H进行动态解码,数据55H是加密数据,它"异或"指令代码后得到正确的数据存入20H开始的单元中(结果为:71H,C1H,36H,01H,46H)。为了说明动态数据解码过程, 这个例子比较简单, 实际在转入该程序段时, 可以由某些运算生成数据单元地址, 以增强程序的抗分析能力。

2 程序段防修改

  在加密程序中, 所设置的障碍不会只有一处。为了使加密措施完善, 在一些关键地方程序的前后呼应是反破译的有效方法。解密者为了一些目的, 必然要修改某段程序指令;而程序段防修改就是针对这种解密方法所采用的技术手段。为了达到加密程序的完整性, 可以在程序的关键处取指令或数据代码参加某种运算, 其结果作为判断程序是否被变动的依据。下面是程序防修改的程序段:

  ……

  SUB2: ADD A,#35H

  SUBB A,#05H

  ……

  MOV DPTR,#SUB2

  MOV R0,#30H

  MOV A,#1

  MOV R1,#3

  MOV @R0,#24H ;SUB2段第一个指令代码为24H

  LOOP2: PUSH A

  MOVC A,@A+DPTR

  XRL 30H,A ;异或运算

  POP A

  INC A

  DJNZ R1,LOOP2

  MOV A,30H

  ……

  CJNE A,#80H,ERR ;结果与80H比较

  ……

  ERR: MOV A,#0 ;错误出口

  ……

  在SUB2程序段, 是通过指令计算某些数据的,如收费的算法等。解密者总要修改部分指令, 达到某种目的。然而, 反解密的工作是在后面的LOOP2程序段中,是用到了SUB2程序段中的指令字节(这里是用了4个字节)进行运算(这里是用"异或"运算),它的结果将直接影响下面程序的正确执行(正确的运算结果为80H)。如果改变该SUB2程序段,则在LOOP2程序段中将程序引入歧途, 会不知不觉地走入迷途。如果在硬件设计上有电擦除EEPROM,可以进一步将程序中的数据修改(或删除),使跟踪者造成设备的"损坏",无法重新分析程序。

  上面介绍的单片机加密方法,是阻止解密者非法获得ROM中的程序或者使ROM中的程序无法在复制的单片机系统中运行。在实际应用中,判断程序正常运行与被跟踪运行是有很多方法的。例如,可以根据时钟计时断定某个程序段运行的时间, 以便作出不同的反应, 因为单步与连续运行在时间上是有很大差别的。另外, 对单片机的加密不能仅限于上述的一种方法,而且反跟踪的方法也不能单一, 要几种方法配合使用才能达到好的效果。如软件加密与硬件加密相结合,动态解码可与程序防修改相结合等,充分利用新技术、新方法(如可编程逻辑器件等)使单片机的加密保护更有效。

关键字:单片机  动态加密 编辑:神话 引用地址:对单片机程序的动态加密措施

上一篇:基于单片机一氧化碳监测报警仪设计
下一篇:单片机控制LED智能路灯系统设计

推荐阅读最新更新时间:2023-10-12 20:44

深层次分析8051单片机存储空间结构
  引言   单片机以它的廉价、体积小、可塑性强、稳定性高的特性,有着广阔的市场前景。 在用开关电源模块单片机开发产品时,虽然许多厂家设计了可编程ISP单片机,但是从安全与便捷方面考虑,单片机仿真器仍然是开发人员不可或缺的工具。单片机仿真器在产品开发阶段可用来替代MTD2002单片机进行软硬件调试,从而迅速发现、纠正程序中的错误,大大缩短开关电源模块单片机开发的周期。但实际中仿真器过于昂贵,因此,设计制作出一款廉价且实用的MTD2002仿真器有着广泛的市场。   传统的开关电源模块单片机仿真器硬件系统一般有三种实现方法。一、采用专用仿真的单片机。二、采用两套单片机,一个单片机用于仿真,并完成诸如通讯,中断等功能;另一个
[单片机]
深层次分析8051<font color='red'>单片机</font>存储空间结构
值得注意的单片机控制板的设计原则
需要遵循的原则如下:    (1) 在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生噪声,在放置的时候应把它们靠近些。对于那些易产生噪声的器件、小电流电路、大电流电路开关电路等,应尽量使其远离单片机的逻辑控制电路和存储电路(ROM、RAM),如果可能的话,可以将这些电路另外制成电路板,这样有利于抗干扰,提高电路工作的可靠性。 (2) 尽量在关键元件,如ROM、RAM等芯片旁边安装去耦电容。实际上,印制电路板走线、引脚连线和接线等都可能含有较大的电感效应。大的电感可能会在Vcc走线上引起严重的开关噪声尖峰。防止Vcc走线上开关噪声尖峰的唯一方法,是在VC
[单片机]
意法半导体推出新图形用户界面配置器,让STM8微控制器设计变得更快捷
意法半导体最新发布的STM8CubeMX g图形界面配置器让基于深受市场欢迎的8位STM8微控制器的产品设计变得更快捷。下面就随单片机小编一起来了解一下相关内容吧。 意法半导体推出新图形用户界面配置器,让STM8微控制器设计变得更快捷 STM8CubeMX支持 意法半导体 的全部主流低功耗汽车8位微控制器,新版免费开发工具帮助设计人员从 STM8 产品家族中选择一款最适合其应用需求的产品。设计人员也可直接在 意法半导体 的 STM8 开发板上开发应用。首先,按照所选电路板上的微控制器的配置方式配置这款工具,然后STM8CubeMX提供多个图形界面工具,帮助完成所选微控制器的基本配置。这些配置工具包括冲突自动解决引脚配置器、
[单片机]
意法半导体推出新图形用户界面配置器,让STM8<font color='red'>微控制器</font>设计变得更快捷
基于单片机控制的新型智能电梯语音系统设计
引言 原文位置 语音系统对电梯来说是不可缺少的部分,比如进行楼层报数、方向提示、报警告示、消防对讲甚至广告宣传等。目前绝大多数电梯使用语音芯片来进行语音存储和播放,而语音芯片系统存在一些缺陷,比如外围电路复杂、音质不佳、成本偏高、容量有限以及语音更改不便等。有鉴于此,本文设计了一款基于 单片机 控制的智能电梯语音系统。 原文位置 系统概述 原文位置 电梯控制系统的基本功能,是根据用户的楼层按键信息,显示到往楼层数字,语音播报到达楼层。系统框图如图1所示。 原文位置    原文位置 原文位置   图1 电梯语音系统结构框图 原文位置 硬件设计 原文位置 根据FLASH的读
[应用]
ARM微控制器LPC210X的LCD接口技术
引言 Philips最近推出了其第一款基于ARM内核的控制器LPC210X,但由于LPC210X外部总线不开放,无法扩展内存、驱动液晶显示器等,给它的推广带来了一定的影响。笔者最近在一工控板项目中采用了该系列芯片,项目后斯应客户要求需对几个参量进行显示并扩展键盘,不得已之下,采用了CPLD,并利用了GPIO口模拟总线和液晶时序与点阵图形液日模块HS12864-16建立了连接。下面详细探讨包括该种连接的三种接口方式。 1 LPC210X的GPI0口和HS12864-16A介绍 LPC210X控制器包含LPC2104、LPC2105、LPC2106,除了片内静态RAM不同外,其他完全相同。该系列器件具有32个GPIO
[单片机]
51单片机计时器和中断
计时器,中断 ############################ EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允许(总允许)位。 初始化对定时计数器操作: 第一步: 对TMOD赋值,以确定T0,T1的工作方式 第二部: 计算初值,写入TH0,TL0或者TH1,TL1 第三步: 中断方式,对IE赋值开放中断 第四步: 使TR0或者TR1置位,启动定时计数器工作
[单片机]
基于亏单片机的水塔水位检测控制系统仿真设计
l 引言 水塔供水的主要问题是塔内水位应始终保持在一定范围,避免“空塔”、“溢塔”现象发生。目前,控制水塔水位方法较多,其中较为常用的是由单片机控制实现自动运行,使水塔内水位保持恒定,以保证连续正常地供水。实际供水过程中要确保水位在允许的范围内浮动,应采用电压控制水位。首先通过实时检测电压,测量水位变化,从而控制电动机,保证水位正常。因此,这里给出以Atmel公司的AT89C5l单片机为核心器件的水塔水位检测控制系统仿真设计,实现水位的检测控制、电机故障检测、处理和报警等功能,并在Pmteus软件环境下实际仿真。实验结果表明,该系统具有良好的检测控制功能,可移植性和扩展性强。 2 水塔水位控制原理 单片机水塔水位控制原
[测试测量]
基于亏<font color='red'>单片机</font>的水塔水位检测控制系统仿真设计
51单片机模拟串口的三种方法解析
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采**需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,或者做点阵驱动时,又需上机位串口。但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。 本文所说的模拟串口, 就是利用51的两个输入输出引脚如P1.0和P1.1,置1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置1,各种数据位和校验位则根据情况置1或置0。至于串口通信的波特率,说到底只是每位电平持续的时间,波特率越高,持续的
[单片机]
51<font color='red'>单片机</font>模拟串口的三种方法解析
小广播
最新模拟电子文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved