From 584f31b954b0de3bbfeff5e424b53ebd69e780f2 Mon Sep 17 00:00:00 2001 From: blshkv Date: Sat, 6 Apr 2019 16:02:22 +0800 Subject: [PATCH] ghidra-9.0.2: a new RCE tool from NSA. Use with care --- dev-util/ghidra/Manifest | 7 ++ dev-util/ghidra/files/repos.gradle | 7 ++ dev-util/ghidra/ghidra-9.0.2.ebuild | 84 +++++++++++++++++++ .../base/package.accept_keywords/dev-java | 4 + 4 files changed, 102 insertions(+) create mode 100644 dev-util/ghidra/Manifest create mode 100644 dev-util/ghidra/files/repos.gradle create mode 100644 dev-util/ghidra/ghidra-9.0.2.ebuild diff --git a/dev-util/ghidra/Manifest b/dev-util/ghidra/Manifest new file mode 100644 index 000000000..43f0ce78f --- /dev/null +++ b/dev-util/ghidra/Manifest @@ -0,0 +1,7 @@ +DIST AXMLPrinter2.jar 24552 BLAKE2B 3ff09da948c2962919927ad35f8d38a13391c763a83962f8fdce90ec4720430b00be891f68fc149f62180ddf5f5e818af4e6b6a153d1a55e871f181e930d2b7b SHA512 c1168ec913f1fbb0675915d4fd865ec9a8e8573f6c8aedcb6e68166f61f11aeaececc7548d54d78134843c0102c57d6350973f6d3027d0ffdae52a5c57a7f601 +DIST Ghidra_9.0.2_build.tar.gz 59223111 BLAKE2B d630122a66bac1933ff76a7913970e4b17845f8d4c47ab0fa8b62115737725e6cbc5ddbb14d1afb5e06bca43ac6674223953935d0fd9149c0a7f938d8130cd88 SHA512 5f05efae03ee25f83527c9659669d813d39d9700685a41f4f29297444c5d8d71f98769a125fa65a7cd877d5c29240681b35f5a688e5283b9cdd97d06f214256f +DIST dex-tools-2.0.zip 2362460 BLAKE2B 464f2a143f1c8720eddd4d1c7db5a6f681db1091518d915b0d7807c12d021c8a734d8980bccfd417bc60297647b33ed0b7cc1e004716804bb9e25ee99f29f8ad SHA512 c4a6c72ea09b58a44fcb8918cfada600467f10f99a02b53d2436ac68295e73c8daf9ba0a8bc7160ba1e28e87f032ee034435ebe40af35b6e2fe9fa4607581358 +DIST ghidra-9.0.2-gradle-cache.tar.gz 56009235 BLAKE2B 0a77d49a3d2a0fefbb092889a366ba675e5962bc7260e108ad6613721026d4ace9e1e136bd1b9afa61d0ef1fbb1e58db1bab3de66f066ea0560bc23d9f0d78b1 SHA512 c826f172f180c55036dbc79898e5edfe5553cbfd5c4e47771a64e58eac671a80f36894fd95e5368c18b0f3ad5f304e1311e3da5d4ab8e1c6c2dc5e5abbe464eb +DIST hfsexplorer-0_21-bin.zip 1473278 BLAKE2B e9d2a3fae4da8046a17ce5e6828b4d1ff27da6384aac4be3864fe2c16f83bb95cb728eaeec9a42c3e1febaef98ba9357bfc3744b4950deb4b783d36e723d6cc0 SHA512 b85b4316115695acc78cc7c675c673058c05a238451562be0c6a48b2d11a28e5645a42cb62cdf063be015369df26201dfab6cf2e60f39e6468d1d53b23f94415 +DIST jython-standalone-2.7.1.jar 41135585 BLAKE2B b3597505c43401d03323a59e4f4469e07ec6d3088727d64557c9b432d02a8220c3a3ace9a58acf494e53cca4846ffc0f2be90bbb4562309fd0a469592212472e SHA512 4824d43a3991c68c837d3f9ab7bab4144cc129da75a3d15e1fd6a54e6b941c469e76ee7827c619a10546361b44c5f146595019b7341689cb9631fdfa159c9931 +DIST yajsw-stable-12.12.zip 25051676 BLAKE2B b0deae56e2dbde49271f1a31188edba74001193071b1d12d6c000db7883489faab290f2b2dcb47a10d6fa9a447a93d319ea4a3edd864095834dba280e44eaec6 SHA512 0ff5a228ae1c5251c8ba59f9bcd9b4a199b0caaf688f6eccba42c3d227784d8f56f9164b2fad73fc173ec314340c036144123ce152fe911013df5598bd708944 diff --git a/dev-util/ghidra/files/repos.gradle b/dev-util/ghidra/files/repos.gradle new file mode 100644 index 000000000..522ec001e --- /dev/null +++ b/dev-util/ghidra/files/repos.gradle @@ -0,0 +1,7 @@ +allprojects { + repositories { + mavenCentral() + jcenter() + flatDir name:'flat', dirs:["S_DIR/.gradle/flatRepo"] + } +} diff --git a/dev-util/ghidra/ghidra-9.0.2.ebuild b/dev-util/ghidra/ghidra-9.0.2.ebuild new file mode 100644 index 000000000..8ed03cbdf --- /dev/null +++ b/dev-util/ghidra/ghidra-9.0.2.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +DESCRIPTION="A software reverse engineering framework" +HOMEPAGE="https://www.nsa.gov/ghidra" +SRC_URI="https://github.com/NationalSecurityAgency/ghidra/archive/Ghidra_${PV}_build.tar.gz + https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip + https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android4me/AXMLPrinter2.jar + https://sourceforge.net/projects/catacombae/files/HFSExplorer/0.21/hfsexplorer-0_21-bin.zip + http://repo1.maven.org/maven2/org/python/jython-standalone/2.7.1/jython-standalone-2.7.1.jar + mirror://sourceforge/yajsw/yajsw/yajsw-stable-12.12.zip + https://dev.pentoo.ch/~blshkv/distfiles/ghidra-${PV}-gradle-cache.tar.gz" +#generate cache file by disabling --offline, ebuild clean test and +#tar cvzf ./ghidra-9.0.2-gradle-cache.tar.gz -C /var/tmp/portage/dev-util/ghidra-9.0.2/work ghidra-Ghidra_9.0.2_build/.gradle/caches/modules-2/ + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" +IUSE="" + +RDEPEND=">=virtual/jre-1.8" +DEPEND="${DEPEND} + >=virtual/jdk-1.8 + dev-java/gradle-bin:5.2.1 + sys-devel/bison + dev-java/jflex + dev-java/oracle-jdk-bin:11 + app-arch/unzip" + +S="${WORKDIR}/ghidra-Ghidra_${PV}_build" + +src_unpack() { + unpack ${A} + mkdir -p "${S}/.gradle/flatRepo" + cd "${S}/.gradle" + + unpack dex-tools-2.0.zip + mv dex2jar-2.0/lib/dex-*.jar ./flatRepo + + mv "${DISTDIR}/AXMLPrinter2.jar" ./flatRepo + + unpack hfsexplorer-0_21-bin.zip + mv lib/*.jar ./flatRepo + + mv "${DISTDIR}"/jython-standalone-2.7.1.jar ./flatRepo + + #/var/tmp/portage/dev-util/ghidra-9.0.2/work/ghidra.bin/Ghidra/Features/GhidraServer/yajsw-stable-12.12.zip' + mkdir -p "${WORKDIR}"/ghidra.bin/Ghidra/Features/GhidraServer/ + mv "${DISTDIR}"/yajsw-stable-12.12.zip "${WORKDIR}"/ghidra.bin/Ghidra/Features/GhidraServer/ + + cd "${S}" +} + +src_prepare() { + sed -i 's|gradle.gradleVersion != "5.0"|gradle.gradleVersion <= "5.0"|g' build.gradle || die 'sed failed' + mkdir -p ".gradle/init.d" + cp "${FILESDIR}"/repos.gradle .gradle/init.d + sed -i "s|S_DIR|${S}|g" .gradle/init.d/repos.gradle + eapply_user +} + +src_compile() { + export JAVA_HOME="/opt/oracle-jdk-bin-11.0.2" + export JAVAC="/opt/oracle-jdk-bin-11.0.2/bin/javac" + export _JAVA_OPTIONS="$_JAVA_OPTIONS -Duser.home=$HOME" + + GRADLE="gradle-5.2.1 --gradle-user-home .gradle --console rich --no-daemon" + GRADLE="${GRADLE} --offline" + + ${GRADLE} yajswDevUnpack -x check -x test || die + ${GRADLE} buildGhidra -x check -x test || die +} + +src_install() { + #it is easier to unpack existing archive + dodir /usr/share + unzip build/dist/ghidra_9.0.2_PUBLIC_20190406_linux64.zip -d "${ED}"/usr/share/ + mv "${ED}"/usr/share/ghidra_9.0.2 "${ED}"/usr/share/ghidra + #fixme: add doc flag + rm -r "${ED}"/usr/share/ghidra/docs/ + dosym "${EPREFIX}"/usr/share/ghidra/ghidraRun /usr/bin/ghidra +} diff --git a/profiles/pentoo/base/package.accept_keywords/dev-java b/profiles/pentoo/base/package.accept_keywords/dev-java index 302232c1e..f09996476 100644 --- a/profiles/pentoo/base/package.accept_keywords/dev-java +++ b/profiles/pentoo/base/package.accept_keywords/dev-java @@ -9,3 +9,7 @@ dev-java/msgpack:8.16 =dev-java/jackson-module-jaxb-annotations-2.8* =dev-java/jackson-annotations-2.8* =dev-java/jackson-databind-2.8* + +dev-java/gradle-bin:5.2.1 + +dev-java/oracle-jdk-bin:11