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