關(guān)于芯片程序的機(jī)器碼、匯編代碼、源代碼常常是令人混淆的幾個概念,今天我們主要給大家介紹一下這幾種代碼的特點和一般功能。
機(jī)器碼顧名思義是單片工作且能識別和運(yùn)行的一類代碼,常見的格式有二進(jìn)制BIN格式、十進(jìn)制HEX格式等。簡單來說就是便于機(jī)器識別的高低電平組合,每個單片機(jī)里都有狀態(tài)分析電路能分析每個機(jī)器碼的含義從而驅(qū)動單片機(jī)運(yùn)行。機(jī)器碼的優(yōu)點是一般存儲較小,便于單片機(jī)識別,缺點也很明顯就是人無法讀懂和直接進(jìn)行功能修改。
匯編代碼的概念就是面向機(jī)器的程序設(shè)計語言,在匯編語言中用助記符號代替操作碼,用標(biāo)號或者地址符代替地址碼,用符號代替機(jī)器碼,把機(jī)器語言轉(zhuǎn)換成可簡單讀懂的匯編語言,也稱做符號語言。這里所說的可讀懂只是對于熟悉編程的專業(yè)人員可以部分,如果需要進(jìn)行比較復(fù)雜的逆向工程功能分析修改、注冊碼尋找、漏洞分析等,通常難以完成的,所以在逆向工程領(lǐng)域又要引出另外一種代碼-源代碼的概念。
源代碼也稱源程序,這是一種人類可讀可修改的計算機(jī)語言,源代碼即我們技術(shù)人員平時的開發(fā)代碼,通常以C語言、JAVA語言、PYTHON語言等工具實現(xiàn),其中C語言是大家使用最廣泛也是最為熟悉的工具。擁有源代碼的好處不言而喻,既可以立即讀懂(專業(yè)人員)也可以實現(xiàn)任意功能修改,在逆向工程領(lǐng)域,掌握源代碼即掌握程序的所有權(quán)。
近年來,由于客戶對于產(chǎn)品性能的不斷優(yōu)化,越來越多的客戶需要將機(jī)器碼反匯編甚至反C源代碼來修改和升級產(chǎn)品的功能,實質(zhì)上完整的反C代碼是基本不可能實現(xiàn)的,但我們可以利用機(jī)器碼進(jìn)行反匯編操作,再通過匯編代碼進(jìn)行反C操作得到一個偽C代碼,只是工作量巨大所以一般成本較高。這樣得到的源代碼也是技術(shù)工程人員可以讀懂的,如果需要進(jìn)行程序修改升級就簡單的多了。目前我們已經(jīng)為客戶做過很多相關(guān)案例,擁有豐富的經(jīng)驗和實力。