《[doc] 单片机应用程序的软件加密技术.doc》由会员分享,可在线阅读,更多相关《[doc] 单片机应用程序的软件加密技术.doc(10页珍藏版)》请在三一办公上搜索。
1、单片机应用程序的软件加密技术N2=RECC()F=II,20SAY.柯印时行距?”GETPRPICT99READPI=I320/PR一1o)/22,20SAY每页打印多少条记录?.GETPPPICT.99RANGI.PI3,20SAY从何条记录开始打印GETNtRANGl,N24,20SAY从何条记录开始打印GETN2RANGI.N25,20SAY打印多少份.GETFREADSETHLTTORECNO=NI.AND.RECN()<=N2GoB0TTCLEA4,2oY正在打印请等待.sETDEVITOP瑚EJECo,.0SAYcrm(96)+CHR38+STR(PR,2)+邮L(96)FF
2、lDOWPaLFF<-FDOTOPY一1GOWHIL.NOT.EOF()1,0SAYcm(27)+.IB+LBI2,.0SAYLB2+(2D+IA3.oSAYLAI4,0sAYLA2NN=IDOWHILNN<-pp.AND.NOT.EOF0PROW()+I,0SAYLA3PROWO+I,oSAY&PSKIP,NN=NN+IENDDPROW()+I,oSAYLA4PROW()+2,L/2一10SAY”?STR(Y,2+.Y=Y+ll32O/PR一1,oSAY一I32O/PR,0SAYEJECENDDFF=FF+IENDD.o,0SAYCHR(96)+(舶.R(38)+20+C
3、HR(96).SETDEVIToSCREUSERETU参考文献1谢鑫华,谭扬林,陈宏明等,rdaASEIPLUS原理与应用,水利电力出版社,1988,3一单片机应用程序的软件加密技术安徽机电学院电气系一周4争一.亨I富,近年来单片机以它较高的性价比,在工业生产的过程控制和智能化仪器仪表等领域,越来越得到广泛的应用,已有不少新型的智能化产品相继问世,.并取得专利权.用单片机组成一个控制系统或智能化产品对,最大的特点是硬件结构简单,容易被仿制因此,对单片机的应用程序进行加密,使用户很难分析出源程序结构,阻止用户对系统的复制,这对广大单片机应用系统的研制者来说具有十分重要的意义.=赣.加技术单片机应
4、用程序常以机器语言形式存放在系统的FPROM或ROM中.对应用程序的加密就是使用户无法得到其程序结构和清单.机器语言级的姗密过程有硬件稚软件丽种方法.硬件椰密一般是通过改变系统硬件的结构或连线米对系统程序加以保密,但这种保密方法一般都可用逻辑分析仪,通过分析各硬件引脚间的逻辑关系,加以解密.因此,软件加密技术是_种常用的加密手段,而软件加密的技术构思多种多样,本文仅就笔者的工作实践体会,针对反汇编程序介绍几种适甩子MCS-48和MCS-5N单片机应用系程序的软件加密授术,使用户无法通过反汇编程序来得到程序清单,以实现对系统程序的保护.,(一)改变程序模块间的连接方式,实现对程序加密.1在单片机
5、磁用系统的程序编制中,常采用结构程序设计和模块化设计方法,一个系程序常由一个主程序和多个子程序构成.因此,我们可改变各模块之间的存放方式,来实现对程序的加密.1?在程序模块间插入加密字节81龟这种方法就是通过在两模螃的连接处有意插八加密字节,使反汇编程序无法反汇编出系统实际运行的程序.如有8013单片机两个应用程序模块MK1和MK2为:;,MK1100022RETJ100175DB75H.1OO2EOMOVXA一DPT,R11003F574MOV74,A_MK2100522RET在这两个模块连接处插八一个加密字节75H后,反汇编得到:;,MK11o0o22PETl00175,Eo75MOVE0
6、H,#F5H110047422MOVA,#22H/MK2.;J可见模块MK2内容完全改变.在使用这种方法.时,关键是对加密字节的选择.选择时要考虑到可以造成下一模块的改变.通常选择二字节或三字一节指令的首字节作为加密字节,加到下一个程序模块前的一个或两字节中.一个程序I申各模块间选择多少加密字节,视具体情况而定.?2,使程序中的某些字节为两个程序模块共享若在两模块连接处,存在有重复数捂时,可使用共享技术来实现两模块之间的连接,造成反汇编程序输出错误程序清单如砉有8031单片机的两个程序模:i:MK3.MK4为:1-,?;MK310IFII”BoAJMP10E0H一1021E.o_lMovxA,
7、DPTR1+一1022F574.MOV74,.AMK41024.RET,.I这两个搓_块连接处102OH单元与l021H-元的内容相同,.这样我们可利角共享技术,使1020H单元内容E0H为K3,MK4个模块同使用,使源程序的连接变为:,.,一主1MK310rFi1E0AJMP10E0Hl1020E0?MOVXA,DPTR1.1021F574Mov7”4,AKM4ll02322.PETt,.J?8Z则反汇编后源程序变为:,;:i01F1iE0AJMP1oEQHMK31021F574MOV74,A11o2322.RET从而使源程序模:.JcMK4中的MOVXA,DPTR指令摹失.(二)用返回指令
8、取代无条件转移指令,破坏对PC值的跟踪.采用上述的方法,可破坏反汇编程序输出的源程序清单,防止用户得到完整的程序结构,以实现对系统保护.但目前有些用户通过可以跟踪PC值内容的反汇编程序来获得系统程序清单.对这种反汇编程序,上述的两个方法将无能为力.但我们可用返回指令取代无条件转移指令的方法,来破坏反汇编程序对Pc值的跟踪,实现源程序加密.如若85单片机某一程序申含有无条件转移指令为:,100:JMP2o4H;则可用如下的程序段来代替:1ooC7MOVA,PSW.10117INCA.102D7MOVPSW,A1035307ANLA,#07H,105ADMOVR0,A10660ADDA,Ro107A0.MOVR0,A108B004MOVRo,#O4H10A培INCRo10BB002MOVRo,#o2H.10D.22RETr使用这种方法就是利用RET对PL程序状态字,不产生影响,帝PSW又决定了堆栈指针的特性,首,先改变PSW的内容,再将转移地址O204H送入堆栈中,再用RET来实现程序的转移,从而使跟踪PC值的反汇编程序无能为力,迭到对源程序的保护.一一三,结束语-以上所述的各种方法,笔者在工作中通过使用证明是行之有效的.当然加密对于解密是相对而言的,它们之间只存在一个相对稳定的有限时期.,在.实际编程过程中若综合使用上建酌几种方法,将会取到更好的加密效果.,