Go / Rust 二進制逆向工程
行動要求(讀完後立刻執行)
NOW: 讀取../field-journal/precedent-reverse.mdNOW: 確認樣本為 Go/Rust 編譯產物(file/字串/運行時特徵)NEXT: GoReSym / 相關插件是否可用ACT: 運行時識別 → 符號/元數據恢復 → 業務邏輯
適用場景
- 剝離符號的 Go 惡意軟體/工具
- Rust 發行二進制、panic 字串驅動分析
- 與通用 ida/ghidra 互補的語言專用方法
工作流
Go
□ 識別 go.buildid、runtime 符號殘留、pclntab
□ GoReSym / redress / IDA Go 插件恢復函數名
□ 注意 interface、slice、string 結構在反編譯中的形態
□ 網路/加密庫路徑:crypto/* net/http
Rust
□ panic 字串、rust_begin_unwind、crate 路徑暗示
□ 泛型實例化導致的代碼膨脹;先定位字串 xref
□ 異步/tokio 狀態機需結合交叉引用
動態
□ 仍可用 Frida;注意 Go 棧與調度
□ 優先日誌與配置字串驅動斷點
工具鏈
| 工具 | 用途 |
|---|---|
| GoReSym | Go 元數據 |
| IDA/Ghidra + Go/Rust 插件 | 反編譯 |
| radare2 | 快速字串 |
| strings / rabin2 | 分診 |
參考
references/go-rust-notes.md../reverse-engineering/go-reverse.md../ida-reverse/../ghidra-reverse/- seed:
field-journal/seed-002_go-malware-stripped.md
路由上下文
上游: MASTER R33
下游: 惡意樣本流程 malware-analysis;通用 RE reverse-engineering
任務完成自檢
- 是否恢復關鍵函數名或等價映射?
- 是否標註語言運行時證據?
- Checklist?