《[doc] 單片機(jī)應(yīng)用程序的軟件加密技術(shù)》由會(huì)員分享,可在線閱讀,更多相關(guān)《[doc] 單片機(jī)應(yīng)用程序的軟件加密技術(shù)(10頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單片機(jī)應(yīng)用程序的軟件加密技術(shù)
N2=RECC()
F=I
@I,20SAY.柯印時(shí)行距?”GETPR
PICT99
READ
PI=I320/PR一1o)/2
@2,20SAY每頁打印多少條記錄?
.GETPPPICT.99RANGI.PI
@3,20SAY從何條記錄開始打印GET
NtRANGl,N2
@4,20SAY從何條記錄開始打印GET
N2RANGI.N2
@5,20SAY打印多少份.GETF
READ
SETHLTTORECNO~=NI.AND.
RECN()<=N2
GoB0TT
CLEA
@4,2oY’正在打印請(qǐng)等待…….
sE
2、TDEVITOP瑚’
EJEC’
@o,.0SAYcrm(96)+CHR’38+STR
(PR,2)+郵L(96)
FF—l
DOWPaLFF<----F
…DOTOP
Y一1
GOWHIL.NOT.EOF()
@1,0SAYc~m(27)+.IB+LBI
@2,.0SAYLB2+~(2D+IA
@3.oSAYLAI
@4,0sAYLA2
NN=I
DOWHILNN<----pp.AND.NOT.EOF0
@PROW()+I,0SAYLA3
@PROWO+I,oSAY&P
SKIP,
NN=NN+I
ENDD
@PROW()+I,oS
3、AYLA4
@PROW()+2,L/2一10SAY”??
STR(Y,2+.…’
‘Y=Y+l
@l32O/PR一1,oSAY一
@I32O/PR,0SAY~
EJEC
ENDD
FF=FF+I
ENDD.
@o,0SAYCHR(96)+(舶.R(38)+20+
CHR(96).
SETDEVIToSCRE
USE
RETU
參考文獻(xiàn)
[1]謝鑫華,譚揚(yáng)林,陳宏明等,~rdaASE
IPLUS原理與應(yīng)用,水利電力出版社,
1988,3一
單片機(jī)應(yīng)用程序的軟件加密技術(shù)
安徽機(jī)電學(xué)院電氣系一周Ⅱ4}爭(zhēng)
一
.亨I富,
近年來單片機(jī)以它較高的性價(jià)比,在工
4、業(yè)生產(chǎn)
的過程控制和智能化儀器儀表等領(lǐng)域,越來越得到
廣泛的應(yīng)用,已有不少新型的智能化產(chǎn)品相繼問
世,.并取得專利權(quán).用單片機(jī)組成一個(gè)控制系統(tǒng)或
智能化產(chǎn)品對(duì),最大的特點(diǎn)是硬件結(jié)構(gòu)簡(jiǎn)單,’容易
被仿制因此,對(duì)單片機(jī)的應(yīng)用程序進(jìn)行加密,使
用戶很難分析出源程序結(jié)構(gòu),阻止用戶對(duì)系統(tǒng)的復(fù)
制,這對(duì)廣大單片機(jī)應(yīng)用系統(tǒng)的研制者來說具有十
分重要的意義.
=贛.{}加技術(shù)
‘單片機(jī)應(yīng)用程序常以機(jī)器語言形式存放在系統(tǒng)
的F~PROM或ROM中.對(duì)應(yīng)用程序的加密就是使用
戶無法得到其程序結(jié)構(gòu)和清單.機(jī)器語言級(jí)的姍密
過程有硬件稚軟件麗種方法.硬件椰密一般是通
過改變系統(tǒng)硬件的結(jié)構(gòu)或
5、連線米對(duì)系統(tǒng)程序加以
保密,但這種保密方法一般都可用邏輯分析儀,通
過分析各硬件引腳間的邏輯關(guān)系,加以解密.因
此,軟件加密技術(shù)是_種常用的加密手段,而軟件
加密的技術(shù)構(gòu)思多種多樣,本文僅就筆者的工作實(shí)
踐體會(huì),針對(duì)反匯編程序介紹幾種適甩子MCS-48和
MCS-5~N單片機(jī)應(yīng)用系程序的軟件加密授
術(shù),使用戶無法通過反匯編程序來得到程序清
單,以實(shí)現(xiàn)對(duì)系統(tǒng)程序的保護(hù).,
(一)改變程序模塊間的連接方式,實(shí)現(xiàn)對(duì)程
序加密.’.1
在單片機(jī)磁用系統(tǒng)的程序編制中,常采用結(jié)
構(gòu)程序設(shè)計(jì)和模塊化設(shè)計(jì)方法,一個(gè)系程序常
由一個(gè)主程序和多個(gè)子程序構(gòu)成.因此,我們可
改變各模塊之間
6、的存放方式,來實(shí)現(xiàn)對(duì)程序的加
密.
1?在程序模塊間插入加密字節(jié)’
81龜
‘這種方法就是通過在兩模螃的連接處有意插八
加密字節(jié),使反匯編程序無法反匯編出系統(tǒng)實(shí)際
運(yùn)行的程序.如有8013單片機(jī)兩個(gè)應(yīng)用程序模塊
MK1和MK2為:
;,MK1
100022RETJ
100175DB75H.
1OO2EO’MOVXA一@DPT
,
R1
1003F574MOV74,A_MK2
100522RET
在這兩個(gè)模塊連接處插八一個(gè)加密字節(jié)75H后,反
匯編得到:
;
,MK1
1o0o22PET
l00175,Eo75MOVE0H,#F5H1
1004
7、742’2MOVA,#22H/MK2
.
‘
;J
可見模塊MK2內(nèi)容完全改變.在使用這種方法.
時(shí),關(guān)鍵是對(duì)加密字節(jié)的選擇.選擇時(shí)要考慮到
可以造成下一模塊的改變.通常選擇二字節(jié)或三字
一
節(jié)指令的首字節(jié)作為加密字節(jié),加到下一個(gè)程序模
塊前的一個(gè)或兩字節(jié)中.一個(gè)程序I申各模塊間選
擇多少加密字節(jié),視具體情況而定.?
2,使程序中的某些字節(jié)為兩個(gè)程序模塊共
享
若在兩模塊連接處,存在有重復(fù)數(shù)捂時(shí),可使
用共享技術(shù)來實(shí)現(xiàn)兩模塊之間的連接,造成反匯編
程序輸出錯(cuò)誤程序清單如砉有8031單片機(jī)的兩個(gè)
程序模:i:~MK3.MK4為:
‘1’
-,?
‘
;’}
8、MK3
10IFII”BoAJMP10E0H一
1021E.
o_lMovxA,@DPTR1+
一
1022F574.
MOV74,.A}MK4
1024.RET,.I
這兩個(gè)搓_塊連接處102OH單元與l021H-~元的內(nèi)容
相同,.這樣我們可利角共享技術(shù),使1020H單元內(nèi)
容E0H為K3,MK4]~個(gè)模塊同使用,’使源程序
的連接變?yōu)?,
.
,一
主1’
}MK3
10rFi1E0AJMP10E0Hl
1020E0?MOVXA,@,DPTR1
.
1021F574Mov7”4,A}KM4
l
l02322
.
PETt
,.J
?8Z●
9、
則反匯編后源程序變?yōu)?
,;
:
i01F1iE0AJMP1oEQHMK3
1021F574MOV74,A1
1o2322.RET’
從而使源程序模:~.JcMK4中的MOVXA,@DPTR
指令摹失.
(二)用返回指令取代無條件轉(zhuǎn)移指令,破壞
對(duì)PC值的跟蹤.
采用上述的方法,可破壞反匯編程序輸出的源
程序清單,防止用戶得到完整的程序結(jié)構(gòu),以實(shí)現(xiàn)
對(duì)系統(tǒng)保護(hù).但目前有些用戶通過可以跟蹤PC值內(nèi)
容的反匯編程序來獲得系統(tǒng)程序清單.對(duì)這種反匯
編程序,上述的兩個(gè)方法將無能為力.但我們可用
返回指令取代無條件轉(zhuǎn)移指令的方法,來破壞反匯
編程序?qū)c值的跟蹤,實(shí)現(xiàn)
10、源程序加密.如若
85單片機(jī)某一程序申含有無條件轉(zhuǎn)移指令為:
●
●,
100:JMP2o4H’
;’
則可用如下的程序段來代替:
●
1ooC7MOVA,PSW.
10117INCA.’
102D7MOVPSW,A
1035307ANLA,#07H,
105ADMOVR0,A
10660ADD—A,,Ro
107A0.MOVR0,A
108B004MOVRo,#O4H
10A培’INC’Ro\
10BB002MOV@Ro,#o2H.’
10D.22RETr
使用這種方法就是利用RET對(duì)PL程序’狀態(tài)字,
不產(chǎn)生影響,帝PSW又決定了堆棧指針的特性,首,’
先改變PSW的內(nèi)容,再將轉(zhuǎn)移地址O204H送入堆
棧中,再用RET來實(shí)現(xiàn)程序的轉(zhuǎn)移,從而使跟蹤
PC值的反匯編程序無能為力,迭到對(duì)源程序的保
‘
●
護(hù).一一
三,結(jié)束語’-
以上所述的各種方法,筆者在工作中通過使用
證明是行之有效的.當(dāng)然加密對(duì)于解密是相對(duì)而言
的,它們之間只存在一個(gè)相對(duì)穩(wěn)定的有限時(shí)期.,在.
實(shí)際編程過程中若綜合使用上建酌幾種方法,將會(huì)
取到更好的加密效果..,