add: ghidra (#13419)

This commit is contained in:
Jan
2026-06-29 22:45:44 +02:00
committed by GitHub
parent 8289cbaab7
commit 75d3cad1e0
5 changed files with 213 additions and 0 deletions
@@ -0,0 +1,23 @@
From 62997595c884f3ff35903a6c1ae864b5a7735301 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Sun, 28 Jun 2026 17:40:10 +0200
Subject: [PATCH] Enabling support for Python 3.15
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
Ghidra/application.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Ghidra/application.properties b/Ghidra/application.properties
index 5b99998751..0f8a9f1096 100644
--- a/Ghidra/application.properties
+++ b/Ghidra/application.properties
@@ -7,4 +7,4 @@ application.gradle.max=
application.java.min=21
application.java.max=
application.java.compiler=21
-application.python.supported=3.14, 3.13, 3.12, 3.11, 3.10, 3.9
+application.python.supported=3.15, 3.14, 3.13, 3.12, 3.11, 3.10, 3.9
--
2.54.0
+6
View File
@@ -0,0 +1,6 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "ghidra.spec"
}
}
+10
View File
@@ -0,0 +1,10 @@
[Desktop Entry]
Version=1.0
Type=Application
Icon=ghidra
Exec=ghidra
Name=Ghidra
Comment=A software reverse engineering (SRE) suite of tools
Terminal=false
StartupNotify=false
Categories=Development;
+149
View File
@@ -0,0 +1,149 @@
%global debug_package %{nil}
%global yajsw_ver 13.18
%global pydev_ver 9.3.0
%global cdt_ver 8.6.0
%global cdt_short_ver %{expand:%(v=%{cdt_ver}; echo ${v%.*})}
%global sarif_ver 2.1
%global z3_ver 4.13.0
%global z3_glibc 2.31
%global ghidra_dir ghidra-Ghidra_%{version}_build
%global dep_dir %{ghidra_dir}/dependencies
%global flat_repo_dir %{dep_dir}/flatRepo
%global fid_dir %{dep_dir}/fidb
%global jre_ver 25
Name: ghidra
Version: 12.1.2
%global short_version %{version}
Release: 1%{?dist}
Summary: a software reverse engineering (SRE) framework
Packager: Jan200101 <sentrycraft123@gmail.com>
License: Apache 2.0
URL: https://ghidra-sre.org/
Source0: https://github.com/NationalSecurityAgency/ghidra/archive/Ghidra_%{version}_build.tar.gz
Source1: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android4me/AXMLPrinter2.jar
Source2: https://sourceforge.net/projects/yajsw/files/yajsw/yajsw-stable-%{yajsw_ver}/yajsw-stable-%{yajsw_ver}.zip
Source3: https://sourceforge.net/projects/pydev/files/pydev/PyDev%20%{pydev_ver}/PyDev%20%{pydev_ver}.zip#/PyDev-%{pydev_ver}.zip
Source4: https://archive.eclipse.org/tools/cdt/releases/%{cdt_short_ver}/cdt-%{cdt_ver}.zip
Source5: https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_%{version}/lib/java-sarif-%{sarif_ver}-modified.jar
Source6: https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_%{version}/Debugger/dbgmodel.tlb#/dbgmodel_%{version}.tlb
Source7: https://github.com/Z3Prover/z3/releases/download/z3-%{z3_ver}/z3-%{z3_ver}-x64-glibc-%{z3_glibc}.zip
Source8: ghidra.desktop
Patch0: 0001-Enabling-support-for-Python-3.15.patch
Requires: (java-%{jre_ver}-openjdk or temurin-%{jre_ver}-jdk)
BuildRequires: java-%{jre_ver}-openjdk-devel
BuildRequires: java-%{jre_ver}-openjdk-headless
BuildRequires: gradle
BuildRequires: gcc gcc-c++
BuildRequires: bison flex
BuildRequires: desktop-file-utils
BuildRequires: python3-pip
BuildRequires: python3-devel
BuildRequires: python-wheel0.37-wheel
BuildRequires: python-setuptools-wheel
BuildRequires: ImageMagick
ExclusiveArch: x86_64
%description
Ghidra is a software reverse engineering (SRE) framework developed
by NSA's Research Directorate for NSA's cybersecurity mission. It
helps analyze malicious code and malware like viruses, and can give
cybersecurity professionals a better understanding of potential
vulnerabilities in their networks and systems.
%package server
Summary: Ghidra Server
Requires: %{name}%{?_isa} = %{version}
%description server
Ghidra Server
%package docs
Summary: Ghidra Documentation
Requires: %{name}%{?_isa} = %{version}
%description docs
Ghidra Documentation
%prep
%setup -q -c %{name}-%{version} -a 3 -a 7
pushd %{ghidra_dir}
%patch -P0 -p1
popd
mkdir -p %{dep_dir}/{GhidraDev,GhidraServer,Debugger-agent-dbgeng} %{flat_repo_dir} %{fid_dir}
mkdir -p %{dep_dir}/SymbolicSummaryZ3/os/linux_x86_64
cp "%{SOURCE1}" "%{flat_repo_dir}"
cp "%{SOURCE2}" "%{dep_dir}/GhidraServer"
cp "%{SOURCE3}" "%{dep_dir}/GhidraDev"
cp "%{SOURCE4}" "%{dep_dir}/GhidraDev"
cp "%{SOURCE5}" "%{flat_repo_dir}"
cp "%{SOURCE6}" "%{dep_dir}/Debugger-agent-dbgeng/dbgmodel.tlb"
cp z3-%{z3_ver}-x64-glibc-%{z3_glibc}/bin/*.jar "%{flat_repo_dir}"
cp z3-%{z3_ver}-x64-glibc-%{z3_glibc}/bin/libz3*.so "%{dep_dir}/SymbolicSummaryZ3/os/linux_x86_64"
mkdir -p "%{dep_dir}/Debugger-rmi-trace"
cp %{python_wheel_dir}/setuptools-*-py3-none-any.whl "%{dep_dir}/Debugger-rmi-trace"
cp %{python_wheel_dir}/wheel-*-none-any.whl "%{dep_dir}/Debugger-rmi-trace"
%build
cd %{ghidra_dir}
gradle --no-daemon --parallel \
buildGhidra \
-x buildPyPackage
%install
mkdir -p %{buildroot}/%{_libdir}/%{name}/ %{buildroot}/%{_bindir}/
unzip %{ghidra_dir}/build/dist/ghidra_%{short_version}_DEV_%{lua: print(os.date("%Y%m%d"))}_linux*.zip
cp -r ghidra_%{short_version}_DEV/* %{buildroot}/%{_libdir}/%{name}
ln -s %{_libdir}/%{name}/ghidraRun %{buildroot}/%{_bindir}/%{name}
ln -s %{_libdir}/%{name}/server/ghidraSvr %{buildroot}/%{_bindir}/%{name}-server
ln -s %{_libdir}/%{name}/server/svrAdmin %{buildroot}/%{_bindir}/%{name}-server-admin
ln -s %{_libdir}/%{name}/server/svrInstall %{buildroot}/%{_bindir}/%{name}-server-install
ln -s %{_libdir}/%{name}/server/svrUninstall %{buildroot}/%{_bindir}/%{name}-server-uninstall
for size in 16 24 32 48 64 128 256; do
mkdir -p "%{buildroot}/%{_hicolordir}/${size}x${size}/apps"
convert \
"%{ghidra_dir}/Ghidra/RuntimeScripts/Windows/support/ghidra.ico" \
-thumbnail 256x256 \
-alpha on \
-background none \
-flatten \
"%{buildroot}/%{_datadir}/icons/hicolor/${size}x${size}/apps/ghidra.png"
done
%desktop_file_install %{SOURCE8}
%files
%{_bindir}/%{name}
%{_libdir}/%{name}/
%{_appsdir}/ghidra.desktop
%{_hicolordir}/*/apps/ghidra.png
%license %{ghidra_dir}/LICENSE
%files server
%{_bindir}/%{name}-server
%{_bindir}/%{name}-server-admin
%{_bindir}/%{name}-server-install
%{_bindir}/%{name}-server-uninstall
%{_libdir}/%{name}/server/
%files docs
%{_libdir}/%{name}/docs/
%changelog
* Sun Jun 28 2026 Jan200101 <sentrycraft123@gmail.com>
- Initial package
+25
View File
@@ -0,0 +1,25 @@
let tag = gh_tag("NationalSecurityAgency/ghidra");
let v = find(`Ghidra_([\d.]+)_build`, tag, 1);
rpm.version(v);
if rpm.changed() {
let rawfile = gh_rawfile("NationalSecurityAgency/ghidra", tag, "gradle/support/fetchDependencies.gradle");
let yajsw_ver = find(`yajsw-stable-([\d.]+)\.zip`, rawfile, 1);
rpm.global("yajsw_ver", yajsw_ver);
let pydev_ver = find(`PyDev ([\d.]+)\.zip`, rawfile, 1);
rpm.global("pydev_ver", pydev_ver);
let cdt_ver = find(`cdt-([\d.]+)\.zip`, rawfile, 1);
rpm.global("cdt_ver", cdt_ver);
let sarif_ver = find(`java-sarif-([\d.]+)-modified\.jar`, rawfile, 1);
rpm.global("sarif_ver", sarif_ver);
let z3_ver = find(`Z3_VER = "([\d.]+)"`, rawfile, 1);
rpm.global("z3_ver", z3_ver);
let z3_glibc = find(`Z3_X64_GLIBC_VER = "([\d.]+)"`, rawfile, 1);
rpm.global("z3_glibc", z3_glibc);
}