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

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

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

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

工具目录

分类

查看所有分类
Loading categories
ghidra — Ghidra 是一个软件逆向工程(SRE)框架 | Kitploit
工具/GitHubGitHub/nationalsecurityagency/ghidra
静态分析动态分析 (沙盒)漏洞利用框架漏洞分析逆向工程脚本与自动化调试器恶意软件分析二进制分析学习与教育固件分析
GitHub
71.1k7.8k2天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
nationalsecurityagency/ghidra

ghidra

Ghidra 是一个软件逆向工程(SRE)框架

查看仓库网站

Dockerized Ghidra

构建

在 Ghidra 版本目录的根目录下运行以下命令。

root@kitploit:~
./docker/build-docker-image.sh

这将构建一个 Ghidra Docker 镜像,其标签与 Ghidra 的发布版本相对应。

MODE 环境变量

Ghidra Docker 容器支持以下执行 MODE:

  • gui
  • headless
  • ghidra-server
  • bsim
  • bsim-server
  • pyghidra

MODE 环境变量指定执行 Ghidra 的哪个入口点。

entrypoint.sh 脚本在容器启动时执行。

配置容器

容器的配置方法与任何其他 Docker 容器相同。 可以挂载卷、设置环境变量、将端口从容器映射到主机等。 配置步骤根据容器启动时的 MODE 有很大差异。

Ghidra 在容器中的基础目录位于 /ghidra。 Ghidra 的所有文件、配置等的默认位置都在该目录内。 Ghidra 以用户 ghidra 的身份在容器中运行,uid 为 1001,guid 为 1001。

ghidra 用户仅拥有以下容器内目录的权限:

  • /ghidra
  • /home/ghidra

当容器没有通过 docker run 命令传入任何参数时, 所执行 MODE 对应的命令行界面(CLI)将显示其使用说明。

将本地卷映射到容器

如果卷不能被组 id 1001 中的用户访问,容器中的卷可能会遇到权限问题。

容器的默认 uid 和 guid 是 1001:1001。映射到容器的卷应可由该 uid/guid 访问。

将主机上的用户添加到主机上的组 1001 有助于管理将在容器中使用的卷。 在 Linux 上可以通过执行 sudo usermod -aG 1001 <user> 轻松完成。

无头模式示例

root@kitploit:~
docker run \
    --env MODE=headless \
    --rm \
    --volume /path/to/myproject:/home/ghidra/myproject \
    --volume /path/to/mybinary:/home/ghidra/mybinary \
    ghidra/ghidra:<version> \
    /home/ghidra/myproject programFolder -import /home/ghidra/mybinary

逐行分解:

  • docker run 将启动一个使用镜像 ghidra/ghidra<:<version> 的 Docker 容器
  • --env MODE=headless 将容器内的环境变量 MODE 配置为值 headless
  • --rm 在命令完成后删除容器
  • --volume /path/to/myproject:/home/ghidra/myproject 将主机上的本地卷 /path/to/myproject 挂载到容器内的 /home/ghidra/myproject
  • --volume /path/to/mybinary:/home/ghidra/mybinary 将主机上的本地卷 /path/to/mybinary 挂载到容器内的 /home/ghidra/mybinary
  • ghidra/ghidra:<version> 是 Docker 镜像的完整引用,其中 是镜像的组和名称, 是标签。

不传递任何参数将显示无头分析器的使用说明。

主机上的 /path/to/myproject 必须可由 guid 1001 以 rwx 权限访问。

GUI 模式示例

不建议在 Docker 容器中运行 Ghidra 的图形用户界面(GUI)。 GUI 不是 Docker 化应用程序的典型使用场景。

root@kitploit:~
docker run \
    --env MODE=gui \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume "$HOME/.Xauthority:/home/ghidra/.Xauthority" \
    ghidra/ghidra:<version>

在此模式下,容器依赖 X11 转发来显示 GUI。X11 的配置可能有所不同,但在此示例中, 主机的 Xauthority 文件被挂载到容器中,容器被配置为使用主机的网络,并且 DISPLAY 环境变量被传递到容器中。这使得 GUI 能够转发回主机显示。包含二进制文件的卷以及 Ghidra 项目的卷仍然需要挂载到容器中。

主机的 .Xauthority 文件必须具有合适的权限——分配给组 :1001,并具有 rw 组权限。

Ghidra 服务器模式示例

root@kitploit:~
docker run \
    --env MODE=ghidra-server \
    --rm \
    -it \
    --volume /path/to/my/repositories:/ghidra/repositories \
    --volume /path/to/my/configs/server.conf:/ghidra/server/server.conf \
    -p 13100:13100 \
    -p 13101:13101 \
    -p 13102:13102 \
    ghidra/ghidra:<version>

需要将卷挂载到服务器容器中以保存存储库、用户以及配置服务器。

要使用 svrAdmin,请 exec 进入正在运行的 Ghidra 服务器容器(docker exec -it <container-id> bash)以获得容器内的 bash shell。 在 exec 进入容器后,Ghidra 服务器的管理和操作与容器化环境之外相同。

要停止容器,执行命令 docker stop <container-id>。

注意:从主机映射到 Docker 容器的端口必须匹配。你可以在 server.conf 文件中使用 -p<port> 选项更改默认的基础服务器端口(例如 13100)。

BSIM 服务器模式示例

root@kitploit:~
docker run \
    --env MODE=bsim-server \
    --rm \
    -it \
    --volume /path/to/my/datadir:/ghidra/bsim_datadir \
    -p 5432:5432 \
    ghidra/ghidra:<version> \
    /ghidra/bsim_datadir

/ghidra/bsim_datadir 是容器中用于存储 bsim 数据的目录。也可以使用容器中的其他目录, 但请确保主机上的文件夹具有合适的权限,并分配给组 :1001。

此示例仅启动了一个 bsim 服务器。配置 bsim 服务器并向其中填充数据 可以在启动后通过容器内执行(与 Ghidra 服务器管理类似)来完成。 管理员必须 exec 进入正在运行的 bsim 服务器容器(docker exec -it <container-id> bash), 在 exec 进入容器后,Bsim 服务器的管理和操作与容器化环境之外相同。

要停止容器,执行命令 docker stop <container-id>。

BSIM CLI 模式示例

root@kitploit:~
docker run \
		--env MODE=bsim \
		--rm \
		 -it \
		 ghidra/ghidra:<version> \
		 generatesigs ghidra://ghidrasvr/demo /home/ghidra \
			 --bsim postgresql://bsimsvr/demo \
			 --commit --overwrite \
			 --user ghidra

在此示例中,bsim CLI 用于连接托管在 ghidrasvr 上的 Ghidra 服务器, 为那个 Ghidra 服务器中的 demo 存储库生成签名并将其保存到 /home/ghidra, 然后将签名提交到托管在 bsimsvr 上的 BSIM 服务器中的 demo 数据库。

Pyghidra GUI 模式示例

不建议在 Docker 容器中运行 Ghidra 的图形用户界面(GUI)。 GUI 不是 Docker 化应用程序的典型使用场景。

root@kitploit:~
docker run \
    --env MODE=pyghidra \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume="$HOME/.Xauthority:/home/ghidra/.Xauthority:rw" \
    ghidra/ghidra:<version> -c

在此模式下,容器依赖 X11 转发来显示 GUI。X11 的配置可能有所不同,但在此示例中, 主机的 Xauthority 文件被挂载到容器中,容器被配置为使用主机的网络,并且 DISPLAY 环境变量被传递到容器中。这使得 GUI 能够转发回主机显示。包含二进制文件的卷以及 Ghidra 项目的卷仍然需要挂载到容器中。

主机的 .Xauthority 文件必须具有合适的权限——由 :1001 拥有,并具有 rw 组权限。

Pyghidra 无头模式示例

root@kitploit:~
docker run \
    --env MODE=pyghidra \
    --rm \
    --volume /path/to/myproject:/myproject \
    --volume /path/to/mybinary:/mybinary \
    ghidra/ghidra:<version> -H \
    /myproject programFolder -import /mybinary

不向 pyghidra 无头分析器传递任何参数将显示帮助菜单,就像无头分析器一样。

这个用例与无头模式的示例非常相似,但额外的好处是能够使用 Python3 编写 Ghidra 脚本。

同样,在此示例中,/path/to/myproject 和 /path/to/mybinary 需要具有合适的权限和组分配,以避免出现权限问题。

下载工具
ghidra/ghidra
<version>
  • /home/ghidra/myproject programFolder -import /home/ghidra/mybinary 是传递给 Ghidra 无头分析器命令行的参数