单片机程序运行加密_第1页
单片机程序运行加密_第2页
单片机程序运行加密_第3页
单片机程序运行加密_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、160;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

4、    MOVC A,A+DPTR    XRL A,R2 ;异或运算    MOV R0,A ;存入实际数据    POP A    INC A    INC R0    DJNZ R1,LOOP1        该程序是将RAM地址为2

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

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

7、60;       MOV DPTR,#SUB2    MOV R0,#30H    MOV A,#1    MOV R1,#3    MOV R0,#24H ;SUB2段第一个指令代码为24H    LOOP2: PUSH A    MOVC A,A+DPTR  &#

8、160; XRL 30H,A ;异或运算    POP A    INC A    DJNZ R1,LOOP2    MOV A,30H        CJNE A,#80H,ERR ;结果与80H比较        ERR: MOV A,#0 ;错误出口 &

9、#160;      在SUB2程序段, 是通过指令计算某些数据的,如收费的算法等。解密者总要修改部分指令, 达到某种目的。然而, 反解密的工作是在后面的LOOP2程序段中,是用到了SUB2程序段中的指令字节(这里是用了4个字节)进行运算(这里是用"异或"运算),它的结果将直接影响下面程序的正确执行(正确的运算结果为80H)。如果改变该SUB2程序段,则在LOOP2程序段中将程序引入歧途, 会不知不觉地走入迷途。如果在硬件设计上有电擦除EEPROM,可以进一步将程序中的数据修改(或删除),使跟踪者造成设备的"损坏",无法重新分析程序。    上面介绍的单片机加密方法,是阻止解密者非法获得ROM中的程序或者使ROM中的程序无法在复制的单片机系统中运行。在实际应用中,判断程序正常运行与被跟踪运行是有很多方法的。例如,可以根据时钟计时断定某个程序段运行的时间, 以便作出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论