提問:能否將 .hex(Intel HEX)檔案轉回 C 代碼?
本質
- 編譯是單向失真過程:變數名、註解、高層控制結構(for/while)、內聯函數、模板展開全部丟失。
- 反編譯/反組譯只能產生功能等價的組合語言或偽 C 代碼,無法還原原始碼。
常用工具
- IDA Pro / Ghidra:業界標準反組譯器,支援多種架構,輸出偽代碼。
- objdump / radare2:開源替代方案。
- Hex-Rays Decompiler(IDA 付費插件):產生可讀性較高的 C-like 偽代碼。
實際流程
- .hex → 二進位
.bin(objcopy -I ihex -O binary)。
- 載入反組譯器,指定架構(ARM, x86, AVR...)。
- 分析函數邊界、呼叫慣例、全域變數。
- 人工重構:命名函數、恢復結構體、補充註解。
預期
輸出代碼會有 goto、無意義變數名(var_1)、展開的內聯代碼,**需人工整理才能維護**。工具只能省去「機器碼→組語」的體力活。