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