李會杰, 李俊廷*, 張 偉, 李嚴軍
(1.長春工業大學 機電工程學院, 吉林 長春 130012;2.長春工業大學 電氣與電子工程學院, 吉林 長春 130012)
一種51系列單片機的解密方法
李會杰1, 李俊廷1*, 張 偉2, 李嚴軍2
(1.長春工業大學 機電工程學院, 吉林 長春 130012;2.長春工業大學 電氣與電子工程學院, 吉林 長春 130012)
通過控制EA的電平,先使單片機執行外部存儲器中的程序,在片外存儲器中執行跳轉指令跳轉到超出片內程序存儲器地址的執行程序時,將EA改為低電平,用指令讀取片內地址范圍的目標碼。單片機通過串口將目標碼發送到上位機,從而實現解碼。本解密方法也適用于具有最小模式和微處理器模式的DSP及ARM的解密。
51系列單片機; 數據存儲器; 程序存儲器; 解密
51單片機在工業控制系統中廣泛流行,企業為了防止51單片機內部程序資料外泄,進行了加密。這種加密雖然防止了對51單片機內部程序資料的外泄,同時也存在缺點[1]。如果企業丟失原有51單片機的內部程序資料,則資料無法找回,從而給企業的生產造成了嚴重的損失。文中提出一種51單片機的解密方法,同時也適用于具有最小模式和微處理器模式的DSP和ARM的解密,為了方便企業找回丟失的單片機內部資料,減少企業因丟失內部資料而帶來的損失。
通過研究分析51單片機的程序存儲器和數據存儲器的結構與功能,提出了一種針對51單片機和具有最小模式以及微處理器模式的DSP和ARM的解密方式。
程序存儲器和數據存儲器分開設置,并且具有各自的尋址機構和尋址方式的這種結構特點是51系列單片機的特色[2]。標準的51單片機具有128 B的片內數據存儲器、4 KB(對于52是8 KB)的片內程序存儲器。51系列單片機的存儲器組織結構如圖1所示。

圖1 程序存儲器映射關系
片內程序存儲器和片外程序存儲器、片內數據存儲器和片外數據存儲器分別是51系列單片機的4個物理存儲空間;片內程序存儲器和片外程序存儲器是統一編制的,單片機的控制器通過一個控制引腳EA用來區分內部程序存儲器和外部程序存儲器[3]。當EA接高電平時,單片機從片內程序存儲器區取指令,內部程序地址容量小于指令地址時,自動地轉向片外程序存儲器取指令;當EA接低電平時,盡管內部存儲器內有程序單片機也不會執行,這時單片機只能從片外程序存儲器讀取指令[4]。這種接法只用于采用8031單片機的場合,由于8031內部不帶ROM,所以使用時必須EA=0,以便直接從外部ROM中取指令[5]。

51系列單片機需要擴展對外總線(局部系統總線),原因是51系列單片機無論在執行I/O接口時,還是執行對外存儲器時都要受到管腳的限制[7]。
51系列單片機的引腳ALE作為地址鎖存信號來使用時,ALE高電平有效,低電平無效,ALE為高電平時作為鎖存信號。ALE為高電平時51系列單片機片外擴展的地址鎖存器將PO口上的地址信息鎖存,地址信息鎖存完畢后ALE變成電平無效不會繼續地址信息鎖存,直到ALE再次變為高電平[8-9]。在ALE為低電平有效期間,P0口作為數據總線口用來傳送數據。這樣就把P0口擴展為地址/數據總線復用。地址高8位A15~A8的輸出口是P2,P2和P0口的鎖存器共同組成對外16位地址總線ABl5~ABO,P0口同時也作為DB7~DB0的8位數據總線。數據總線的主要作用是傳送指令和數據信息。
51系列單片機的外部控制總線(CONTROLBUS, CB)是由輸入控制信號線(如EA、INT0、INTl、RST、TO、T1)和輸出控制信號線(RD、WR、PSEN、ALE)等共同組成的,如圖2所示。

圖2 51單片機的總線結構
解密時的電路原理如圖3所示。

圖3 解密時使用的電路原理圖
圖中,上電前把S1接低電平,即EA接通低電平,此時單片機執行片外程序存儲器中的程序。片外程序存儲0000H地址單元的是LJMP 8000H指令。
開始進行解密時,先從片外程序存儲器開始運行程序,從0000H地址單元讀取指令LJMP 8000H指令并執行后,跳轉到8000H,此時已經超出片內程序存儲器的地址范圍,程序自動轉到片外程序存儲器,與EA電平無關。這時使S1轉變成高電平狀態,因程序地址超出了片內地址,雖然EA為高電平,但程序還是照常運行。
在片外程序存儲器中存有循環檢測S2狀態的程序,若S2的狀態為低電平,則不斷循環檢測S2的狀態。當S2變高時,跳出上述循環,置低P1.7口,使得發光二極管LED1點亮。因EA已經接高電平,此時在8000H以上(超出片內程序存儲器地址),執行MOVC A,@A+DPTR指令去讀取0~0FFFH地址范圍的程序存儲器中的代碼時,因EA是高電平讀到片內程序的代碼。將該代碼通過串口送到電腦,即獲得了所要程序的目標碼,也就是實現了解密。此過程如圖4所示。

圖4 片外存儲器與片內存儲器的尋址順序示意圖
解密過程序的流程如圖5所示。

圖5 解密過程序流程圖
根據上述解密過程編制的解密程序為:
ORG 0000H
LJMP 8000H
ORG 8000H
MOV DPTR,#0000H
MOV R7,#0FFH
MOV R6,#0FH
MOV TCON,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
MOV SCON,#50H
JNB P1,7$
LP:CLRA
MOVC A,@A+DPTR
MOV SBUF,A
JNB T1,$
CLR T1
INC DPTR
DJNZ R7,LP
MOV R7,#0FFH
DJNZ R6,LP
LCR P1.7
SJNP $
根據實驗,通過上述的理論分析和程序解密出51單片機的內部程序代碼的結果,如圖6所示。
由圖6可以看出,解密的代碼將解密出的代碼輸入51單片機重新執行,執行結果和原程序的執行結果一樣,說明解密的結果是成功的。文中的解密方法同樣也適用于ARM和DSP等單片機。
基于51單片機的內部結構提出一種有效的解密方法,其在實驗過程中運行良好,解密出的51內部資料沒有失真,為企業方便找回內部資料有著很大的意義,并能為公司減少由于管理疏忽帶來的損失。

圖6 解密試驗結果
[1] Ninsraku W, Biolek D, Jaikla W, et al. Electronically controlled high input and low output impedance voltage mode multifunction filter with grounded capacitors[J]. AEU-International Journal of Electronics and Communications,2014,68(12):1239-1246.
[2] Vellakudiyan J, Muthuchidambaranathan P, Bui F M, et al. Performance of a subcarrier intensity modulated differential phase-shift keying over generalized turbulence channel[J]. AEU-International Journal of Electronics and Communications,2015,69(11):1569-1573.
[3] 葛秀梅,仲偉波.基于DSP的混沌語音加密解密[J].系統實驗室研究與探索,2014,10(9):137-140.
[4] 劉伏文,王春華.MCS-51單片機存儲器結構詳解[J].電子制作,2007,32(10):54-57.
[5] Raj J J R, Rahman S M K, Anand S. 8051 microcontroller to FPGA and ADC interface design for high speed parallel processing systems-Application in ultrasound scanners[J]. Engineering Science and Technology an International Jouranl,2016:1416-1423.
[6] 汪凱.基于ARM9和FPGA遠程動態重構加解密研究[D].大連:大連理工大學,2014.
[7] 孫嬌.基于ARM的文件加密技術的研究與實現[D].西安:西安電子科技大學,2015.
[8] Asbullah, Muhammad Asyrat Ariffin, Muhammad Rezal Kamel. Fast decryption method for a rabin Primitive-Basedcry ptosystem[J]. Proquest,2014:56-67.
[9] 安志勇,楊帆,曹秒,等.一種基于STC單片機和絕對式編碼器的步進電機控制方法[J].長春工業大學學報:自然科學版,2013,34(1):67-69.
Amethodfordecrypting51seriesmicrocontroller
LI Huijie1, LI Junting1*, ZHANG Wei2, LI Yanjun2
(1.School of Mechatronic Engineering, Changchun University of Technology, Changchun 130012, China;2.School of Electrical & Electronic Engineering, Changchun University of Technology, Changchun 130012, China)
By controlling EA level in the 51 series microcontroller, external program is run first. When external ROM jumps to the program as internal ROM address rangeis exceeded, with a jump command, EA level is changed to low. Then the code in internal ROM is read and sent to the host computer through serial port, and the decryption is realized. The method is also applicable to DSP or ARM microprocessor with minimum mode and microprocessor mode.
51 series microcontroller; data memory; program memory; decryption.
TP 309.7
A
1674-1374(2017)04-0335-05
2017-03-21
長春市科技計劃基金資助項目(13KG09)
李會杰(1965-),女,漢族,吉林九臺人,長春工業大學副教授,碩士,主要從事機電一體化方向研究,E-mail:710383958@qq.com. *通訊作者:李俊廷(1990-),男,漢族,吉林磐石人,長春工業大學碩士研究生,主要從事機電一體化方向研究,E-mail:1758904374@qq.com.
10.15923/j.cnki.cn22-1382/t.2017.4.04