VOLVO CEM Crack (2) P3 CEM Communication
這裡記載vdash/p3-tools通訊紀錄,記載high-level大概做哪些事,記錄在此
和CEM連線前,會先確認軟體版本。比如F114讀出很多內部(看不懂)欄位
開始寫入ECU之前,使用7DF廣播ID通知所有裝置進入Programming session。這個封包大概灌了1000次,灌到確認所有裝置都保持安靜
開始對 CEM動手,先確認CEM已經在Programming Session,通過Security Access。這裡送出一組正確答案(seed, key),有興趣能拿前一篇的原始碼算看看
在Programming Session,不時會出現Tester Present封包,讓ECU保持在Programming mode
精彩的地方來了,Tester需要download(灌入ECU)一段資料,長度是0x3126 = 12582bytes灌到記憶體0x0430。下載完畢,觸發0x31 start routine,對應的參數正好是0x430。這段灌進去的程式有個行話叫Secondary BootLoader(SBL)
大概能腦補為什麼這樣設計
- 記憶體0x430寫了某些東西進去,再用"start-routine"啟動,很像注入一段程式。原則上可以用ODA工具去看看,我還沒勤勞到去讀組語。這一步也能作為額外的安全性,要灌入特定軟體才能做某些操作
- 一般CEM內部只放MCU,儲存空間頂多是內建的SRAM或Flash,頂多再放上EEPROM(超弱防護力)。這些記憶體比手機的Flash或DRAM可靠很多,汽車不允許行駛中記憶體壞掉吧…但是容量不大,塞入所有應用成本會太貴。把bootloader做成兩段式,看用途載入不同程式很合理
- 雖然這麼說… Teala電動車主電腦也是跑Linux,現在新車有漂亮液晶螢幕也是,上面都有DRAM和Flash。真的要設計這種機器,也不是做不出來
- 另外說句好笑的... 以前CEM密碼直接燒在EEPROM裡,開蓋即有答案
要寫入新設定,必定是讀出舊的,修補再寫回。VOLVO的CAR config長度254bytes,讀取位置在0x61100,開頭有些checksum之類的。這裡的記憶體位址,未必對應到真實的MCU記憶體位址。UDS通訊協定傳入的位址,到了軟體也能再轉一手存入
讀出來的參數,para0=9代表XC60,para1=2代表五門,para2=1代表二輪傳動。資料欄位定能從原廠診斷工具VIDA的MSSQL資料庫挖掘,簡稱car config。一些有趣的設定,像燃油加熱器(fuel heater)在台灣都不會安裝,一款車在世界各地銷售,需要不少參數調整
最後一步,讓所有ECU reset重新開機,改動就生效了。UDS的reset mode設成0x1代表Hard Reset,等效拔掉電源再重新接上。這事代表CEM內有顆Relay,做實驗也確實聽到Relay的清響聲,大家有照規範做!這個至關重要,不然回廠升級,技師還要斷開電源再上電也太瞎了
先不論突破保護這類操作,讓ECU進入編程模式,重開機倒是超簡單!ELM327插在車上,也是一個攻擊路徑。賣很貴的OBDLink MX+有顆實體連線按鈕,有效防護攻擊,確實是深思熟慮
最後是一些個人心得
- UDS提供介面隔離,比如讀取資料用READ-by-ID,真的換供應商,軟體也能盡量保持一致
- 對汽車破解,電力消耗約20A,對電瓶是某種程度的挑戰,寫一半斷電就糗了。電子元件解法是用雙倍儲存空間,就算沒寫成功也有一份備用(花錢解)。軟體設計這些流程,可能也要考慮不穩定供電進去。講究一點,準備一顆UPS避免意外也是專業的表現
- VOLVO CEM密碼很弱問題不大。因為診斷工具上雲端,傳回car config甚至每個元件軟體版本上雲端比對非難事。惡搞的風險是:一言不合不給更新軟體。現代汽車軟體功能豐富(Bug多),軟體修補服務十分重要。涉及車廠利益保護都會補得很快(技術成熟),未來對電子系統惡搞的難度會急劇上升
- 遊戲機被盜版影響很深,保護越做越好,PS3/4/5至今都沒被完全破解!玩家做出某些違反SONY利益的事,例如改機,在線上不禮貌,一言不合封鎖登入連線遊戲權利,廠商生態系抓得牢牢牢。VOLVO診斷工具上雲端開始,控制權就慢慢收緊了
下一篇
我們來看看P1/P2 CEM的軟體設計問題,攻擊方式非常精巧,有趣
留言