Ghidra 在 macOS 首次启动被 Gatekeeper 隔离原生组件怎么解决

Ghidra 在 macOS 首次启动被 Gatekeeper 隔离原生组件怎么解决

【免费下载链接】ghidra Ghidra is a software reverse engineering (SRE) framework 【免费下载链接】ghidra 项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra

在 macOS 上解压 Ghidra 发行版并首次启动时,macOS 的 Gatekeeper 机制可能会把发行版中预构建的、未签名的 Ghidra 原生组件标记为隔离对象。官方 Getting Started 文档针对这个场景给出了两条处置路径:在解压发行包之前先移除其隔离属性,或者在首次启动之前为当前平台自行构建原生组件。本文依据 GhidraDocs/GettingStarted.md(该文档声明内容适用于 Ghidra 12.1,后续版本可能有变化)的 "Installation Notes" 与 "Building Native Components" 两节。

准备条件

先确认环境满足文档列出的要求:

  • macOS 10.13 或更高版本(文档中所有 32 位操作系统安装均已弃用);
  • 至少 4 GB 内存、1 GB 存储(存放 Ghidra 二进制);
  • PATH 上或 JAVA_HOME 环境变量指定的 64 位 Java JDK。JAVA_HOME 若被设置则优先于 PATH。当前 Getting Started 文档的最低要求一栏写的是 Java 25 64-bit JDK,而 README.md 的 Install 一节写的是安装 JDK 21 64-bit,两处版本号不一致,请以你实际安装的发布版本对应文档的要求为准;
  • 只有走"构建原生组件"路径时,还需要:Gradle 9.1.0+(或使用发行版自带的 Gradle wrapper,需有网络连接),以及 Xcode 或精简版 Command Line Tools for Xcode(后者可用 xcode-select --install 安装,Xcode 可从 App Store 安装且自带命令行工具)。

Ghidra 不使用传统安装程序,安装就是把发行版文件就地解压到目标文件系统位置,个人使用不需要管理员权限(解压到某些目录时除外)。文档明确提醒:不要解压到已有 Ghidra 安装目录之上。

路径一:解压发行包前移除隔离属性

这是最短的一条路径。在终端中、解压 Ghidra 发行版文件之前执行:

xattr -d com.apple.quarantine ghidra_<version>_<date>.zip

命令中的 ghidra_<version>_<date>.zip 是占位写法,替换成你实际下载的发行包文件名。README 中说明,官方多平台发行文件名形如 ghidra_<version>_<release>_<date>.zip,位于 release 页的 "Assets" 下拉中;不要把 "Source Code" 文件当成发行包。

移除隔离属性后再把发行包解压到目标位置。解压完成后会得到安装目录(下文记作 <GhidraInstallDir>),其顶层包含 GhidraExtensionsGPLserversupportdocs 等目录以及启动脚本 ghidraRun(.bat),可以据此确认解压结果完整。

需要说明的是,文档在 "Building Native Components" 一节中把官方发行版自带的原生二进制限定为:Windows 10 或更高(x86 64-bit、ARM 64-bit 经 x86 模拟运行)和 Linux x86 64-bit;macOS x86 64-bit 与 macOS ARM 64-bit 属于"使用用户自行构建的原生二进制"才支持的额外平台。如果你的 macOS 平台没有可用的预构建二进制,光做路径一并不够,还需要执行路径二。

路径二:首次启动前构建原生组件

按文档 "Building Native Components" 一节,在当前平台上构建原生二进制。

如果系统已安装 Gradle:

cd <GhidraInstallDir>/support/gradle/
gradle buildNatives

如果未安装 Gradle 但能访问网络,使用发行版自带的 Gradle wrapper(gradlew(.bat) 中 macOS/Linux 对应 ./gradlew):

cd <GhidraInstallDir>/support/gradle/
./gradlew buildNatives

两条命令中的 <GhidraInstallDir> 都要替换为发行包解压后的根目录。

文档给出的成功条件是:命令成功完成后,新构建的原生二进制会出现在相关模块的 build/os/<platform>/ 子目录中,Ghidra 会优先使用这些新构建的二进制,而不是 os/<platform>/ 子目录中已有的预构建二进制。可以用文件检查确认各相关模块下确实生成了 build/os/ 产物。

启动 Ghidra 并按文档排查

构建(或移除隔离属性)完成后,按 GUI 模式启动:

  1. 进入 <GhidraInstallDir>
  2. 运行 ghidraRun(macOS 与 Linux 用 ghidraRun,Windows 用 ghidraRun.bat)。

文档没有给出独立的"启动成功"输出,其判断方式是:启动脚本按上述报错排查一节的描述工作,出现下列错误说明仍未成功,对应处理方式如下:

  • The 'java' command could not be found in your PATH or with JAVA_HOME:系统 PATH 或 JAVA_HOME 指定的目录中缺少 Java 运行时,检查 JDK 是否安装且版本满足要求;
  • Failed to find a supported JDK:启动脚本借助 PATH 或 JAVA_HOME 上的 Java 来寻找受支持的 JDK,当前找到的版本不满足要求,检查版本后重跑;
  • Exited with error. Run in foreground (fg) mode for more details.:Ghidra 在后台启动失败且错误被抑制。把启动脚本中的 LAUNCH_MODE 变量设为 fg 重新在前台运行,或者改用 <GhidraInstallDir>/support/ghidraDebug 脚本以调试模式运行以看到完整错误;文档注明调试模式默认监听 127.0.0.1:18001

限制与注意点

  • Ghidra 的安装路径中包含 ! 字符时不会启动(全平台已知问题,Java 内部库将 ! 用作 jar 分隔符),解压时避开这类路径;
  • 构建路径要求 C/C++ 构建工具链就绪,macOS 上即 Xcode 或 Command Line Tools for Xcode,缺少构建工具时 buildNatives 无法完成;
  • 本文的命令、版本号与目录结构以 GhidraDocs/GettingStarted.md(Ghidra 12.1 口径)为准;如果你安装的是其他发布版本,先核对该版本附带的 Getting Started 文档中 "Installation Notes" 一节,确认 Gatekeeper 处置方式与 Java 版本要求是否一致。

【免费下载链接】ghidra Ghidra is a software reverse engineering (SRE) framework 【免费下载链接】ghidra 项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值