


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文格式为Word版,下载可任意编辑51单片机程序进行软件加密和硬件解密的方法 由于固化在片外EPROM里的单片机程序简单复制,所以,如不在技术上实行爱护措施,则程序中所采纳的处理方法易被他人分析仿制。对单片机程序进行加密是一种有效的爱护措施,也是一项有用的技术。虽然本身带有EPROM的单片机可做到程序保密,但由于价格和存储容量方面的缘由,用户仍经常采纳外接EPROM的单片机来开发产品。 本文以MCS-51单片机为例介绍一种对片外E2PROM里的程序进行软件加密和硬件解密的方法。这种方法不增加用户应用程序开销。1基本原理我们知道,异或运算有这样的特点:ABB=A,亦即当用变量B对变量A作偶数次
2、异或运算后,其结果恢复为变量A。例如A=32H,B=5EH,则AB的结果为6CH,该结果再与变量B作异或运算,即6CH5EH就得到变量A的值32H。因此,我们可以利用这一特点给单片机程序加密和解密。51系列单片机在对外部程序存储器ROM和外部数据存储器RAM操作时采纳两套不同的指令,在对RAM操作时用MO指令,并产生相应的读(RD)和写(WR)信号,而当对外部ROM进行读操作时不用RD信号,而是有一条专给外部ROM使用的“读”数掌握信号(PSEN)线。亦即外部RAM和ROM的掌握信号是严格分开的。这就为利用异或运算给外部ROM里的程序进行加密后固化、解密后执行供应了条件。这种方法的思路是:首先
3、对欲固化到外部ROM里的目的代码(原代码)进行第一次异或运算(加密),再把加密后的代码固化到ROM里,程序运行时由硬件对从ROM读出的加密代码进行其次次异或运算(解密)变为原代码后送到数据总线。这样,外部ROM里固化的是加密代码,即便该代码被复制也反汇编不出原程序。另外该程序的执行还需相应的解密电路支持。图1是可以在实际中应用的单片机解密电路。当CPU对片外EPROM(U04)进行“读”操作时,掌握信号PSEN为低电平,这时U04送出八位加密代码(RD0RD7)并和“密钥”经由U05、U06组成的异或运算电路作其次次异或运算(解密)得到原代码,该代码经三态缓冲器(U07)由PSEN信号掌握送入
4、数据总线。由于电路中已将单片机的EA脚接地,故片外EPROM的最低地址为0。另外,与RD0RD7一起参加异或运算的另一个数据(“密钥”)取自当前待解密代码在外部EPROM所在存储单元的低八位地址,并从高位到低位按A0A2A4A6A1A3A5A7的挨次组合成新的数据。例如,原地址分别为35H和36H,组合后的地址则分别为E2H和6AH。采纳这样的方法确定“密钥”,一是可使一页中的代码中“密钥”不重复,二是由于同页中的代码字节的“密钥”都不同,故很难找到加密规律,可增加破译难度。2操作过程现以SICE通用单片机仿真器为例说明制作加密程序并固化到片外EPROM里的操作过程。设程序一是一个待固化到片外
5、EPROM里执行的用户应用程序。为简便起见,它对外部RAM的前256个单元赋于相应的低地址后转入死循环。由于仿真器的出借RAM为从8000H开头的24K空间,故应依据程序大小用伪指令把最低地址定位在8000HDFFFH的24K空间里(如程序一中的ORG8000H),否则,无法直接对该程序的目的码进行第一次异或运算。程序二是对程序一的目的代码(存放于仿真RAM的8000H804AH中共4BH个字节)进行第一次异或加密运算的。要加密的总代码字节数由程序一经汇编后得知。该程序中“密钥”的计算应与硬件电路中送到解密电路的低八位地址线的连接关系相全都。程序一:MAIN.ASMORG8000HSJMPMA
6、INORG8003HRETIORG800BHRETIORG8013HRETIORG801BHRETIORG8023HRETIORG8030HMAIN:CLREACLRRS0CLRRS1MOVA,#0MOVDPTR,#0MOVB,#0ACALLSUBRLOOP:NOPSJMPLOOPSUBR:MODPTR,AINCAINCDPTRDJNZB,SUBRNOPRETEND程序二:XORM.ASMXORM:MOVR0,#4BH;置欲加密代码字节数MOVDPTR,#8000H;置程序一首地址LOP1:MOA,DPTRPUSHACCMOVA,DPL;取代码单元的低地址MOVB,AMOVC,B.0;组合新数
7、据开头加密MOVACC.7,CMOVC,B.2MOVACC.6,CMOVC,B.4MOVACC.5,CMOVC,B.6MOVACC.4,CMOVC,B.1MOVACC.3,CMOVC,B.3MOVACC.2,CMOVC,B.5MOVACC.1,CMOVC,B.7MOVACC.0,CPOPBXRLA,B;“异或”产生加密代码MODPTR,A;加密代码存入原单元INCDPTRDJNZR0,LOP1NOPSTOP:NOP首先把程序一调入仿真器汇编,目的是得到总的代码字节数。即键入如下内容(带下划线的为键入内容,否则为显示内容)。ASM51|FDASM251V3.0Copyright1989Micro
8、computerLab.FudanUniversityNoERRORDisplayList?(Y/N)N|Nextadr:804B;登记程序一的末地址为804BH,由此可知总代码字节数为4BH。再把程序二添加到程序一的末尾(RET指令后,END伪指令前),调入仿真器后再汇编。即:ASM51|FDASM251V3.0Copyright1989MicrocomputerLab.FudanUniversityNoERRORDisplayList?(Y/N)N|Nextadr:8081EXIT|;退到监控状态3MAP3|;仿真RAM出借(8000HDFFFH)3DX8000|;显示未加密代码(原代码)
9、8000:802E5B32CD900798A4C05C32C994039C8010:80E47832EDB027B884E56F32E9B729B88020:40224F32724F188F52CF83C31292F4838030:C2AFC2D3C2D4740090000075F00011438040:0080FDF004A3D5F0FA0022784B9080008050:E0C0E0E582F5F0A2F092E7A2F292E6A28060:F492E5A2F692E4A2F192E3A2F392E2A28070:F592E1A2F792E0D0F065F0F0A3D8D1008080
10、:0000000000A041AC4450488D434A4E45这里应当留意的是假如在程序一中使用了长转移(LJMP)或长调用(LCALL)指令,就应列表显示或打印汇编结果,查找这些指令涉及的标号地址的高八位,并把高八位地址减去80H,使其与外部EPROM的地址相符。3GOXORM,STOP|;执行程序二,对程序一的目的码进行异或加密运算3DX8000|;显示加密的代码,804BH以后的代码不变8000:80AE53BA8D504F50A04450BE8D504F508010:A044509A8D504F50A041439E8D5345548020:42A045B830D8534554498
11、D4D5454BA4D8030:E00DE879A0361EEAB6A62EDB96E67FAD8040:1010E56854738D28EE943E784B9080008050:0EC0E0E582F5F0A2F092E7A2F292E6A28060:F492E5A2F692E4A2F192E3A2F392E2A28070:F592E1A2F792E0D0F065F0F0A3D8D1008080:0000000000A041AC4450488D434A4E453MECK0,3FFF|;检查待固化ROMOK3MEP8000,804B,0,5|;将仿真RAM中8000H804BH的加密代码OK固
12、化到外部ROM的0地址开头的单元里3MAP0|;使用片外ROM,取消仿真RAM出借3EX0|;执行片外ROM里的程序3DX0|;显示外部RAM从0地址开头的单元内容可见程序执行无误(显示略)对于大的用户应用程序,其操作过程仍如上述,但需转变程序二的加密字节数,并留意不要把程序二的代码固化到EPROM里,否则,加密方法会暴露。3争论由于单片机程序是固化在EPROM里的,所以不能象个人计算机那样利用类似磁盘防复制等这一类的方法对单片机程序防复制(带保密位的单片机除外),而只能在程序本身和相应的硬件上做文章。本文虽然以MCS-51单片机为例介绍了一种用异或运算对片外EPROM里的单片机程序进行软件加密和硬件解密的方法,但本方法也适用于其它外接E2PROM的单片机,此法始终应用在笔者于1993年研制胜利并生产了20余套的一种分布式数控测井系统中。使用上面介绍的方法,假如解密电路做得隐藏,使非设计者不知道加密
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年3月份跨境物流中高价值材料防篡改封装技术规范
- 护士简述鼻科手术后护理常规
- 医务人员岗位培训
- 浙江省医疗卫生事业单位招聘-中药类历年考试真题库(含答案)
- 山西省卫生类事业单位公开招聘(医学影像)历年考试真题库及答案
- 放射科操作规范
- 我爱刷牙绘画课件
- 2025届新余市重点中学高考化学全真模拟密押卷含解析
- 河南省环际大联考“逐梦计划”2024-2025学年高一下学期阶段性考试(一)数学试题(解析版)
- 四上数学2.4 三位数除以两位数的笔算(调商)
- 2024年医师定期考核临床类人文医学知识考试题库及答案(共280题)
- 2024年形势与政策 第二讲 中国经济高质量发展扎实推进(课件)
- 老年人安全移动照护(老年照护技术课件)
- DB11∕T 1703-2019 口腔综合治疗台水路消毒技术规范
- 风电场240小时试运行方案
- 国家职业技术技能标准 4-04-05-05 人工智能训练师 人社厅发202181号
- 大学生魅力讲话实操学习通超星期末考试答案章节答案2024年
- 公司组织架构图模板完整版可编辑3
- 《游园》课件统编版高中语文必修下册
- DB31T-氢基绿色燃料评价方法及要求
- 2024新能源光伏电站智慧型铜合金导体挤包绝缘电力电缆
评论
0/150
提交评论