Skip to content

Florida

Florida #115

Workflow file for this run

name: Florida
env:
FRIDA_VERSION: "17.9.10"
on:
schedule:
- cron: "0 9/12 * * *"
workflow_dispatch:
push:
branches: ["main", "ci"]
paths:
- ".github/workflows/build.yml"
- "patches/**"
permissions:
contents: write
jobs:
check_version:
runs-on: ubuntu-22.04
outputs:
FRIDA_VERSION: ${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }}
ALREADY_RELEASE: ${{ steps.checkReleaseVersion.outputs.ALREADY_RELEASE }}
steps:
- name: Pull Frida Latest Release
id: pullFridaLatestRelease
run: echo "FRIDA_VERSION=${{ env.FRIDA_VERSION }}" >> $GITHUB_OUTPUT
- name: Check release version
id: checkReleaseVersion
uses: actions/github-script@v9
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
try {
const releaseVersion = '${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }}'
const releaseResponse = await github.rest.repos.getReleaseByTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: releaseVersion
});
const {
data: { tag_name: ver }
} = releaseResponse;
if (ver == '${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }}'){
if ( ${{ ( github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}){
core.setOutput('ALREADY_RELEASE', '2');
} else {
core.setOutput('ALREADY_RELEASE', '1');
}
}
else{
core.setOutput('ALREADY_RELEASE', '0');
}
} catch (e) {
if (e.status === 404 || e.message == 'Not Found') {
core.setOutput('ALREADY_RELEASE', '0');
}
else{
core.setFailed(e.message);
}
}
- name: Delete release
if: ${{ steps.checkReleaseVersion.outputs.ALREADY_RELEASE == '2' }}
uses: dev-drprasad/delete-tag-and-release@v1.0
with:
tag_name: ${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }}
github_token: ${{ secrets.GITHUB_TOKEN }}
delete_release: true
android_build:
runs-on: ubuntu-22.04
needs: check_version
if: needs.check_version.outputs.ALREADY_RELEASE != '1'
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Setup Android NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: r29
local-cache: false
link-to-sdk: true
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: install dependencies
run: |
sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install build-essential tree ninja-build gcc-multilib g++-multilib lib32stdc++-9-dev flex bison ruby ruby-dev python3-requests python3-setuptools python3-dev python3-pip libc6-dev libc6-dev-i386 -y
sudo gem install fpm -v 1.11.0 --no-document
python3 -m pip install lief graphlib
- name: build frida for Android
shell: bash
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
export ANDROID_NDK_ROOT=${{ steps.setup-ndk.outputs.ndk-path }}
echo "ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT"
git clone --recurse-submodules https://github.com/frida/frida
cd frida
git checkout "${{ needs.check_version.outputs.FRIDA_VERSION }}"
git submodule update --init --recursive
for path in ../patches/*
do
name=$(basename $path)
real=$(realpath $path)
echo "Apply patches in $real to frida/subprojects/$name"
cd subprojects/$name
git am ../../../patches/$name/*.patch
cd ../..
echo $i
done
cd ..
ARCHES="android-arm android-arm64 android-x86 android-x86_64"
for ARCH in $ARCHES
do
mkdir build-$ARCH
cd build-$ARCH
../frida/configure --host=$ARCH
make
cd ..
done
- name: package build result for Android
shell: bash
run: |
VERSION="${{ needs.check_version.outputs.FRIDA_VERSION }}"
gzip build-android-arm/subprojects/frida-core/server/frida-server
gzip build-android-arm64/subprojects/frida-core/server/frida-server
gzip build-android-x86/subprojects/frida-core/server/frida-server
gzip build-android-x86_64/subprojects/frida-core/server/frida-server
gzip build-android-arm/subprojects/frida-core/inject/frida-inject
gzip build-android-arm64/subprojects/frida-core/inject/frida-inject
gzip build-android-x86/subprojects/frida-core/inject/frida-inject
gzip build-android-x86_64/subprojects/frida-core/inject/frida-inject
gzip build-android-arm/subprojects/frida-core/lib/gadget/frida-gadget.so
gzip build-android-arm64/subprojects/frida-core/lib/gadget/frida-gadget.so
gzip build-android-x86/subprojects/frida-core/lib/gadget/frida-gadget.so
gzip build-android-x86_64/subprojects/frida-core/lib/gadget/frida-gadget.so
gzip build-android-arm/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a
gzip build-android-arm64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a
gzip build-android-x86/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a
gzip build-android-x86_64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a
mkdir -p release-assets
cp build-android-arm/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-arm.gz
cp build-android-arm64/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-arm64.gz
cp build-android-x86/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-x86.gz
cp build-android-x86_64/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-x86_64.gz
cp build-android-arm/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-arm.gz
cp build-android-arm64/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-arm64.gz
cp build-android-x86/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-x86.gz
cp build-android-x86_64/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-x86_64.gz
cp build-android-arm/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-arm.so.gz
cp build-android-arm64/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-arm64.so.gz
cp build-android-x86/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-x86.so.gz
cp build-android-x86_64/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-x86_64.so.gz
cp build-android-arm/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-arm.a.gz
cp build-android-arm64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-arm64.a.gz
cp build-android-x86/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-x86.a.gz
cp build-android-x86_64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-x86_64.a.gz
- name: Create release and upload assets
uses: softprops/action-gh-release@v3
with:
tag_name: "${{ needs.check_version.outputs.FRIDA_VERSION }}"
name: "${{ needs.check_version.outputs.FRIDA_VERSION }}"
prerelease: false
fail_on_unmatched_files: true
files: |
release-assets/*