点击登录

讨论 小米手環10固件WSL反編譯結果

你好我很好

Lv.3
社区会员
小米手環 10 (代號 Vela AP) 硬體逆向分析報告
分析員: Nelson 核心架構: ARM Cortex-M33 (TrustZone 支援) 處理器平台: Bestechnic BES2700 系列

1. 啟動與引導流程 (Bootloader Analysis)
透過對 vela_ota.bin 的分析,我們確認了系統的啟動入口並非標準的 0x00000000,而是經過小米自定義偏移的格式。

關鍵入口位址
Vector Table 起點: 0x00000100

Reset Handler (入口點): 0x00000104

反編譯代碼證明:
程式碼片段
# Bootloader 從 0x104 讀取跳轉位址的邏輯
4314a: f8d4 0104 ldr.w r0, [r4, #260] ; 260 = 0x104
4314e: f007 f9f5 bl 0x4a53c ; 跳轉至內核初始化
2. 硬體暫存器與外設控制 (Peripheral Mapping)
系統控制邏輯高度集中在 0x40000000 基位址,這與恆玄 (BES) 晶片的設計規範完全吻合。

系統控制器 (SYS_CTRL)
基位址: 0x40000000

關鍵暫存器: 0x40000158 (時鐘/電源使能)

震動馬達 (Vibration Motor) 觸發邏輯
我們發現系統在啟動或特定事件時,會操作 0x40000158 的第 6 位元(Bit 6),這極大機率是震動模組的硬體使能開關。

反編譯代碼證明:
程式碼片段
# 震動/電源模組啟動序列
4ba8: f8d4 3158 ldr.w r3, [r4, #344] ; r4=0x40000000, 344=0x158
4bac: f043 0340 orr.w r3, r3, #64 ; 0x40 即 Bit 6,開啟硬體
4bb0: e7d7 b.n 0x4b62 ; 寫回並繼續
3. 系統安全與簽名機制 (Security & Signatures)
為了防止未經授權的固件運行,Bootloader 在執行跳轉前會檢查特定的 Magic Number(通行證)。

硬體版本/分區簽名: 0x2C095531

存放位址: 0x4005c (Literal Pool)

數據證明:
Bash
nil@Nelson-PC:~$ hexdump -C -s 0x4005c -n 4 vela_ota.bin
0004005c 31 55 09 2c |1U.,| # 小端序轉為 0x2C095531
4. 內核保護與原子操作 (Kernel Protection)
分析顯示,Vela 內核在操作底層暫存器時,使用了 Cortex-M33 特有的 BASEPRI 暫存器來進行中斷屏蔽,這與專業 RTOS(如 NuttX/FreeRTOS)的實現方式一致。

反編譯代碼證明:
程式碼片段
# 臨界區保護 (Critical Section)
59cc4: f3ef 8511 mrs r5, BASEPRI ; 備份目前中斷優先級
59cc8: 2380 movs r3, #128 ; 設定屏蔽等級 0x80
59cca: f383 8811 msr BASEPRI, r3 ; 關閉中斷
... (進行敏感硬體操作) ...
59ce2: f385 8811 msr BASEPRI, r5 ; 恢復中斷,開啟保護
5. 總結與 Nelson 的「路徑 B」展望
本手環硬體架構與 Pico 2W (Cortex-M33) 高度相似,開發者可以利用相同的工具鏈(arm-none-eabi-gcc)進行開發。

未來潛在開發建議:

模擬啟動: 構造一個含有 0x100 偏移向量表與 0x2C095531 簽名的二進位檔,嘗試引導。

GPIO 地圖: 進一步追蹤 0x4010xxxx 區域,找出螢幕背光與感測器的具體引腳。

安全提醒: 由於操作涉及 0x40000000 系統時鐘區,任何錯誤的時鐘分頻設定皆可能導致設備永久損壞(變磚)。
 

*这是一则由 Google AdSense 自动推荐的广告,与本站无关,不对其真实性与可靠性负责

Users who are viewing this thread

Home 首页
Home 资源
News 发现
Account 我的
顶部