工程師編寫單片機程序的時候一般是采用用匯編語言或高級語言(C或C++)編寫的,這些程序代碼叫原代碼,當程序編寫完成后,經過編譯軟件或編譯器 的編譯生成可以燒錄到單片機ROM存儲區(qū)里的文件,不同型號的單片機的編譯器生成的文件后綴是不同的,但是常用的BIN和HEX文件,這些生成的文件在解 密行業(yè)里叫機器代碼,及機器碼,這樣的機器碼是在單片機里運行的,也可以說是只有機器能夠讀懂的。而反匯編即是指將這些執(zhí)行文件,即機器碼反編譯還原成匯 編語言。但通常反編譯出來的程序與原程序會存在許多不同,雖然執(zhí)行效果相同,但程序代碼會發(fā)生很大的變化,如果是語句比較多的匯編,一般人很難讀懂,需要 自己加注釋,然后去一條一條的讀,是需要一定的毅力的,我曾經為了分析一個芯片的反匯編代碼,花費了一周的時間。所以說并不是反匯編后有了原程序,就一切 都明白了,更多的是需要工程師的技術分析。
反匯編的方法有手工反匯編和軟件反匯編,現(xiàn)在的單片機規(guī)模越來越大,嵌入的代碼也越來越多,那么就給手工反匯編帶來了很多麻煩,需要大量的時間,使用軟件反匯編是理想的方式,只要有了反匯編的軟件,在計算機里運行后很快就可以完成反匯編工作。