新闻中心

EEPW首页>模拟技术>设计应用> 对单片机程序的动态加密措施

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

作者: 时间:2012-11-15 来源:网络 收藏
BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  ……

  该程序是将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

  ……



关键词:单片机动态加密

评论


相关推荐

技术专区

关闭