diff --git a/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch b/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch index 22a040ac6249..f88b70781ff7 100644 --- a/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch +++ b/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch @@ -25,10 +25,10 @@ diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugge index 4fa3b9a539..2663aeaeb0 100644 --- a/Ghidra/Debug/Debugger-rmi-trace/build.gradle +++ b/Ghidra/Debug/Debugger-rmi-trace/build.gradle -@@ -19,12 +19,17 @@ apply from: "${rootProject.projectDir}/gradle/helpProject.gradle" - apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle" +@@ -20,12 +20,17 @@ apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle" apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle" apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle" + apply from: "${rootProject.projectDir}/gradle/javadoc.gradle" -apply from: "${rootProject.projectDir}/gradle/hasProtobuf.gradle" apply from: "${rootProject.projectDir}/gradle/hasPythonPackage.gradle" - @@ -45,7 +45,7 @@ index 4fa3b9a539..2663aeaeb0 100644 dependencies { api project(':ProposedUtils') api project(':Pty') -@@ -37,13 +42,10 @@ dependencies { +@@ -38,13 +43,10 @@ dependencies { } task configureGenerateProtoPy { @@ -66,7 +66,7 @@ diff --git a/build.gradle b/build.gradle index 159eb7dd7b..ef4add1ad8 100644 --- a/build.gradle +++ b/build.gradle -@@ -80,6 +80,12 @@ if (flatRepo.isDirectory()) { +@@ -79,6 +79,12 @@ if (flatRepo.isDirectory()) { mavenCentral() flatDir name: "flat", dirs:["$flatRepo"] } @@ -84,7 +84,7 @@ deleted file mode 100644 index a8c176bcbe..0000000000 --- a/gradle/hasProtobuf.gradle +++ /dev/null -@@ -1,98 +0,0 @@ +@@ -1,100 +0,0 @@ -/* ### - * IP: GHIDRA - * @@ -111,38 +111,40 @@ index a8c176bcbe..0000000000 - -def platform = getCurrentPlatformName() - +-def version = getProperty('ghidra.protobuf.java.version') +- - -dependencies { -- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:windows-x86_64@exe' -- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:linux-x86_64@exe' -- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:linux-aarch_64@exe' -- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:osx-x86_64@exe' -- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:osx-aarch_64@exe' +- allProtocArtifacts "com.google.protobuf:protoc:${version}:windows-x86_64@exe" +- allProtocArtifacts "com.google.protobuf:protoc:${version}:linux-x86_64@exe" +- allProtocArtifacts "com.google.protobuf:protoc:${version}:linux-aarch_64@exe" +- allProtocArtifacts "com.google.protobuf:protoc:${version}:osx-x86_64@exe" +- allProtocArtifacts "com.google.protobuf:protoc:${version}:osx-aarch_64@exe" - - if (isCurrentWindows()) { -- protocArtifact 'com.google.protobuf:protoc:3.21.8:windows-x86_64@exe' +- protocArtifact "com.google.protobuf:protoc:${version}:windows-x86_64@exe" - } - if (isCurrentLinux()) { - if (platform.endsWith("x86_64")) { -- protocArtifact 'com.google.protobuf:protoc:3.21.8:linux-x86_64@exe' +- protocArtifact "com.google.protobuf:protoc:${version}:linux-x86_64@exe" - } - else { -- protocArtifact 'com.google.protobuf:protoc:3.21.8:linux-aarch_64@exe' +- protocArtifact "com.google.protobuf:protoc:${version}:linux-aarch_64@exe" - } - } - if (isCurrentMac()) { - if (platform.endsWith("x86_64")) { -- protocArtifact 'com.google.protobuf:protoc:3.21.8:osx-x86_64@exe' +- protocArtifact "com.google.protobuf:protoc:${version}:osx-x86_64@exe" - } - else { -- protocArtifact 'com.google.protobuf:protoc:3.21.8:osx-aarch_64@exe' +- protocArtifact "com.google.protobuf:protoc:${version}:osx-aarch_64@exe" - } - } -} - -/*protobuf { - protoc { -- artifact = 'com.google.protobuf:protoc:3.21.8' +- artifact = 'com.google.protobuf:protoc:${version}' - } -}*/ - diff --git a/pkgs/tools/security/ghidra/0002-Load-nix-extensions.patch b/pkgs/tools/security/ghidra/0002-Load-nix-extensions.patch index 0e87aa71a407..0660759d69f0 100644 --- a/pkgs/tools/security/ghidra/0002-Load-nix-extensions.patch +++ b/pkgs/tools/security/ghidra/0002-Load-nix-extensions.patch @@ -4,8 +4,8 @@ index ea12a661f0..da7779b07f 100644 +++ b/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java @@ -36,6 +36,10 @@ public class ApplicationUtilities { */ - public static Collection findDefaultApplicationRootDirs() { - Collection applicationRootDirs = new ArrayList<>(); + public static SequencedCollection findDefaultApplicationRootDirs() { + List applicationRootDirs = new ArrayList<>(); + String nixGhidraHome = System.getenv("NIX_GHIDRAHOME"); + if (nixGhidraHome != null) { + applicationRootDirs.add(new ResourceFile(nixGhidraHome)); diff --git a/pkgs/tools/security/ghidra/build.nix b/pkgs/tools/security/ghidra/build.nix index 9a84f9c11164..1144cc0ac600 100644 --- a/pkgs/tools/security/ghidra/build.nix +++ b/pkgs/tools/security/ghidra/build.nix @@ -20,7 +20,7 @@ let pkg_path = "$out/lib/ghidra"; pname = "ghidra"; - version = "11.4.2"; + version = "12.0"; isMacArm64 = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64; @@ -30,7 +30,7 @@ let owner = "NationalSecurityAgency"; repo = "Ghidra"; rev = "Ghidra_${version}_build"; - hash = "sha256-/veSp2WuGOF0cYwUC4QFJD6kaMae5NuKrQ5Au4LjDe8="; + hash = "sha256-eDYbvD3Ln7twGCOBQsP8UfWAjyJUO/ofr/oitaEtCu4="; # populate values that require us to use git. By doing this in postFetch we # can delete .git afterwards and maintain better reproducibility of the src. leaveDotGit = true; diff --git a/pkgs/tools/security/ghidra/default.nix b/pkgs/tools/security/ghidra/default.nix index abfd577c1e4b..03e7931b800e 100644 --- a/pkgs/tools/security/ghidra/default.nix +++ b/pkgs/tools/security/ghidra/default.nix @@ -28,11 +28,11 @@ let in stdenv.mkDerivation rec { pname = "ghidra"; - version = "11.4.2"; - versiondate = "20250826"; + version = "12.0"; + versiondate = "20251205"; src = fetchzip { url = "https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_${version}_build/ghidra_${version}_PUBLIC_${versiondate}.zip"; - hash = "sha256-5illpD+kWZfwtN8QpSJFcnsTrOPpvll3zNXR5r5q7jA="; + hash = "sha256-uNFI24UIFfoHjX/xTlr0tuVvesTuf4WkTC9NtVb8UlI="; }; nativeBuildInputs = [ diff --git a/pkgs/tools/security/ghidra/deps.json b/pkgs/tools/security/ghidra/deps.json index a0ef36824e4b..f0f5057041e0 100644 --- a/pkgs/tools/security/ghidra/deps.json +++ b/pkgs/tools/security/ghidra/deps.json @@ -55,9 +55,6 @@ "83/1c/25b79fc3ec99b19b0a0730cc47356f7e2959863bf9f3cd314332bddb4f68/pywin32-306-cp312-cp312-win_amd64": { "whl": "sha256-NyV3lMGtOe6b5lLaBGLcLjlMgVnf2ROopOjrb9NG2g4=" }, - "8d/14/619e24a4c70df2901e1f4dbc50a6291eb63a759172558df326347dce1f0d/protobuf-3.20.3-py2.py3-none-any": { - "whl": "sha256-p8ptSIqo/38ynUxUWy262KwxRk8dixyHrRNGcXcx5Ns=" - }, "8d/e4/0c27352e8222dcc0e3ce44b298015072d2057d08dd353541c980a31d26c9/jpype1-1.5.2-cp312-cp312-macosx_10_9_universal2": { "whl": "sha256-Hh25rJCa0q4OQLBMKqiMsUJQ1SRdaXFVYVB2gfKwiy8=" }, @@ -94,6 +91,9 @@ "ec/1a/610693ac4ee14fcdf2d9bf3c493370e4f2ef7ae2e19217d7a237ff42367d/packaging-23.2-py3-none-any": { "whl": "sha256-jEkRkAM6mvfh2THQtdrMLvR1CbNN0N5n7SCbUgP8iMc=" }, + "ee/01/1ed1d482960a5718fd99c82f6d79120181947cfd4667ec3944d448ed44a3/protobuf-6.31.0-py3-none-any": { + "whl": "sha256-asLoJVboIsF6jSOqEZC7wdBu+5wmGYHalcccnaCeniM=" + }, "fa/4c/e0200a6e3fed5cda79e926c2a8a610676f04948f89d7e38d93c7d4b21be9/jpype1-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64": { "whl": "sha256-mU+3sxm0U/d61Lav8B4N1BgOp0pv5aAx5OnbktvpU3Y=" } @@ -103,42 +103,54 @@ "tar.gz": "sha256-r9wisKblvse2VyN1a5DUTqkR5hsvewHE3FUkq4E7TYk=" } }, - "https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_11.4.2": { - "Debugger/dbgmodel": { + "https://github.com": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/Debugger/dbgmodel": { "tlb": "sha256-jPXzouuBFgqjSQVqXKTCxyaxtumL8wl81BNRRxYzQ8c=" }, - "FunctionID/vs2012_x64": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2012_x64": { "fidb": "sha256-1OmKs/eQuDF5MhhDC7oNiySl+/TaZbDB/6jLDPvrDNw=" }, - "FunctionID/vs2012_x86": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2012_x86": { "fidb": "sha256-pJDtfi7SHlh0Wf6urOcDa37eTOhOcuEN/YxXQ0ppGLY=" }, - "FunctionID/vs2015_x64": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2015_x64": { "fidb": "sha256-4E6eQPnstgHIX02E7Zv2a0U2O+HR6CwWLkyZArjLUI8=" }, - "FunctionID/vs2015_x86": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2015_x86": { "fidb": "sha256-tm7mlmU+LtNlkZ3qrviFEDEgx5LiLnmvcNEgnX4dhkQ=" }, - "FunctionID/vs2017_x64": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2017_x64": { "fidb": "sha256-1fpfaXKYF0+lPSR9NZnmoSiEYFrRgce5VOI4DsHwvYk=" }, - "FunctionID/vs2017_x86": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2017_x86": { "fidb": "sha256-04nLjXb/SlnKNfiRuFIccq1fDfluJTlzotIahhSkzIE=" }, - "FunctionID/vs2019_x64": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2019_x64": { "fidb": "sha256-FQAHeW/DakBpZgrWJEmq2q890Rs4ZKXvIeeYMcnOkRg=" }, - "FunctionID/vs2019_x86": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vs2019_x86": { "fidb": "sha256-62MKNvqlhqNx63NNwLvY0TzK72l/PbWHJZY1jz3SQyo=" }, - "FunctionID/vsOlder_x64": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vsOlder_x64": { "fidb": "sha256-jDtR9GYM0n4aDWEKnz8tX7yDOmasnuQ5PuLySB6FWGY=" }, - "FunctionID/vsOlder_x86": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/FunctionID/vsOlder_x86": { "fidb": "sha256-mGBca2uSFKlF2ETkHIWGDVRkmkW8p4c+9pkcDpNyB4c=" }, - "lib/java-sarif-2.1-modified": { + "NationalSecurityAgency/ghidra-data/raw/Ghidra_12.0/lib/java-sarif-2.1-modified": { "jar": "sha256-f3NlZklHVtJxql5LGvbIncUNB0qxxjdKR9+CImQiawE=" + }, + "Z3Prover/z3/releases/download/z3-4.13.0/z3-4.13.0-arm64-osx-11.0": { + "zip": "sha256-580yXLIhDTskHQ1VF6KTZ3Aw9YwXceGWxFdO+Z3EUWg=" + }, + "Z3Prover/z3/releases/download/z3-4.13.0/z3-4.13.0-x64-glibc-2.31": { + "zip": "sha256-vDGtEkRtfbG9nQrILeyde1EpuLjdbkS1cag6xgENL5s=" + }, + "Z3Prover/z3/releases/download/z3-4.13.0/z3-4.13.0-x64-osx-11.7.10": { + "zip": "sha256-DDPYV099zQQfH05/4wGEDbalJ/hmy3SwtHUYv4BTUC0=" + }, + "Z3Prover/z3/releases/download/z3-4.13.0/z3-4.13.0-x64-win": { + "zip": "sha256-K80UtoSf3erT0LPLZxzJ0TSo7wsdPv8+/X11pbvwDdM=" } }, "https://repo.maven.apache.org/maven2": { @@ -249,19 +261,29 @@ "jar": "sha256-8CqV+hpele2z7YWf0Pt99wnRIaNSkO/4t03OKrf01u0=", "pom": "sha256-N/h3mLGDhRE8kYv6nhJ2/lBzXvj6hJtYAMUZ1U2/Efg=" }, - "com/google/protobuf#protobuf-bom/3.21.8": { - "pom": "sha256-+7Ds/DyjGFddtifjOuRUwT1qTcp68UXRTT9m4IY8PPo=" + "com/google/protobuf#protobuf-bom/3.17.3": { + "pom": "sha256-bf431vImF9VqQUzNrf+NmFhaH3kXEr6HbCYWZxDR2N0=" + }, + "com/google/protobuf#protobuf-bom/4.31.0": { + "pom": "sha256-Y9iGmhie8C2+3XxnN+FsGYa0aYOufQyNG+8s92sz2Ac=" }, "com/google/protobuf#protobuf-gradle-plugin/0.8.18": { "jar": "sha256-RP2JrzepsvHdQcCUqbtzPAe/f8eg4jhooQuvbjUfpeA=", "pom": "sha256-Gwqekab09LYqWmB4wibudwqo3FdnueRzwvwY8KOImAQ=" }, - "com/google/protobuf#protobuf-java/3.21.8": { - "jar": "sha256-C4WBrYENLfrv0Nz78VabFFBEhlAjjX4v1rF2yTLQjJU=", - "pom": "sha256-OJBUBuApx6MYaW8O4RnFXM7HizN+oR5MMZWfDgardAg=" + "com/google/protobuf#protobuf-java/3.17.3": { + "jar": "sha256-SsVJsZJpQUGVgEnwYKHIJqMzQvYZ4QjO2MF9mHf14+0=", + "pom": "sha256-Km8izVJli4uxTBANs+F5NT+MNR0ENzo79voKOzlGStw=" }, - "com/google/protobuf#protobuf-parent/3.21.8": { - "pom": "sha256-bHKyrDl1sAnR5FdQlVnp+onyV4vShD3LTWo+XPgRFws=" + "com/google/protobuf#protobuf-java/4.31.0": { + "jar": "sha256-aHc9zNbMWDWvenSHWc7PXqIP8IMTbjhH++lFcrjg7Wo=", + "pom": "sha256-aElbKMVNzVwyTQxRb7igjQoaJWvNrIFIN+ciYfEqCdM=" + }, + "com/google/protobuf#protobuf-parent/3.17.3": { + "pom": "sha256-T09Q5moqvM/o7SCbU/q3C4k+NfQ77FqB98GESbY+hrE=" + }, + "com/google/protobuf#protobuf-parent/4.31.0": { + "pom": "sha256-H1mhQuar05Jar9Fo25tU0QhP7MhPW4DU3jVPrJ4I/Lg=" }, "com/h2database#h2/2.2.220": { "jar": "sha256-l4q4YwGNP5ZeOIgFccNik+qLEKgIYZQVnE1dILUPClc=",