frida-server: start working on package, works but ugly

Builds for all arches instead of only one at the moment.
frida-server is confirmed to work on aarch64.
This commit is contained in:
Henrik Grimler 2018-03-05 21:15:17 +00:00 committed by Yaksh Bariya
parent 018ae356d1
commit 40f30697f4
No known key found for this signature in database
GPG Key ID: F7486BA7D3D27581
4 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,59 @@
TERMUX_PKG_HOMEPAGE=https://www.frida.re
TERMUX_PKG_DESCRIPTION="Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers"
_MAJOR_VERSION=10
_MINOR_VERSION=6
_MICRO_VERSION=55
TERMUX_PKG_VERSION=$_MAJOR_VERSION.$_MINOR_VERSION.$_MICRO_VERSION
TERMUX_PKG_SRCURL="https://github.com/frida/frida/archive/$TERMUX_PKG_VERSION.tar.gz"
TERMUX_PKG_SHA256="9ffcc4927bea960d80af2a0dab0e022dfe1dce511aa6fbc60dd0c2994a7477b0"
TERMUX_PKG_MAINTAINER="Henrik Grimler @Grimler91"
TERMUX_PKG_BUILD_IN_SRC=yes
TERMUX_PKG_EXTRA_MAKE_ARGS="ANDROID_NDK_ROOT=$HOME/lib/android-ndk"
# submodule name commit sha256
_submodules=("capstone" "a1a383436ba147767af1887c2015e5a863359669" "e3267fa036a84c695d371a08830701702b82fa32a961b0f5ecaa65a56eaf5dcc"
"frida-core" "b46081304f904773882f6efac4507c627a38fcdb" "369933f40d3b8b8cd7345734f83d668c31ea6b45b606f26babb202ae6361240c"
"frida-gum" "919bb8ed76382053214cb874fd848ee49c6833cf" "cbc33931b28919eb3c78894357ec5a7f496a2771a3100d72923b923aea25d9c2"
"frida-python" "47f491c6b93868167c95477b85cd827c582cb0c7" "f186209bc3f930f4d31d1e9e326e8e3ea4e3bb5fe85bc4360a631eadd9d1a9cc"
"frida-clr" "145e0eda9f449fc7ac33c77f3665f0830d02393d" "39ab131eca2eb16df047f65344dc1f7cc9f28a62142e6bf1af242e3c240f501b"
"frida-qml" "af6fde67449bad7aec1d36071ba7cbc7ef2f2dc7" "61484407afbb89306f874f2af3275db8f8955376a5acf6cb947cb89b1ff757a9"
"frida-swift" "b2ebd7da1ee2eb08cc08e637563b2535985e00ff" "771202747cec02d10d30e2d2601f87b17496dcbcf5cfb00e0fbba673b791216d"
"releng/meson" "eb26824fa9078b857fc3dd266434894a4fde1b35" "500f1190545451e627a9c8a73f3666d13821b7af2f32abab4ec9dd39afbdebc7")
termux_step_pre_configure () {
mkdir -p $TERMUX_PKG_SRCDIR/build
cd $TERMUX_PKG_TMPDIR
# github's releases doesn't include git submodules, therefore we have to do this mess:
for idx in $(seq 0 3 $((${#_submodules[@]}-1))); do
termux_download https://github.com/frida/$(basename ${_submodules[$idx]})/archive/${_submodules[$((idx+1))]}.zip \
$TERMUX_PKG_CACHEDIR/$(basename ${_submodules[$idx]}).zip \
${_submodules[$((idx+2))]}
unzip -q $TERMUX_PKG_CACHEDIR/$(basename ${_submodules[$idx]}).zip
mv $(basename ${_submodules[$idx]})-*/* $TERMUX_PKG_SRCDIR/${_submodules[$idx]}/
# releng/common.mk normally echoes commit message to these *submodule-stamp files
echo ${_submodules[$((idx+1))]} > $TERMUX_PKG_SRCDIR/build/.$(basename ${_submodules[$idx]})-submodule-stamp
done
}
termux_step_post_configure () {
# frida-version.h is normally generated from git and the commits.
sed -i "s/@TERMUX_PKG_VERSION@/$TERMUX_PKG_VERSION/g" $TERMUX_PKG_SRCDIR/build/frida-version.h
sed -i "s/@_MAJOR_VERSION@/$_MAJOR_VERSION/g" $TERMUX_PKG_SRCDIR/build/frida-version.h
sed -i "s/@_MINOR_VERSION@/$_MINOR_VERSION/g" $TERMUX_PKG_SRCDIR/build/frida-version.h
sed -i "s/@_MICRO_VERSION@/$_MICRO_VERSION/g" $TERMUX_PKG_SRCDIR/build/frida-version.h
}
termux_step_make () {
make server-android ${TERMUX_PKG_EXTRA_MAKE_ARGS}
# make python-64 ${TERMUX_PKG_EXTRA_MAKE_ARGS}
}
termux_step_make_install () {
if [ $TERMUX_ARCH == "aarch64" ]; then
arch=arm64
else
arch=$TERMUX_ARCH
fi
rsync -r $TERMUX_PKG_SRCDIR/build/frida-android-$arch /data/data/com.termux/files/usr/
}

View File

@ -0,0 +1,6 @@
libunwind{,-dev}
glib{,-dev}
json-glib{,-dev}
liblzma{,-dev}
libdwarf{,-dev}
iconv

View File

@ -0,0 +1,16 @@
frida-version.h is normally generated from git
--- /dev/null 2018-03-05 09:14:44.324251389 +0000
+++ ./build/frida-version.h 2018-03-05 10:37:42.372271356 +0000
@@ -0,0 +1,12 @@
+/* @TERMUX_PKG_VERSION@.0 */
+#ifndef __FRIDA_VERSION_H__
+#define __FRIDA_VERSION_H__
+
+#define FRIDA_VERSION "@TERMUX_PKG_VERSION@"
+
+#define FRIDA_MAJOR_VERSION @_MAJOR_VERSION@
+#define FRIDA_MINOR_VERSION @_MINOR_VERSION@
+#define FRIDA_MICRO_VERSION @_MICRO_VERSION@
+#define FRIDA_NANO_VERSION 0
+
+#endif

View File

@ -0,0 +1,14 @@
Use the NDK we normally use for termux
--- ./releng/setup-env.sh 2018-02-26 19:22:57.000000000 +0000
+++ ../setup-env.sh 2018-03-05 12:49:07.583020888 +0000
@@ -92,8 +92,8 @@
fi
if [ $host_platform = android ]; then
- ndk_required_name=r15c
- ndk_required_version=15.2.4203891
+ ndk_required_name=r16b
+ ndk_required_version=16.0.4442984
if [ -n "$ANDROID_NDK_ROOT" ]; then
if [ -f "$ANDROID_NDK_ROOT/source.properties" ]; then
ndk_installed_version=$(grep Pkg.Revision "$ANDROID_NDK_ROOT/source.properties" | awk '{ print $NF; }')