You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ghidra反编译二进制文件存在却提示“无此文件或目录”求助

解决Nix系统上Ghidra Decompiler二进制提示"No such file or directory"的问题

我碰到过NixOS上运行预编译二进制的这种坑,明明文件在那、ldd也显示依赖都找到了,却报"No such file or directory"——这几乎都是动态链接器路径不匹配导致的,给你几个具体的解决思路:

1. 确认动态链接器路径问题

预编译的ELF二进制通常会硬编码动态链接器路径(比如你的file输出里的/lib64/ld-linux-x86-64.so.2),但NixOS里这个路径并不存在(真实的链接器在/nix/store的glibc目录下),系统找不到链接器就会误报文件不存在。

你可以用readelf验证这一点:

readelf -l ./ghidra/Ghidra/Features/Decompiler/os/linux64/decompile | grep interpreter

输出应该会显示硬编码的/lib64/ld-linux-x86-64.so.2,而这个路径在NixOS里是无效的。

2. 用patchelf修改动态链接器路径

这是最直接的修复方法,把二进制的链接器路径替换成ldd输出里的真实路径:
从你的ldd结果里,真实的链接器路径是/nix/store/h0p0h3rh1q4i2yavzm3yqi716s9yaj2f-glibc-2.27/lib64/ld-linux-x86-64.so.2,执行命令:

patchelf --set-interpreter /nix/store/h0p0h3rh1q4i2yavzm3yqi716s9yaj2f-glibc-2.27/lib64/ld-linux-x86-64.so.2 ./ghidra/Ghidra/Features/Decompiler/os/linux64/decompile

修改后再尝试运行./decompile,应该就能正常启动了。

3. 直接使用Nixpkgs中的Ghidra包(更省心的方案)

Nixpkgs里已经打包了适配Nix环境的Ghidra,所有依赖和链接器问题都已经处理好了,直接通过nix-shell或者安装就能用:

# 临时进入包含Ghidra的shell环境
nix-shell -p ghidra
# 启动Ghidra
ghidra

这种方式完全不用自己手动处理依赖和二进制补丁,是Nix系统上运行Ghidra的推荐方案。

4. 额外检查:确认二进制执行权限

虽然你能运行ldd和file,但还是可以确认一下二进制有没有执行权限:

ls -l ./ghidra/Ghidra/Features/Decompiler/os/linux64/decompile

如果没有执行权限,执行chmod +x ./ghidra/Ghidra/Features/Decompiler/os/linux64/decompile添加权限即可。

内容的提问来源于stack exchange,提问作者tsm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:47:38