volexity/GoStringExtractor
GitHub: volexity/GoStringExtractor
GoStringExtractor 是一款 IDA Pro 和 Ghidra 插件,用于从 Go 语言编译的二进制文件中提取字符串及其引用函数并导出为 JSON。
Stars: 5 | Forks: 1
# GoStringExtractor
GoStringExtractor 是一款用于 IDA Pro 和 Ghidra 的工具,旨在帮助从 Go 二进制文件中收集字符串。
它会收集字符串以及引用每个字符串的函数,然后将其导出为 JSON 文件。为了方便起见,您也可以选择在 IDA Pro/Ghidra 内部创建这些字符串。以下是运行 GoStringExtractor 的结果,它将整洁地整理您 Ghidra 或 IDA Pro 数据库中的字符串:

## 安装说明
### IDA Pro
要安装 IDA Pro 插件,请下载 `gostringextractor_ida.py` 和 `ida-plugin.json`。然后导航到您的 IDA Pro 文件夹(如果没有 plugins 文件夹,只需创建一个):
Windows:
`%APPDATA%\Hex-Rays\Ida Pro\plugins`
Mac:
`~/.idapro/plugins`
然后创建一个名为 `gostringextractor` 的目录,并将文件复制到其中。现在,您应该能够在 IDA Pro 中通过 `Edit > Plugins > GoStringExtractor` 找到它,或者按下 `Shift-S`(这是默认热键,您可以在 JSON 文件中对其进行自定义)。

### Ghidra
要安装 Ghidra 脚本,请下载 `gostringextractor_ghidra.py`,然后导航到您的 Ghidra 安装目录。接着将该文件移动到
`\Features\PyGhidra\ghidra_scripts`。
现在,您应该能够在 Ghidra 中通过 `Windows > Script Manager > gostringextractor_ghidra.py` 找到它,然后运行该脚本即可。

## 用法
在运行 GoStringExtractor 之前,最好先让自动分析运行完毕,尤其是对于 Ghidra。让分析程序运行将有助于生成数据段中的交叉引用,该工具正是利用这些交叉引用来构建字符串。
启动 GoStringExtractor 后,您将看到一个对话框(如果您使用的是 Ghidra 版工具,则会出现多个连续的对话框)。
该工具会提供一个重命名输出文件的选项;默认命名规则使用导入到数据库中的二进制文件名。此外还有一个附加到现有输出文件的选项,但请注意,执行此操作时该文件必须已经存在。
搜索的默认起始地址是通过在二进制文件的数据段中搜索字符串 `"entersyscall"` 来确定的。到目前为止,该字符串在每一个 Go 版本中都存在,并为进入字符串表提供了一个非常一致的入口。如果您想从不同的起始点开始,可以对其进行更改。
系统还会提示您选择是从提供的地址向上搜索还是向下搜索(或两者兼有),这将一直遍历到字符串表的顶部和底部。
此外,还有一个便捷选项可以在您的数据库(无论是 IDA Pro 还是 Ghidra)中创建字符串,这样就可以为您的字符串命名,使其变得可点击、可交叉引用且更容易被找到。
最后,您可以选择按包名过滤字符串,这意味着您将只提取特定包中的函数所使用的字符串。这里有一个包含所有包的下拉列表,这些包是从数据库中的函数信息中提取出来的。
*注意:此工具不会对经过混淆处理的字符串进行解密。对于像 Garble 这样的混淆器,该工具仍然能够成功进入字符串表,并提取出所有未混淆的运行时字符串。*
标签:Ghidra 脚本, Go语言, IDA Pro 插件, 云安全监控, 云资产清单, 字符串提取, 程序破解, 逆向工具, 逆向工程, 静态分析