SuperAPI AI 工具集

go-rust-reverse

安全与审计

查看项目

更新于 10-20 02:32

技能介绍

用途

该技能用于逆向分析剥离符号的 Go 与 Rust 二进制文件,解决符号缺失情况下函数边界与名称难以恢复的问题。它提供语言专用的识别与恢复方法,与通用 IDA/Ghidra 逆向流程互补。

主要能力

Go 方向

  • 识别 go.buildid、runtime 符号残留与 pclntab。
  • 使用 GoReSym、redress 或 IDA Go 插件恢复函数名。
  • 关注 interface、slice、string 结构在反编译中的形态。
  • 追踪网络与加密库路径,如 crypto/*、net/http。

Rust 方向

  • 利用 panic 字符串、rust_begin_unwind、crate 路径暗示定位代码。
  • 处理范型实例化导致的代码膨胀,先定位字符串交叉引用。
  • 异步/tokio 状态机需结合交叉引用分析。

动态分析

  • 仍可使用 Frida,但需注意 Go 栈与调度特性。
  • 优先以日志与配置字符串驱动断点。

使用方式

按语言分支执行工作流:Go 侧先做元数据与符号恢复,再结合结构形态理解反编译结果;Rust 侧从 panic 字符串与 crate 路径入手,借助字符串交叉引用缩小范围。动态阶段可配合 Frida,并以日志、配置字符串作为断点线索。

工具链

  • GoReSym:Go 元数据恢复。
  • IDA/Ghidra + Go/Rust 插件:反编译。
  • radare2:快速字符串分析。
  • strings / rabin2:分诊。

适用场景

  • 剥离符号的 Go 恶意软件或工具分析。
  • Rust 发行二进制、panic 字符串驱动分析。
  • 需要语言专用方法补充通用 ida/ghidra 流程的场合。

限制

  • 新编译器版本会改变元数据布局,工具必须保持更新。
  • 激进内联仍会产生庞大且难以阅读的反编译结果。

自检要点

  • 是否恢复关键函数名或等价映射?
  • 是否标注语言运行时证据?