stm32逆向与安全科普,bin文件逆向反汇编
來源:阿莫論壇,作者:ilovepp
微信公眾號:芯片之家(ID:chiphome-dy)
首先你要有一個bin文件(bin文件的獲取方法不在此展開介紹,今后有機(jī)會可以專門開一個貼聊一聊)。本次實(shí)驗(yàn)用到的bin文件??stm32_xwrtos.bin.zip?(6 KB)?是用ST官方CMSIS和外設(shè)庫編譯的跑在stm32f103c8t6上的bin文件,比較具有代表性。
燒錄文件下載:
鏈接:https://pan.baidu.com/s/1YiMkyqbdPxGOI_vwGtOlJw ?提取碼:yi56
工具準(zhǔn)備:
安裝開源跨平臺逆向神器r2 https://github.com/radareorg/radare2 ,r2可運(yùn)行在Windows、Linux、Mac等所有主流操作系統(tǒng)上(r2有多牛逼不在此展開介紹,今后有機(jī)會可以專門開一個貼聊一聊)。
實(shí)驗(yàn)步驟:
1)輸入r2 -a arm -b 16 -m 0x08000000 stm32_xwrtos.bin 進(jìn)入r2的控制臺后,輸入e asm.cpu=cortex。這一步是告訴r2以0x08000000為基址加載stm32_xwrtos.bin文件,并設(shè)置指令集為cortex系列的thumb。
2)輸入aaaa,運(yùn)行自動化分析。
3)輸入pxw 268 @0x08000000 以小端四字節(jié)形式打印從0x08000000開始的268(268對應(yīng)中斷向量表大小)個字節(jié),同時打開ST官方的啟動文件startup_stm32f10x_md.s并找到.isr_vector段進(jìn)行對照。
4)接著上一步,輸入fs notes,創(chuàng)建并切換到一個名為notes(可以是任意其他名字)的符號記事本;按照f flag=address的形式,對照.isr_vector段,向符號記事本中錄入感興趣的符號地址對應(yīng)關(guān)系。注意如果address是函數(shù)地址則需要減1(因?yàn)閠humb指令的要求,具體原因此處不展開);最后輸入af @flag形式的命令強(qiáng)制進(jìn)行函數(shù)分析。
5) 輸入pdf @Reset_Handler,對Reset_Handler函數(shù)進(jìn)行反匯編
輸入 VV 切換到流程圖視圖
通過閱讀匯編代碼,可以得到以下信息:
1.??data段的地址區(qū)間為0x20000000-0x20000028 bss段的地址區(qū)間為0x20000028-0x2000043C
2.??Reset_Handler用0x08002cbc開始的0x28字節(jié)初始化data段,用0填充bss段
3. 調(diào)用fcn.08001cc8函數(shù)
4. 調(diào)用fcn.08001734函數(shù)
6)輸入pdf @fcn.08001cc8進(jìn)行反匯編
發(fā)現(xiàn)對外設(shè)寄存器地址0x40021000的引用
通過查詢數(shù)據(jù)手冊,可判斷fcn.08001cc8函數(shù)應(yīng)為系統(tǒng)初始化化函數(shù)SystemInit(),它初始化了時鐘
7)根據(jù)經(jīng)驗(yàn)判斷fcn.0800173函數(shù)即為main函數(shù)
本篇作為系列第一篇文章,主要作用是帶大家熟悉和習(xí)慣r2的基本使用,以及對逆向有個感性認(rèn)識。下一篇計(jì)劃在逆向的基礎(chǔ)上介紹stm32上的棧溢出漏洞的挖掘與利用。
再次感謝ilovepp兄分享的精彩文章!
請戳右下角,給我一點(diǎn)在看!
總結(jié)
以上是生活随笔為你收集整理的stm32逆向与安全科普,bin文件逆向反汇编的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【任务脚本】2020双十一活动小结,京东
- 下一篇: 【PC工具】开源绿色windows右键管