diff --git a/pkgs/tools/security/ghidra/default.nix b/pkgs/tools/security/ghidra/default.nix new file mode 100644 index 00000000000..1b62741f2a5 --- /dev/null +++ b/pkgs/tools/security/ghidra/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchurl, unzip, lib, makeWrapper, patchelf +, openjdk11, pam +}: let + + pkg_path = "$out/lib/ghidra"; + +in stdenv.mkDerivation { + + name = "ghidra-9.0"; + + src = fetchurl { + url = https://ghidra-sre.org/ghidra_9.0_PUBLIC_20190228.zip; + sha256 = "3b65d29024b9decdbb1148b12fe87bcb7f3a6a56ff38475f5dc9dd1cfc7fd6b2"; + }; + + nativeBuildInputs = [ + makeWrapper + patchelf + unzip + ]; + + dontStrip = true; + + postPatch = '' + for f in Ghidra/Features/Decompiler/os/linux64/* GPL/DemanglerGnu/os/linux64/*; do + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" "$f" + done + + for f in Ghidra/Features/GhidraServer/os/linux64/*; do + patchelf --set-rpath "${stdenv.cc.libc}/lib:${pam}/lib" "$f" + done + ''; + + installPhase = '' + mkdir -p "${pkg_path}" + cp -a * "${pkg_path}" + ''; + + postFixup = '' + mkdir -p "$out/bin" + makeWrapper "${pkg_path}/ghidraRun" "$out/bin/ghidra" \ + --prefix PATH : ${lib.makeBinPath [ openjdk11 ]} + ''; + + meta = with lib; { + description = "A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission"; + homepage = "https://ghidra-sre.org/"; + platforms = [ "x86_64-linux" ]; + license = licenses.asl20; + maintainers = [ maintainers.ck3d ]; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 696bc52e4de..4d029b659a1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1447,6 +1447,8 @@ in gh-ost = callPackage ../tools/misc/gh-ost { }; + ghidra-bin = callPackage ../tools/security/ghidra { }; + gif-for-cli = callPackage ../tools/misc/gif-for-cli { }; gist = callPackage ../tools/text/gist { };