Compare commits
5 Commits
aa8b70931c
...
9d42d525a8
Author | SHA1 | Date |
---|---|---|
|
9d42d525a8 | |
|
26d03f13e2 | |
|
5fb85e43b3 | |
|
bce039f350 | |
|
b1cdaa01d5 |
|
@ -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-enginering/ghidra/build.nix {
|
ghidra = final.callPackage ./pkgs/reverse-engineering/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,4 +65,11 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
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,4 +67,11 @@
|
||||||
"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,16 +21,17 @@ let
|
||||||
platforms = oldMeta.platforms or ghidra.meta.platforms;
|
platforms = oldMeta.platforms or ghidra.meta.platforms;
|
||||||
};
|
};
|
||||||
|
|
||||||
buildGhidraExtension =
|
buildGhidraExtension = lib.extendMkDerivation {
|
||||||
|
constructDrv = stdenv.mkDerivation;
|
||||||
|
extendDrvArgs =
|
||||||
|
finalAttrs:
|
||||||
{
|
{
|
||||||
pname,
|
pname,
|
||||||
nativeBuildInputs ? [ ],
|
nativeBuildInputs ? [ ],
|
||||||
meta ? { },
|
meta ? { },
|
||||||
...
|
...
|
||||||
}@args:
|
}@args:
|
||||||
stdenv.mkDerivation (
|
{
|
||||||
args
|
|
||||||
// {
|
|
||||||
nativeBuildInputs = nativeBuildInputs ++ [
|
nativeBuildInputs = nativeBuildInputs ++ [
|
||||||
unzip
|
unzip
|
||||||
jdk
|
jdk
|
||||||
|
@ -58,22 +59,28 @@ 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 =
|
buildGhidraScripts = lib.extendMkDerivation {
|
||||||
|
constructDrv = stdenv.mkDerivation;
|
||||||
|
extendDrvArgs =
|
||||||
|
finalAttrs:
|
||||||
{
|
{
|
||||||
pname,
|
pname,
|
||||||
meta ? { },
|
meta ? { },
|
||||||
...
|
...
|
||||||
}@args:
|
}@args:
|
||||||
stdenv.mkDerivation (
|
{
|
||||||
args
|
|
||||||
// {
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
|
@ -95,8 +102,8 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = metaCommon meta;
|
meta = metaCommon meta;
|
||||||
}
|
};
|
||||||
);
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit buildGhidraExtension buildGhidraScripts;
|
inherit buildGhidraExtension buildGhidraScripts;
|
||||||
|
|
|
@ -11,11 +11,13 @@ 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 { };
|
||||||
|
|
||||||
|
@ -34,6 +36,4 @@ 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-ghidra";
|
pname = "BinSync";
|
||||||
inherit (python.pkgs.binsync) version;
|
inherit (python.pkgs.binsync) version;
|
||||||
|
|
||||||
src = runCommand "binsync-ghidra-scripts" {
|
src = runCommand "binsync-ghidra-scripts" {
|
||||||
|
@ -37,4 +37,10 @@ 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,
|
||||||
ghidra,
|
buildGhidraExtension,
|
||||||
gradle,
|
gradle,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
}:
|
}:
|
||||||
ghidra.buildGhidraExtension (finalAttrs: {
|
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/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_GnuDisassembler.zip";
|
src = "${ghidra.lib}/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/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_MachineLearning.zip";
|
src = "${ghidra.lib}/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/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_SleighDevTools.zip";
|
src = "${ghidra.lib}/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/ghidra sleighCompile
|
ant -f build.xml -Dghidra.install.dir=${ghidra.lib}/lib/ghidra sleighCompile
|
||||||
popd
|
popd
|
||||||
|
|
||||||
runHook postConfigure
|
runHook postConfigure
|
||||||
|
|
|
@ -29,8 +29,10 @@ 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