反匯編 ,一般情況大家用的不多。但在一些行業(yè)確實比較常見。比如 破解加密算法,獲得加密密鑰,或者自己無法寫出完全一致的程序又要修改一些地方的時候反匯編就是必不可少的。反匯編是比較枯燥,又有一定挑戰(zhàn)性的東西下面我給大家講解如何 從BIN文件->HEX文件->匯編->C語言的全部過程。
一.破解芯片
這個作為一般是要找專業(yè)破解芯片的公司,幫我們把芯片內(nèi)的 flash 和EEPROM 中的數(shù)據(jù)讀出來,從而得到BIN文件或者HEX。
二.BIN轉HEX
因為PIC的老的MPLAB 或者MPLAB X IDE。都不支持讀取BIN文件。所以你需要事先將BIN文件轉為HEX文件。當然你如果已經(jīng)有了HEX文件這一步可以忽略。 我個人是比較喜歡用QL-2006這款單片機燒器的燒寫軟件將BIN轉成HEX。
三.將HEX轉成匯編
1,打開 MPLAB IDE Configure->Select Chip 選擇芯片型號。
2,點擊菜單欄File->Import 導入HEX文件。
3,查看程序存儲空間點擊菜單欄 View ->Progarm Memory 跳出Progarm Memory 窗口選擇點擊選擇Machine,Machine顯示的 就是每個機器碼對應的匯編語言。
4,去掉LINE(行號) 去掉OpCode(機器碼) 只留下Address(地址)和Disassemly(匯編)這兩列。右擊上邊的一欄就可以去掉 相應列的勾選。
5,右擊文本框 點擊Output To File (輸出文件)。這樣我們就得到了。反匯編之后的文本文件了。
6,然后用以上類似的方法輸出 EEPROM中的數(shù)據(jù)
四.建立工程
1,將上一步得到的文件,將擴展名由 .TEXT 改為 .asm.我們就建立新的工程將改匯編文件添加進去。
五.看懂匯編加注釋。
1,這個階段的你本身需要懂匯編。
2,區(qū)分那些數(shù)代表 數(shù)值 那些數(shù) 代表 寄存器 那些數(shù) 代表 程序地址。這個一定要注意。
3,反匯編的難點就是看懂原作者 寫的程序是什么意思。
六.匯編轉