欧美在线专区-欧美在线伊人-欧美在线一区二区三区欧美-欧美在线一区二区三区-pornodoxxx中国妞-pornodoldoo欧美另类

position>home>Basketball

可怕,別人把我MCU固件給反匯編了!

[導讀]本文以stm32單片機進行演示,可怕如果MCU沒有做flash讀取或者熔斷保護,別人把則可以通過jlink等燒寫工具直接讀取其Flash上的固件給反固件。


可怕,別人把我MCU固件給反匯編了!

咬金,匯編你們公司固件程序有加密處理嗎 ?

額~,可怕算了吧,別人把我們公司的固件給反單片機程序炒雞簡單的,還加啥子密。匯編

你這想法不對,可怕假如產品賣得很好,別人把如果沒有任何加密措施,固件給反那豈不人家隨便復制售賣。匯編

沒關系吧,可怕反正他們沒源碼,別人把應該也沒那么容易復制吧。固件給反

一點加密都沒有,盜取還是比較簡單的。

我才不信~~!

那行,把你的板子給我,不用你的源碼,跟你把波特率改了!

1

直接讀取固件


? ? 這里以stm32單片機進行演示,如果MCU沒有做flash讀取或者熔斷保護,則可以通過jlink等燒寫工具直接讀取其Flash上的固件,操作如下:

01

? ? 打開J-Flash軟件并選擇創建一個新的工程,并點擊Start J-Flash?:?


02

? ? 選擇所對應的芯片類型,并點擊連接芯片,并顯示連接成功。



03

? ?通過下面的選項路徑,即可讀取所選Flash區域或者所有Flash區域(Entire Chip)。


04

? ? 這樣便獲得了Flash上所有的固件數據,也就是我們的bin文件內容,當然這也就是逆向的最重要素材。


05

? ? 最后把數據保存為bin文件、hex文件等等即可,當然當你換一塊芯片然后燒錄該程序也是可以運行的。





2

逆向固件程序


? ? 一談到逆向,估計各位小伙伴會聯想到各種黑客、破譯、非法等等情景,然而并非如此,世間萬事萬物都是雙刃的。


? ? 就像開一把鎖,當你學習了各種破解鎖的技巧,如果使用這些技巧來盜竊,當然屬于違法行為;但是當用來幫助破解犯罪現場,收集證據等等那這就大有作為的,當然本文旨在學習。


? ?目前嵌入式行業比較流行的逆向工程技術有PCB抄板芯片解密


  • PCB抄板一般都會使用到相關的工具和電氣測試等等,最終獲得原電路板的原理圖、BOM等等實現PCB的完整復制。


  • 芯片解密一般是通過相應的技術把執行程序(一般為機器碼)反匯編成匯編代碼,還可以更進一步反編譯成高級語言偽代碼(比如C代碼),便于逆向人員理解和修改。


1

前期準備


? ? 在上一小節中我們輕松獲得了芯片中的bin文件等,當然如果芯片有加密處理過,可能就需要更加先進的技術獲取芯片的內部數據,這里就暫時不展開了,可以參考下面兩篇文章 :


? ? ? 【整理】一文帶你了解"單片機解密"技術

? ? ??【MCU】用stm32的UID給固件加密(重點在加密)


? ? 今天我們主要是把前面獲取的bin文件逆向一下,并把原來的波特率9600修改為57600,原來9600效果如下:



2

逆向過程


? ? 逆向技術發展其實挺長一段時間了,當然為了方便各逆向愛好者的使用也誕生了非常多的開發工具,其中IDA Pro算是非常流行的逆向工具,所以這里就選用該工具進行逆向。

01


? ? 首先安裝IDA Pro逆向工具,網上搜索一下會有各種資源,然后點擊安裝,一路next基本上可以安裝好,安裝好以后便出現如下兩個頭像。



? ? 這里選擇32bit版本,并創建工程:


02

? ? 這里選擇上小節導出的bin文件,由于所使用的芯片為cortex-M3內核,這里選擇ARM Little-endian模式:


03

? ? 設置內核架構,這里可以通過查閱對應的內核介紹進行選擇。




04

? ? 然后設置bin文件對應的地址映射,由于bin文件是通過整片全部讀出,所以這里與該芯片的Flash起始地址和大小是一致的。


05

? ? 很輕松便進入了IDA的反匯編代碼,這樣就完成了從機器碼到匯編碼的逆向過程。



? ??同時你還可以通過IDA的圖形調用試圖來看到各種調用關系等。



06

? ? 然后我們隨便找一個函數并使用F5,生成C偽代碼。



? ? 然后你再看看C源程序,驚人的相似!!



07

? ? 假如閑9600的波特率太慢,卻又苦于沒有源代碼修改燒錄,于是便可以逆向修改bin文件進行燒錄。


? ? 當然如果你對機器碼和匯編非常的熟悉,只需要找到對應的機器碼進行修改即可,然而找到對應的機器碼還是通過IDA工具來得比較直接且方便。


? ? 同時可以在反匯編view中使用C和D來進行機器碼和匯編的轉化:

? ? 如下通過使用D可以把匯編轉化為機器碼:


? ?

? ? 這里按下D,即可轉化為如下機器碼 :



? ? 同時切到Hex視圖,也可找到對應的機器碼:



08

? ? 以上便找到了修改的位置,僅僅只需要把該機器碼中的9600修改為57600即可,我們可以通過查找內核的指令集進行機器碼的編寫,并進行如下更改:



? ? 同樣,其對應的匯編視圖也發生了如下變化:



? ? 然后點擊如下圖所示菜單選項,從而把相應的修改更新到對應的bin文件中。



09

??? 最后,當然是把修改以后的bin文件燒錄到單片機中進行測試,測試結果如下圖所示 :



? ? 波特率成功被修改為57600,整個過程到此結束,enjoy!!


咬金,你看不加密,程序幾乎是完全暴露的!

小魯班,你怎么變這么優秀了?那以后我得好好考慮這塊了!


-END-


來源 | 最后一個bug

作者 | bug菌


|?整理文章為傳播相關技術,版權歸原作者所有?|

|?如有侵權,請聯系刪除?|


【1】超長干貨為你解析:從串口驅動到Linux驅動模型,嵌入式必會!

【2】超全!嵌入式必懂的CAN總線一文講通了

【3】干貨:嵌入式系統設計開發大全!(萬字總結)

【4】嵌入式系統求職回憶錄:廣嵌、邁瑞、華為、智光……

【5】嵌入式行業真的沒有前途嗎?



免責聲明:本文內容由21ic獲得授權后發布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!

Popular articles

主站蜘蛛池模板: 国产午夜亚洲精品不卡电影| 毛片无码国产| 波多野结衣在线观看3人| 欧美人与性动交α欧美精品| 日本三级生活片| 日本波多野结衣电影| 李老汉的性生生活2| 一级毛片不卡| 91在线国内在线播放老师 | 成人动漫3d在线观看| 一级黄影| 亲密爱人完整版在线观看韩剧 | 国产精华av午夜在线观看| 99久久精品国产免费| 亚洲一卡二卡三卡四卡无卡麻豆| 国产精品美女www爽爽爽视频| 国产精品美女一级在线观看| 国产精品毛片大码女人| 久久99精品九九九久久婷婷| 欧美成人看片黄a免费看| 日本阿v视频在线观看高清 | 女人把私密部位张开让男人桶| 高嫁肉柳风车动漫| 波多野结衣同性| 久久成人精品视频| 日韩欧美卡一卡二卡新区| 国产精品久久久久久影视| 猛男强攻变骚受| 182tv免费视视频线路一二三| 成人综合激情另类小说| 欧美一级黄色片视频| 国产亚洲美女精品久久久| 欧美aa在线| 娇妻之欲海泛舟1一42| 天天做天天爱天天爽综合网| 黑人干| 国产一卡二卡| 精品无人区麻豆乱码1区2区| 麻豆日记下载| 88国产精品欧美一区二区三区| 老师让我她我爽了好久动漫|