安全与风控
剥离符号的 Go/Rust 二进制逆向:识别运行时…
适用于分析 stripped Go/Rust 编译产物,利用运行时特征与语言专用工具恢复函数名、元数据和业务逻辑。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
剥离符号的 Go/Rust 二进制逆向:特定
解决思路
- 先读取 `../field-journal/precedent-reverse.md`。
- 用 `file`、字符串和运行时特征确认样本为 Go/Rust 编译产物。
- 检查 GoReSym 或相关插件是否可用。
- 按“运行时识别 → 符号/元数据恢复 → 业务逻辑”的顺序执行。
- Go:识别 `go.buildid`、残留 `runtime` 符号和 `pclntab`。
- Go:用 GoReSym、redress、IDA Go 插件恢复函数名。
- Go:注意 `interface`、`slice`、`string` 结构在反编译中的形态。
- Go:关注 `crypto/*`、`net/http` 等网络/加密库路径。
- Rust:通过 `panic` 字符串、`rust_begin_unwind`、`crate` 路径获取线索。
- Rust:注意范型实例化导致的代码膨胀;先定位字符串 xref。
- Rust:异步/`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。
适用边界 · 注意事项
- 样本不是 Go 或 Rust 编译产物时,不适用。
- 已有源码或完整调试符号,不需要做剥离符号逆向。
- 目标被强加密壳/强反调试保护且无法获取运行时元数据时,应先脱壳或绕过保护,不能直接套用本流程。