re-go
Installation
SKILL.md
Go 二进制逆向(符号 / 字符串表 / goroutine)
何时使用 / 何时不用
- 用:确认是 Go 编译的二进制(
file输出 Go BuildID / 节表含.gopclntab)后,利用 Go 默认保留符号的特性还原逻辑;识别 Go 版本与构建信息;分析多 goroutine 程序的控制流;恢复 strip 后的 Go 符号 - 用:恶意 Go 样本([[re-malware]] 静态还原——Go 恶意程序多带明文 C2 配置与 buildinfo)
- 不用:非 Go 原生程序(C/C++ 直接 [[re-binary-core]];Rust 走 [[re-rust]])
- 不用:确认带壳先走 [[re-anti-analysis]](Go 二进制被加壳后 pclntab 偏移失效,脱壳后再回本技能)
- 注意:动态步骤默认沙箱([[re-analyze/platform-tips]] 最高原则);Go 二进制体积大,静态优先(大型样本原则)
工具准备
参考 [[re-analyze/platform-tips]]——Go 二进制通常 1MB 起(runtime 占大头),遵循「静态优先(大型样本)」;动态(dlv/gdb 运行样本)默认进沙箱。