大数跨境

Go 利器 GoReSym:剥离符号恢复 Go 二进制元数据—东方仙盟

Go 利器 GoReSym:剥离符号恢复 Go 二进制元数据—东方仙盟 未来之窗软件服务中心
2026-09-27
20
导读:⚠️ 重要前置声明本文仅做公开开源工具技术原理学习与研究分享。该工具仅限用于分析你自己拥有所有权的程序,或是已经获得程序所有者书面授权许可的二进制文件。

⚠️ 重要前置声明本文仅做公开开源工具技术原理学习与研究分享。该工具仅限用于分析你自己拥有所有权的程序,或是已经获得程序所有者书面授权许可的二进制文件。严禁在未获得授权的情况下,对第三方程序、商业软件、恶意样本开展逆向、解析等操作。 本文不提供逆向工程相关业务,不承接相关逆向项目。文中仅介绍公开仓库内的工具,工具版权归属原作者 Mandiant 公司。工具使用者需要自行承担使用工具带来的全部法律责任,本文及分享者不对任何违规使用行为承担责任。

0x00 前言

Golang 凭借着跨平台编译、静态单文件部署、开发效率高等优势,不光被大量业务软件采用,也成为恶意样本开发者的热门选择。

但对于逆向工程师来说,分析 Go 程序一直有不少痛点:

  1. 编译后自带庞大 Go 运行时代码,大量无关函数充斥反汇编窗口;
  2. 发布版本经常 strip 剥离符号表,IDA/Ghidra 直接加载后几乎看不到函数名;
  3. 经过 UPX 加壳、混淆处理的 Go 样本,常规解析工具直接失效;
  4. 结构体、接口、源码文件路径、行号等调试信息很难提取。

传统 PE/ELF 符号解析工具对 Go runtime 内置的moduledata数据结构支持很差,很难挖出藏在二进制内部的元数据。安全厂商 Mandiant 开源的GoReSym,就是专门解决 Go 二进制符号恢复的专项工具,现在已经成为 Go 逆向的标配工具。

0x01 GoReSym 是什么

GoReSym 是 Mandiant 推出的 Go 二进制符号解析器,工具直接参考 Go 官方编译器、运行时源码实现,不依赖系统符号表,从 Go 程序内置的 runtime 元数据中提取各类信息,支持 Windows、Linux、macOS 多平台样本解析。

核心特点:即使二进制被 strip 去除符号,依然可以解析;对 UPX 解压后畸形样本、数据段被拆分的样本也有很好兼容性,能够自动定位moduledata关键结构。

它可以提取的信息包含: ✅ 基础程序元数据:编译目标操作系统、CPU 架构、大小端、Go 编译器版本、BuildID ✅ 函数元数据:函数起始 / 结束虚拟地址、函数名称、归属包 ✅ 源码信息:源码文件名、行号信息 ✅ 类型信息:结构体、接口、自定义类型定义 ✅ 包信息:标准库包、用户自定义包列表

工具本身非常轻量,就算是体积很大的 Go 二进制,解析耗时通常也仅 1‑5 秒,输出支持人类可读文本或者 JSON 结构化输出,方便脚本批量处理,仓库还附带 IDAPython 脚本,可把解析结果直接导入 IDA,批量重命名函数。

⚠️ 注意:GoReSym 只做元数据提取,不会做通用脱壳、代码反编译,需要样本完成脱壳后再进行解析。

0x02 安装部署

两种方式获取程序:

方式 1:下载预编译 Release 二进制

打开项目 GitHub 的 Releases 页面,直接下载对应系统架构编译好的可执行文件,开箱即用,不需要配置 Go 环境。

方式 2:源码编译

本地安装新版 Go 环境,克隆仓库后直接 build:

git clone https://github.com/mandiant/GoReSym.git
cd GoReSym
go build

macOS 用户还可以直接 homebrew 安装:

brew install goresym

0x03 基础命令与常用参数

#基础调用格式
./GoReSym [参数] target_binary

常用参数说明:

表格

参数
作用
-t
提取全部类型、接口信息,逆向分析结构体必开
-d
输出 Go 标准库包名
-p
输出源码文件路径信息
-human
人类可读文本输出,默认输出 JSON
-v 1.21
手动指定 Go 编译版本,自动识别失败的时候手动干预
-strings
提取 Go 字符串信息

高频实战命令

#输出JSON格式完整信息,保存到文件,后续给IDA脚本导入
./GoReSym -t -d -p sample.exe > result.json

#人类可读快速预览样本基础信息
./GoReSym -human sample.exe

拿到 JSON 结果后,使用仓库中idagoresym.py脚本,在 IDA 中运行,即可自动批量重命名函数、识别包边界,极大减少逆向工作量。

0x04 解决哪些逆向痛点

1. strip 后的无符号 Go 程序

很多 Go 程序发布时会去除符号表,PE/ELF 符号表全部清空,普通工具一无所获。但 Go 把符号、类型信息保存在 runtime 的moduledata,不在系统符号段,GoReSym 直接解析这块内置数据,拿回函数名。

2. UPX 等壳解压后畸形样本

UPX 解压之后,部分样本节布局错乱,数据被拆分到多个 section,常规工具找不到元数据位置,GoReSym 针对该场景做了适配,恶意 Go 样本分析中非常实用。

3. 区分用户代码与 Go runtime 代码

逆向 Go 最头疼的就是大量 runtime、标准库函数。通过 GoReSym 输出包名,可以快速区分哪些是攻击者编写业务逻辑,哪些是 Go 自带运行时代码,把分析焦点快速锁定恶意逻辑。

4. 获取结构体定义

拿到程序内部结构体、接口定义,在分析网络协议、配置结构体的时候,省去大量手动逆向推导的时间。

0x05 局限性与踩坑提示

  1. 强壳 / 混淆破坏 moduledata 会失效
    :如果样本经过 Go‑bfuscate 等混淆工具,直接抹除、破坏moduledata结构,GoReSym 将无法解析元数据,这属于样本主动破坏,工具无法恢复。
  2. 必须脱壳完成
    :压缩壳没有解压的情况下,原始数据被加密压缩,无法解析,要先 dump 或者脱壳。
  3. Go 版本兼容性
    :Go 语言不同大版本,moduledata内存结构发生变化,极少数样本自动识别编译器版本出错,可以用‑v参数手动指定版本。
  4. 源码行号、文件路径是否存在取决于编译时是否被去除,如果编译时使用‑ldflags "-s -w",部分调试信息会被编译器直接删除,无法找回。

0x06 实战小技巧

  1. 批量分析恶意样本:输出 JSON 格式,写简单脚本批量解析 JSON,提取函数名、编译版本做威胁情报统计;
  2. IDA 配合使用:优先导出 json,再运行 IDAPython 脚本导入,不要直接依赖命令行文本;
  3. 样本分析第一步,先跑 GoReSym 拿到 Go 编译版本,后续逆向选择匹配版本的 runtime 资料参考;
  4. 对于解析失败样本,可以加上‑human看报错,判断是壳问题还是 moduledata 被篡改。

0x07 小结

GoReSym 不是反编译工具,却是 Go 逆向流程里的前置关键一环。在处理大量 Go 编写木马、远控、挖矿程序的时候,它可以快速拿回被 strip 丢失的符号信息,大幅降低逆向门槛。

现在绝大多数安全从业人员分析 Go 样本,流程基本都是:脱壳 → GoReSym 提取元数据 → IDA 导入符号 → 开展深度逆向。如果你经常接触 Go 编译二进制,这个工具值得加入逆向工具箱


  1. 人人皆为创造者


    每个人都是使用者,也是创造者;是数字世界的消费者,更是价值的生产者与分享者。在智能时代的浪潮里,单打独斗的发展模式早已落幕,唯有开放连接、创意共创、利益共享,才能让个体价值汇聚成生态合力,让技术与创意双向奔赴,实现平台与伙伴的快速成长、共赢致远。


    原创应该获得永久分成


    原创创意共创、永久收益分成,是东方仙盟始终坚守的核心理念。我们坚信,每一份原创智慧都值得被尊重与回馈,以永久分成锚定共创初心,让创意者长期享有价值红利,携手万千伙伴向着科技星辰大海笃定前行,拥抱硅基 生命与数字智能交融的未来,共筑跨越时代的数字文明共同体。





    • 东方仙盟 

      东方仙盟:拥抱知识开源,共筑数字新生态

      在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。我们相信,唯有打破技术壁垒、汇聚全球智慧,才能真正推动行业的可持续发展。

      开源赋能中小商户:通过将前端异常检测、跨系统数据互联等核心能力开源化,东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案,让更多商家能够平等享受数字转型的红利。共建行业标准:我们积极参与国际技术社区,与全球开发者、合作伙伴共同制定开放协议与技术规范,推动跨境零售、文旅、餐饮等多业态的系统互联互通,构建更加公平、高效的数字生态。知识普惠,共促发展:通过开源社区、技术文档与培训体系,东方仙盟致力于将前沿技术转化为可落地的行业实践,赋能全球合作伙伴,共同培育创新人才,推动数字经济 的普惠式增长

      阿雪技术观

      在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。


      Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets, hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology.  

      开通方法

      图片


      关注我们

      营销资讯:抖音运营,微信公众号运营,小红书运营

      网站运营:安全、备案、申请网站,漏洞扫描,数字证书

      开发:开发技巧、热点技术,人工智能,数据分析,数据优化,docker

      数据服务:数据恢复,数据安全,数据融合,数据异地容灾,数据优化,数据自动备份、数据清洗

      人工智能:智能物联网,智慧大屏幕,OCR,智慧刷脸,语音交互,智能机器人,数字生命,数字人,大模型,本地化,边缘化智能(手机模型)

      支付:微信支付服务商,支付支付服务商,刷脸支付

      安全服务:WAF安全,网安扫描,漏洞扫描,安全补丁,防火墙定制

      智慧大屏:物资耗材大屏幕,单位用餐大数据,智慧场馆大屏,销售大屏幕,智慧社区大屏幕,大厅查询机,景区自助机

      智慧酒店:酒店系统、酒店押金、酒店房价牌、酒店门锁、布草系统

      行业软件:酒店、餐饮、便利店,美发、超市,批发,景区门票,道闸,堂食,配送系统,烘焙系统,健身,美容系统,月子中心系统

      物联网:智能衣柜,足浴店衣柜,售货柜,酒店自助入住机

      国产化:uos系统答疑,国产软件开发,国产服务器配置,docker

      一体化:酒店一体化(闸机,酒店系统,餐饮系统,售票,布草,无人酒店,在线订房),景区一体化(门票、餐饮、住宿、押金、超市、药店、商铺租赁,通车系统,售票大厅,大屏幕,无人景区,景区自助机)


            

      图片


【声明】内容源于网络
0
0
未来之窗软件服务中心
在线工单、售后、配送查询、附近商家 业务范围:餐饮、酒店、KTV、洗浴、客房、美容美发、糕点、POS收银系统 ;商城、团购、分销、众筹、医疗、学校、美容 ;OA、CRM、HRM;智能WIFI、产品、商家推广
内容 272
粉丝 0
未来之窗软件服务中心 在线工单、售后、配送查询、附近商家 业务范围:餐饮、酒店、KTV、洗浴、客房、美容美发、糕点、POS收银系统 ;商城、团购、分销、众筹、医疗、学校、美容 ;OA、CRM、HRM;智能WIFI、产品、商家推广
总阅读3.4k
粉丝0
内容272