新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)逆向分析淺談

單片機(jī)逆向分析淺談

作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
山外有山,天外有天,學(xué)無止境,做產(chǎn)品,搞技術(shù)更是如此。沒有任何個(gè)人及公司能夠閉門造車研發(fā)出好產(chǎn)品來,需要不斷的學(xué)習(xí)別人先進(jìn)的東西,取長補(bǔ)短,這樣人類才能不斷的進(jìn)步,社會(huì)才能不斷的發(fā)展。當(dāng)今社會(huì),商品經(jīng)濟(jì)環(huán)境早已成為主流,學(xué)習(xí)、創(chuàng)新能力變得越來越重要,沒有學(xué)習(xí),就不可能有創(chuàng)新。
要學(xué)習(xí)、學(xué)會(huì)先進(jìn)技術(shù),對于嵌入式產(chǎn)品而言,要了解硬件原理,有電路板就可以,這也容易獲得,買個(gè)設(shè)備就可以了。而對于嵌入式軟件,最好莫過于得到源代碼。而源代碼是公司的命脈,外界的人不可能獲得。除非去偷,這是犯法傷德的事,可不能干。就沒有其它方法了?非也,那就是以技攻技,即以更前沿、更具技術(shù)含量的方案去解決,我這里稱這方法為逆向分析
第一步,得有被學(xué)習(xí)、研究的對象,花錢買要學(xué)習(xí)的產(chǎn)品。這步?jīng)]有技術(shù)含量,只是商務(wù)運(yùn)作。商品經(jīng)濟(jì)下,只要有錢,應(yīng)該就可以解決。
第二步,將設(shè)備的核心,即CPU的程序讀出來,得到二進(jìn)制即BIN程序文件。這個(gè)步驟,需要專業(yè)人士操作,非專業(yè)人士勿試。
第三步,將第二步得到的BIN程序文件進(jìn)行反匯編,得到可閱讀性強(qiáng)的匯編源代碼,這樣,就可以完全學(xué)習(xí)了。只有讀懂了,才能夠修正、創(chuàng)新。這個(gè)步驟,涉及的面比較廣,首先是需要解決反匯編工具的問題,必須要有支持本CPU的反匯編工具。其次是要有看得懂本CPU匯編程序的工程師 。
第四步,也是最高境界了,就是將第三步獲得的已看懂的匯編程序,精準(zhǔn)的翻譯成更為直觀的C語言程序。有此C源代碼為基礎(chǔ),就可以任意發(fā)揮創(chuàng)新了。這一步要求工程師不僅兼?zhèn)鋮R編語言及C語言,對耐心、細(xì)心要求也高,工程師對這項(xiàng)枯燥的工作,一定要感興趣,否則再牛的工程師,也往往讓項(xiàng)目做失敗。
也只有那些有超強(qiáng)研發(fā)實(shí)力的公司才能完全擁有上面各步驟中所需技能的工程師,而對于中小型公司,很難湊齊這些專業(yè)工程師。不過對于中國來說,由于咱們對計(jì)算機(jī)方面,特別是單片機(jī)方面的研究、應(yīng)用,起步相對國外發(fā)達(dá)國家,要晚很多,往往是國外推出了新單片機(jī),國人勤奮學(xué)會(huì)應(yīng)用,所以從應(yīng)用的層面講,國人研究得還是比較透的,咱們好多單片機(jī)都做不出來,但應(yīng)用的熟練程度,絕不遜于國外發(fā)達(dá)國家,這樣就自然而然的產(chǎn)生了不少對相應(yīng)單片機(jī)有深入了解的高手,這些高手,能很輕易的讀取已經(jīng)硬件加密過的CPU里的程序,再者,國內(nèi)有這方面的市場需求,所以,中國在硬件解密方面的實(shí)力是相當(dāng)強(qiáng)的。這就為逆向工程提供了堅(jiān)實(shí)的基礎(chǔ),在中國,可以很輕易找到單片機(jī)硬件破解、讀取CPU里程序的工程師。
但對于好多有技術(shù)含量的項(xiàng)目,就算硬件破解出來了,得到了BIN程序文件,要反匯編分析也非易事,有的甚至還進(jìn)行了軟加密,要順利逆向分析,必須要有好的反匯編工具,這點(diǎn)至關(guān)重要。另外就是要有資深的既懂匯編又懂C的工程師,這類的工程師,相對硬件破解工程師來說,要稍難找些。對于有逆向分析需求的中小公司,不一定要本公司具備相應(yīng)的工程師,完全可以找專業(yè)、專職的逆向公司或個(gè)人,這樣應(yīng)該會(huì)更能有效解決問題。
上面談的全是逆向分析的內(nèi)容,但如何防逆向分析呢?公司上下齊心,辛辛苦苦做出一個(gè)產(chǎn)品出來,如果一下子就被別人給逆向分析出來,這個(gè)損失是巨大的。任何產(chǎn)品,理論上都可以成功被逆向分析出來,只是逆向分析的難度問題。如果單片機(jī)的硬件加密及軟件加密做得足夠強(qiáng)大,大大增加逆向分析的難度,這樣逆向時(shí)間勢必要成倍增加,這樣從逆向時(shí)間及成本上,讓逆向者自我放棄。具體有下面幾種方法加強(qiáng)防逆向分析:
1.盡量選擇新推出的穩(wěn)定的單片機(jī),這個(gè)尺度有點(diǎn)難把握,但可以選擇大公司新推出的芯片,這類公司新推的芯片,穩(wěn)定性方面應(yīng)該會(huì)有所保障的,如TI、NXP、Atmel、ST意法等。
2.盡量選擇性價(jià)比高的16位或32位單片機(jī)代替8位單片機(jī),如STM32F10X系列,這類系列的單片機(jī)逆向是相當(dāng)有難度的,且價(jià)格跟一些8位機(jī)差不多。16位的如MSP430系列。
3.盡量在程序中增加軟加密代碼,這樣就算成功硬破解,得到了程序,燒錄到芯片中,也無法正常運(yùn)行,還必須要進(jìn)行軟解密。有些單片機(jī)自帶有軟加密特性可用于軟加密,如果艾特梅爾的Atmega系列及ST的STM32F10X系列,但有些就沒有,像51及MSP430,很少有此特性,這樣要實(shí)現(xiàn)軟加密,就必須另外帶一個(gè)芯片,結(jié)合程序?qū)崿F(xiàn)軟加密。
4.燒錄程序時(shí),將單片機(jī)硬件提供的加密位,全部置為加密狀態(tài)。


關(guān)鍵詞: 單片機(jī)逆向分

評論


技術(shù)專區(qū)

關(guān)閉