[這篇文章最後由0wnage在 2008/01/06 04:12pm 第 10 次編輯]
引用:
下面引用由sytl2003在 2008/01/06 00:30am 發表的內容:
我就是用27C512去讀的...讀出來的程式碼每一行都全部一樣, 很奇怪,..與一般的晶片不同, .他沒有要求車身編號.
|
Intel 8096(Internal ROMless) 的Reset程式進入點在Address = x2080h, 你的ROM Reader可以設定從 位置 x2080h 讀一段起來嗎? Intel 8096是16bit的CPU所以第一條完整的程式碼應該存在x2080h與x2081h(27C512是資料寬度8bit的 所以要至少讀兩次 CPU才有一條完整的指令 不過8096的指令長度是1byte到5bytes之間)
ROM Reader都是由頭(x0000h)讀到尾(xFFFF)或由尾讀到頭 所以XILINX CPLD看你是直接由頭讀起就不給你讀了
Bosch 3.3.1 ECU的Schematic 我沒看過 不過就Bosch 3.1的Schematic 來看位置線是直接接過去的
所以代表了ROM上面的 x2080h 以前應該是沒有使用到所以也沒有資料 CPU上的x2080h之前是給內部記憶體, Register Profile, 中斷等 Mapping.
27C512在8096上要存取那ROM x2080h 之前的資料CPU內外位置線是一樣的那是存取不到資料的 除非外部位置線對應不是直接接上 而是把27C512的位置線對應shift幾條可能還要加上glue logic 才有辦法直接對應到x0000h
這樣做花的零件可能要多上幾顆 以成本考量 我寧可其把ROM上的 x2080h之前浪費掉也不會多花零件 而且還要付出後面位置資料存取不到的代價
硬體方面要破掉讀出來其實不難
因為可使用的保護為鎖Timing (讀取速度太快不讓你讀 慢過頭也不讓你讀)
程式編碼驗證 (CPLD Hold 住CPU訊號先驗證Flash的Chip Unique ID是否正確 正確後才進行解碼 但是CPU只能跑的是解碼後的程式資料)
讀取範圍驗證(頭尾讀CPLD不進行解碼)
軟體方面他可能在在前段有加一段程式碼去讀ROM中特定的資料(實際上該驗證資料可能擺在CPLD上 以特定讀取方式來作驗證及啟動CPLD解碼 這算第二層保護) 把ROM的資料反組譯後把那一段保護程式碼修掉強制啟動CPLD作第二層解碼就好了 這利用一般的MCU 開發板就可以很方便的讀出來 不過要寫一點小程式
只要知道CPU架構 來對症下藥 破解應該是不難的
如果MCU開發板及ROM Reader齊備 一到兩週應該可以完整的破解這顆晶片