新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 對單片機(jī)程序的動態(tài)加密措施

對單片機(jī)程序的動態(tài)加密措施

作者: 時間:2012-11-15 來源:網(wǎng)絡(luò) 收藏
BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  ……

  該程序是將RAM地址為20H開始的數(shù)據(jù)組(設(shè)有5個)進(jìn)行動態(tài)變換, 因為初始的數(shù)據(jù)組是密碼形式的, 它需要在程序運(yùn)行中改變,在程序的其他段中要使用改變后的數(shù)據(jù)。這里是用SUB1程序段中的指令代碼(代碼為:24H,94H,63H,54H,13H)與55H進(jìn)行動態(tài)解碼,數(shù)據(jù)55H是加密數(shù)據(jù),它"異或"指令代碼后得到正確的數(shù)據(jù)存入20H開始的單元中(結(jié)果為:71H,C1H,36H,01H,46H)。為了說明動態(tài)數(shù)據(jù)解碼過程, 這個例子比較簡單, 實際在轉(zhuǎn)入該程序段時, 可以由某些運(yùn)算生成數(shù)據(jù)單元地址, 以增強(qiáng)程序的抗分析能力。

2 程序段防修改

  在加密程序中, 所設(shè)置的障礙不會只有一處。為了使加密措施完善, 在一些關(guān)鍵地方程序的前后呼應(yīng)是反破譯的有效方法。解密者為了一些目的, 必然要修改某段程序指令;而程序段防修改就是針對這種解密方法所采用的技術(shù)手段。為了達(dá)到加密程序的完整性, 可以在程序的關(guān)鍵處取指令或數(shù)據(jù)代碼參加某種運(yùn)算, 其結(jié)果作為判斷程序是否被變動的依據(jù)。下面是程序防修改的程序段:

  ……

  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 ;異或運(yùn)算

  POP A

  INC A

  DJNZ R1,LOOP2

  MOV A,30H

  ……



關(guān)鍵詞: 單片機(jī) 動態(tài)加密

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉