Compare commits
No commits in common. "9d42d525a8529d1d56e7eb6b52b6d79071e26a5a" and "aa8b70931cd70cb2b98e5d12677b28ef2bb18ee1" have entirely different histories.
9d42d525a8
...
aa8b70931c
|
@ -10,7 +10,7 @@ final: prev: {
|
||||||
ghidra_headless = final.ghidra.lib;
|
ghidra_headless = final.ghidra.lib;
|
||||||
|
|
||||||
# stuff that tracks upstream
|
# stuff that tracks upstream
|
||||||
ghidra = final.callPackage ./pkgs/reverse-engineering/ghidra/build.nix {
|
ghidra = final.callPackage ./pkgs/reverse-enginering/ghidra/build.nix {
|
||||||
protobuf = final.protobuf_21;
|
protobuf = final.protobuf_21;
|
||||||
};
|
};
|
||||||
ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/reverse-engineering/ghidra/extensions.nix { });
|
ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/reverse-engineering/ghidra/extensions.nix { });
|
||||||
|
|
|
@ -65,11 +65,4 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
pythonImportsCheck = [ "binsync" ];
|
pythonImportsCheck = [ "binsync" ];
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Reversing plugin for cross-decompiler collaboration, built on git";
|
|
||||||
homepage = "https://github.com/binsync/binsync";
|
|
||||||
changelog = "https://github.com/binsync/binsync/releases/tag/${src.tag}";
|
|
||||||
license = lib.licenses.bsd2;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,11 +67,4 @@
|
||||||
"tests/test_decompilers.py"
|
"tests/test_decompilers.py"
|
||||||
"tests/test_remote_ghidra.py"
|
"tests/test_remote_ghidra.py"
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Library for writing plugins in any decompiler: includes API lifting, common data formatting, and GUI abstraction";
|
|
||||||
homepage = "https://github.com/binsync/libbs";
|
|
||||||
changelog = "https://github.com/binsync/libbs/releases/tag/${src.tag}";
|
|
||||||
license = lib.licenses.bsd2;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,17 +21,16 @@ let
|
||||||
platforms = oldMeta.platforms or ghidra.meta.platforms;
|
platforms = oldMeta.platforms or ghidra.meta.platforms;
|
||||||
};
|
};
|
||||||
|
|
||||||
buildGhidraExtension = lib.extendMkDerivation {
|
buildGhidraExtension =
|
||||||
constructDrv = stdenv.mkDerivation;
|
|
||||||
extendDrvArgs =
|
|
||||||
finalAttrs:
|
|
||||||
{
|
{
|
||||||
pname,
|
pname,
|
||||||
nativeBuildInputs ? [ ],
|
nativeBuildInputs ? [ ],
|
||||||
meta ? { },
|
meta ? { },
|
||||||
...
|
...
|
||||||
}@args:
|
}@args:
|
||||||
{
|
stdenv.mkDerivation (
|
||||||
|
args
|
||||||
|
// {
|
||||||
nativeBuildInputs = nativeBuildInputs ++ [
|
nativeBuildInputs = nativeBuildInputs ++ [
|
||||||
unzip
|
unzip
|
||||||
jdk
|
jdk
|
||||||
|
@ -59,28 +58,22 @@ let
|
||||||
mkdir -p $out/lib/ghidra/Ghidra/Extensions
|
mkdir -p $out/lib/ghidra/Ghidra/Extensions
|
||||||
unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip
|
unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip
|
||||||
|
|
||||||
# Prevent attempted creation of plugin lock files in the Nix store.
|
|
||||||
for i in $out/lib/ghidra/Ghidra/Extensions/*; do
|
|
||||||
touch "$i/.dbDirLock"
|
|
||||||
done
|
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = metaCommon meta;
|
meta = metaCommon meta;
|
||||||
};
|
}
|
||||||
};
|
);
|
||||||
|
|
||||||
buildGhidraScripts = lib.extendMkDerivation {
|
buildGhidraScripts =
|
||||||
constructDrv = stdenv.mkDerivation;
|
|
||||||
extendDrvArgs =
|
|
||||||
finalAttrs:
|
|
||||||
{
|
{
|
||||||
pname,
|
pname,
|
||||||
meta ? { },
|
meta ? { },
|
||||||
...
|
...
|
||||||
}@args:
|
}@args:
|
||||||
{
|
stdenv.mkDerivation (
|
||||||
|
args
|
||||||
|
// {
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
|
@ -102,8 +95,8 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = metaCommon meta;
|
meta = metaCommon meta;
|
||||||
};
|
}
|
||||||
};
|
);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit buildGhidraExtension buildGhidraScripts;
|
inherit buildGhidraExtension buildGhidraScripts;
|
||||||
|
|
|
@ -11,13 +11,11 @@ lib.makeScope newScope (self: {
|
||||||
buildGhidraScripts
|
buildGhidraScripts
|
||||||
;
|
;
|
||||||
|
|
||||||
binsync = self.callPackage ./extensions/binsync {};
|
|
||||||
|
|
||||||
findcrypt = self.callPackage ./extensions/findcrypt { };
|
findcrypt = self.callPackage ./extensions/findcrypt { };
|
||||||
|
|
||||||
ghidra-delinker-extension = self.callPackage ./extensions/ghidra-delinker-extension { };
|
ghidra-delinker-extension = self.callPackage ./extensions/ghidra-delinker-extension {
|
||||||
|
inherit ghidra;
|
||||||
ghidra-firmware-utils = self.callPackage ./extensions/ghidra-firmware-utils { };
|
};
|
||||||
|
|
||||||
ghidra-golanganalyzerextension = self.callPackage ./extensions/ghidra-golanganalyzerextension { };
|
ghidra-golanganalyzerextension = self.callPackage ./extensions/ghidra-golanganalyzerextension { };
|
||||||
|
|
||||||
|
@ -36,4 +34,6 @@ lib.makeScope newScope (self: {
|
||||||
sleighdevtools = self.callPackage ./extensions/sleighdevtools { inherit ghidra; };
|
sleighdevtools = self.callPackage ./extensions/sleighdevtools { inherit ghidra; };
|
||||||
|
|
||||||
wasm = self.callPackage ./extensions/wasm { inherit ghidra; };
|
wasm = self.callPackage ./extensions/wasm { inherit ghidra; };
|
||||||
|
|
||||||
|
binsync = self.callPackage ./extensions/binsync {};
|
||||||
})
|
})
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
binsync
|
binsync
|
||||||
] ++ binsync.optional-dependencies.ghidra));
|
] ++ binsync.optional-dependencies.ghidra));
|
||||||
in buildGhidraScripts {
|
in buildGhidraScripts {
|
||||||
pname = "BinSync";
|
pname = "binsync-ghidra";
|
||||||
inherit (python.pkgs.binsync) version;
|
inherit (python.pkgs.binsync) version;
|
||||||
|
|
||||||
src = runCommand "binsync-ghidra-scripts" {
|
src = runCommand "binsync-ghidra-scripts" {
|
||||||
|
@ -37,10 +37,4 @@ in buildGhidraScripts {
|
||||||
--replace-fail 'plugin_command = "binsync -s ghidra"' \
|
--replace-fail 'plugin_command = "binsync -s ghidra"' \
|
||||||
'plugin_command = "${lib.getExe' binsync_env "binsync"} -s ghidra"'
|
'plugin_command = "${lib.getExe' binsync_env "binsync"} -s ghidra"'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Reversing plugin for cross-decompiler collaboration, built on git";
|
|
||||||
homepage = "https://github.com/binsync/binsync";
|
|
||||||
license = lib.licenses.bsd2;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
buildGhidraExtension,
|
ghidra,
|
||||||
gradle,
|
gradle,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
}:
|
}:
|
||||||
buildGhidraExtension (finalAttrs: {
|
ghidra.buildGhidraExtension (finalAttrs: {
|
||||||
pname = "ghidra-delinker-extension";
|
pname = "ghidra-delinker-extension";
|
||||||
version = "0.5.1";
|
version = "0.5.1";
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ buildGhidraExtension {
|
||||||
pname = "gnudisassembler";
|
pname = "gnudisassembler";
|
||||||
version = lib.getVersion ghidra;
|
version = lib.getVersion ghidra;
|
||||||
|
|
||||||
src = "${ghidra.lib}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_GnuDisassembler.zip";
|
src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_GnuDisassembler.zip";
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
ln -s ${binutils-src} binutils-${binutils-version}.tar.bz2
|
ln -s ${binutils-src} binutils-${binutils-version}.tar.bz2
|
||||||
|
|
|
@ -8,7 +8,7 @@ buildGhidraExtension {
|
||||||
pname = "machinelearning";
|
pname = "machinelearning";
|
||||||
version = lib.getVersion ghidra;
|
version = lib.getVersion ghidra;
|
||||||
|
|
||||||
src = "${ghidra.lib}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_MachineLearning.zip";
|
src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_MachineLearning.zip";
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
|
|
||||||
# Built as part ghidra
|
# Built as part ghidra
|
||||||
|
|
|
@ -9,7 +9,7 @@ buildGhidraExtension {
|
||||||
pname = "sleighdevtools";
|
pname = "sleighdevtools";
|
||||||
version = lib.getVersion ghidra;
|
version = lib.getVersion ghidra;
|
||||||
|
|
||||||
src = "${ghidra.lib}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_SleighDevTools.zip";
|
src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_SleighDevTools.zip";
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
|
|
||||||
# Built as part ghidra
|
# Built as part ghidra
|
||||||
|
|
|
@ -23,7 +23,7 @@ buildGhidraExtension (finalAttrs: {
|
||||||
|
|
||||||
# this doesn't really compile, it compresses sinc into sla
|
# this doesn't really compile, it compresses sinc into sla
|
||||||
pushd data
|
pushd data
|
||||||
ant -f build.xml -Dghidra.install.dir=${ghidra.lib}/lib/ghidra sleighCompile
|
ant -f build.xml -Dghidra.install.dir=${ghidra}/lib/ghidra sleighCompile
|
||||||
popd
|
popd
|
||||||
|
|
||||||
runHook postConfigure
|
runHook postConfigure
|
||||||
|
|
|
@ -29,10 +29,8 @@ let
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
makeBinaryWrapper
|
makeBinaryWrapper
|
||||||
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
|
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
|
||||||
postBuild = ''
|
postBuild =
|
||||||
# Prevent attempted creation of plugin lock files in the Nix store.
|
''
|
||||||
touch $out/lib/ghidra/Ghidra/.dbDirLock
|
|
||||||
|
|
||||||
makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \
|
makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \
|
||||||
--set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra"
|
--set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra"
|
||||||
makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \
|
makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \
|
||||||
|
|
Loading…
Reference in New Issue