Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
AlphaGolang — 用于分析 Golang 二进制文件的 IDApython 脚本 | Kitploit
工具/GitHubGitHub/sentinelabs/alphagolang
静态分析逆向工程调试器恶意软件分析二进制分析
GitHubsentinelabs/alphagolang

AlphaGolang

用于分析 Golang 二进制文件的 IDApython 脚本

查看仓库
6727372年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

AlphaGolang

作者:Juan Andres Guerrero-Saade (JAG-S @ SentinelLabs)

描述:

AlphaGolang 是一组 IDAPython 脚本,旨在帮助恶意软件逆向工程师掌握 Go 二进制文件。其理念是将脚本拆分为具体的步骤,从而避免脆弱的单体脚本,并模拟分析人员在处理 Go 二进制文件时可能遵循的方法。

脚本根据 GPL 许可发布(感谢 Tim Strazzere 的原始 GolangLoaderAssist,我们对其进行了重构并更新为 Python3,向 Tim 致敬 :))。欢迎并鼓励贡献!

要求:IDA Pro(理想版本 v7.6+)和 Python3(嗯) 前两步(recreate_pclntab 和 function_discovery_and_renaming)可在 IDA v7.5- 上运行,但之后的脚本需要 IDAv7.6+。较新的版本是后续脚本的理想目标。

原始参考: Mandiant 网络安全防御峰会 2021 演讲(视频待发布)

AlphaGolang 分析方法论

  • 步骤 0:用于识别 Go 二进制文件的 YARA 规则(PE/ELF/MachO)

    • identify_go_binaries.yara
      • 简单的头部检查 + Go 构建 ID 字符串的正则表达式。
      • 或许可以改进构建 ID 长度范围。
  • 步骤 1:重建 pcln 表

    • recreate_pclntab.py(兼容 IDA v7.5-)
      • 通过启发式方法重建 gopclntab 段
      • 主要用于 IDA v7.5-
  • 步骤 2:遍历 pcln 表发现函数,并为所有函数添加名称

    • function_renaming.py(兼容 IDA v7.5-)
      • 从 golang loader assist 中拆分而来
      • 基于 pcln 表暴力发现缺失的函数
      • 修复了 Python3 迁移过程中一些函数名称清理问题
      • 根据 Akamai 的 Panchan!进行了重构,增加了对 Go v1.18 的改进。感谢 Alex(CycleOfTheAbsurd)。
  • 步骤 3:筛选用户生成的函数

    • categorize_go_folders.py(需要 IDA v7.6+)
      • 自动将函数分类到文件夹中
      • 需要 IDAv7.6+,并在函数视图中启用“显示文件夹”
      • 更新于 2022-05-16:修复了与 IDA v7.7 文件夹排序的冲突
      • 强烈建议在运行此插件之前恢复来自 Lumina 的元数据。
  • 步骤 4:修复字符串引用

    • fix_string_cast.py
      • 从 golang loader assist 中拆分而来
      • 添加了在定义新字符串之前取消定义已有字符串块的逻辑
      • 新的健全性检查使其更加有效
  • 步骤 5:提取类型信息(作者:Ivan Kwiatkowski)

    • extract_types.py
      • 注释所有对 newobject、makechan 等调用的参数
      • 为这些对象应用正确的 C 类型并重命名
      • 获取人类可读的名称并将其添加为注释

待修复及可贡献的空间:

  • fix_string_cast.py - 仍需重构 + 更好的字符串加载启发式方法 - 在大型二进制文件中可能导致锁定。 - 缺少某些间接字符串加载机制。
  • extract_types.py
    • 目前通过查找硬编码的 .rdata 或 __rodata 段名,适用于 PE 和 Mach-O 文件。
    • 需要正确的检查/实现来处理变长编码的大小

后续步骤:

  • 跟踪用户生成函数的字符串引用
  • 基于用户生成函数自动生成 YARA 签名
  • 生成用户生成函数的 Hex-Rays 伪代码输出
  • 自动设置断点以进行动态参数分析
  • ???

致谢:

  • Tim Strazzere 发布了原始的 golang_loader_assist
  • Milan Bohacek(Avast Software s.r.o.)在搞懂 idatree API 方面给予了宝贵帮助。
  • Joakim Kennedy(Intezer)
  • Ivan Kwiatkowski(Kaspersky GReAT)提供了步骤 5。
  • Igor Kuznetsov(Kaspersky GReAT)
  • Alex(又名 CycleOfTheAbsurd),来自 ESET,为 Go v1.18 支持重构了步骤 2。
下载工具