對單片機及其程序的運行上加密解析方案
……
SUB2: ADD A,#35H
SUBB A,#05H
……
MOV DPTR,#SUB2
MOV R0,#30H
MOV A,#1
MOV R1,#3
MOV @R0,#24H ;SUB2段第一個(gè)指令代碼為24H
LOOP2: PUSH A
MOVC A,@A+DPTR
XRL 30H,A ;異或運算
POP A
INC A
DJNZ R1,LOOP2
MOV A,30H
……
CJNE A,#80H,ERR ;結果與80H比較
……
ERR: MOV A,#0 ;錯誤出口
……
在SUB2程序段, 是通過(guò)指令計算某些數據的,如收費的算法等。解密者總要修改部分指令, 達到某種目的。然而, 反解密的工作是在后面的LOOP2程序段中,是用到了SUB2程序段中的指令字節(這里是用了4個(gè)字節)進(jìn)行運算(這里是用異或運算),它的結果將直接影響下面程序的正確執行(正確的運算結果為80H)。如果改變該SUB2程序段,則在LOOP2程序段中將程序引入歧途, 會(huì )不知不覺(jué)地走入迷途。如果在硬件設計上有電擦除EEPROM,可以進(jìn)一步將程序中的數據修改(或刪除),使跟蹤者造成設備的損壞,無(wú)法重新分析程序。
上面介紹的單片機加密方法,是阻止解密者非法獲得ROM中的程序或者使ROM中的程序無(wú)法在復制的單片機系統中運行。在實(shí)際應用中,判斷程序正常運行與被跟蹤運行是有很多方法的。例如,可以根據時(shí)鐘計時(shí)斷定某個(gè)程序段運行的時(shí)間, 以便作出不同的反應, 因為單步與連續運行在時(shí)間上是有很大差別的。另外, 對單片機的加密不能僅限于上述的一種方法,而且反跟蹤的方法也不能單一, 要幾種方法配合使用才能達到好的效果。如軟件加密與硬件加密相結合,動(dòng)態(tài)解碼可與程序防修改相結合等,充分利用新技術(shù)、新方法(如可編程邏輯器件等)使單片機的加密保護更有效。
評論