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

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

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

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

工具目录

分类

查看所有分类
Loading categories
gimphash — 针对 Golang 二进制文件的类 Imphash 计算 | Kitploit
工具/GitHubGitHub/nextronsystems/gimphash
哈希分析逆向工程恶意软件分析二进制分析
GitHubnextronsystems/gimphash

gimphash

针对 Golang 二进制文件的类 Imphash 计算

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

gimphash

gimphash 是一种为 Go 二进制文件计算等效 imphash 的方法。其名称代表 Go-import-hash。

Golang 二进制文件会将依赖项作为可执行文件的一部分包含在内。这些依赖项既包括标准库包,也包括第三方依赖,可以像经典的 imphash 一样用于识别 Golang 项目。

依赖项可以通过每个 Golang 二进制文件自带的 pclntab 列出(另请参阅 Mandiant 的这篇博客文章)。pclntab 包含许多对逆向工程有价值的元素;对于 gimphash,我们将使用其中包含的函数名称。

计算

  1. 在 Golang 二进制文件中定位 pclntab
  2. 使用 pclntab 中的 functab 枚举 Golang 函数,并遍历它们的名称:
    1. 忽略以 go. 或 type. 开头的函数名称(编译产物、运行时内部)
    2. 如果函数名称包含 vendor/,则丢弃该子字符串及其前面的所有内容 (例如,将 vendor/golang.org/x/text 转换为 golang.org/x/text)
    3. 忽略包含 internal/ 的函数名称
    4. 忽略以下标准库包开头的函数名称:
      • runtime
      • sync
      • syscall
      • type
      • time
      • unicode
      • reflect
      • strconv
    5. 忽略非公开函数或接收者非公开的函数名称。具体做法如下:
      1. 在函数名称中找到最后一个 /。如果没有找到 /,则从开头开始。从该位置起,找到下一个 .。
      2. 将该 . 之后的所有内容提取为基本函数名称。如果没有找到 .,则使用上一步计算出的 / 索引之后的所有内容。
      3. 如果基本函数名称中的第一个字母数字字符是小写字母,则忽略该函数。
      4. 如果基本函数名称中还存在另一个 .,则在该 . 之后的第一个字母数字字符是小写字母时忽略该函数。
    6. 如果名称到目前为止未被忽略,则将其存入有序列表
  3. 对连接后的名称计算 SHA-256 哈希(无分隔符)

概念验证实现

本仓库包含以下语言的概念验证代码:

  • C
  • Go

发布 部分包含适用于 Windows 和 Linux 的预构建二进制文件。

使用示例

对单个文件运行 Gimphash 计算器

root@kitploit:~
./c_gimphash_linux /mnt/malware-repo/Godoh/godoh-windows64.exe
8200e76e42c4e9cf2bb308d76c017cbdcde5cbbf95e99e02b14d05e7b21505f3 /mnt/mal/Godoh/godoh-windows64.exe

对恶意软件仓库运行 Gimphash 计算器

root@kitploit:~
find /mnt/malware-repo/ -type f -exec ./go_gimphash_linux {} \; 2>/dev/null
...

聚类示例

Screenshot 2022-07-02 at 10 11 38

下载工具