Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 submodules: Bump outdated · frida/frida@081a648 · GitHub
Nothing Special   »   [go: up one dir, main page]

Skip to content

submodules: Bump outdated #1407

submodules: Bump outdated

submodules: Bump outdated #1407

Workflow file for this run

name: CI
on: push
env:
FRIDA_COMPILER_MOD: subprojects/frida-core/src/compiler/go.mod
ANDROID_NDK_VERSION: r25b
jobs:
publish-prod:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs:
- package-windows
- package-windows-sfx
- package-macos
- package-linux
- package-ios
- package-watchos
- package-tvos
- package-android
- package-qnx
- package-apple-universal
- assemble-ios-assets
- assemble-tvos-assets
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Grab needed submodules
run: python tools/ensure-submodules.py frida-gum frida-core frida-python frida-node
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y reprepro
sudo npm install -g cloudflare-cli
- name: Download release assets
uses: actions/download-artifact@v4
with:
pattern: release-asset-*
merge-multiple: true
path: build/release-assets/
- name: Download Node-API prebuilds for Windows/x86_64
uses: actions/download-artifact@v4
with:
name: frida-node-windows-x86_64
path: build/release-assets/
- name: Download Node-API prebuilds for Windows/arm64
uses: actions/download-artifact@v4
with:
name: frida-node-windows-arm64
path: build/release-assets/
- name: Download Node-API prebuilds for macOS/x86_64
uses: actions/download-artifact@v4
with:
name: frida-node-macos-x86_64
path: build/release-assets/
- name: Download Node-API prebuilds for macOS/arm64
uses: actions/download-artifact@v4
with:
name: frida-node-macos-arm64
path: build/release-assets/
- name: Download Node-API prebuilds for Linux/x86
uses: actions/download-artifact@v4
with:
name: frida-node-linux-x86
path: build/release-assets/
- name: Download Node-API prebuilds for Linux/x86_64
uses: actions/download-artifact@v4
with:
name: frida-node-linux-x86_64
path: build/release-assets/
- name: Download Node-API prebuilds for Linux/armhf
uses: actions/download-artifact@v4
with:
name: frida-node-linux-armhf
path: build/release-assets/
- name: Download Node-API prebuilds for Linux/arm64
uses: actions/download-artifact@v4
with:
name: frida-node-linux-arm64
path: build/release-assets/
- name: Package iOS assets
uses: ./.github/actions/package-ios-assets
- name: Package tvOS assets
uses: ./.github/actions/package-tvos-assets
- name: Package Cirrus CI artifacts
run: .github/scripts/package-cirrus-ci-artifacts.sh ${{ github.sha }}
- name: Rename release assets
run: .github/scripts/rename-release-assets.sh
- name: Publish release to GitHub
uses: softprops/action-gh-release@v1
with:
name: "Frida ${{ env.FRIDA_VERSION }}"
body: "See https://frida.re/news/ for details."
files: build/release-assets/*
- name: Prepare Python packages
uses: ./.github/actions/prepare-python-packages
- name: Publish Python bindings to pypi.org
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: build/python-packages/
- name: Publish .deb packages
uses: ./.github/actions/publish-debs
with:
site: production
- name: Setup npm authentication
uses: actions/setup-node@v4
with:
registry-url: "https://registry.npmjs.org"
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish Node.js bindings to npm
run: |
export FRIDA_DEPS=$PWD/deps
cd subprojects/frida-node/subprojects
ln -s ../../frida-gum .
ln -s ../../frida-core .
cd ..
git submodule update --init --recursive
npm version $FRIDA_VERSION
./configure -- -Dfrida-core:compat=disabled
make
npm install
npm publish
- name: Publish frida-gadget-ios to npm
run: |
cd releng/modules/frida-gadget-ios
npm version $FRIDA_VERSION
npm publish
- name: Trigger magisk-frida CI
run: |
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: token ${{ secrets.MAGISK_FRIDA_TOKEN }}" \
https://api.github.com/repos/ViRb3/magisk-frida/dispatches \
-d '{"event_type":"build"}'
publish-dev:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs:
- frida-windows
- frida-macos
- frida-linux
- assemble-ios-assets
- assemble-tvos-assets
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Grab needed submodules
run: python tools/ensure-submodules.py frida-core frida-python
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y reprepro
sudo npm install -g cloudflare-cli
- name: Package iOS assets
uses: ./.github/actions/package-ios-assets
- name: Package tvOS assets
uses: ./.github/actions/package-tvos-assets
- name: Prepare Python packages
uses: ./.github/actions/prepare-python-packages
- name: Publish Python bindings to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
packages-dir: build/python-packages/
repository-url: https://test.pypi.org/legacy/
- name: Publish .deb packages
uses: ./.github/actions/publish-debs
with:
site: development
assemble-ios-assets:
runs-on: macos-latest
needs: frida-ios
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Download universal frida-server for iOS/arm64(e)
uses: actions/download-artifact@v4
with:
name: frida-server-ios-arm64e
path: ios-arm64e/
- name: Create universal frida-server for iOS
run: |
lipo ios-arm64e/frida-server -thin arm64 -output frida-server-arm64
lipo ios-arm64e/frida-server -thin arm64e -output frida-server-arm64e
for arch in arm64 arm64e; do
codesign -f -s "-" --preserve-metadata=entitlements frida-server-$arch
done
./releng/mkfatmacho.py \
frida-server-ios-universal \
frida-server-arm64 \
frida-server-arm64e
- name: Download universal frida-agent for iOS/arm64(e)
uses: actions/download-artifact@v4
with:
name: frida-agent-ios-arm64e
path: ios-arm64e/
- name: Sign universal frida-agent for iOS/arm64(e)
run: codesign -f -s "-" ios-arm64e/frida-agent.dylib
- name: Assemble iOS assets
run: |
mkdir -p ios-assets/usr/bin ios-assets/usr/lib/frida
mv frida-server-ios-universal ios-assets/usr/bin/frida-server
mv ios-arm64e/frida-agent.dylib ios-assets/usr/lib/frida/frida-agent.dylib
- name: Upload iOS assets
uses: actions/upload-artifact@v4
with:
name: ios-assets
path: ios-assets/*
assemble-tvos-assets:
runs-on: macos-latest
needs: frida-tvos
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Download frida-server for tvOS/arm64
uses: actions/download-artifact@v4
with:
name: frida-server-tvos-arm64
path: tvos-arm64/
- name: Prepare frida-server for tvOS/arm64
run: codesign -f -s "-" --preserve-metadata=entitlements tvos-arm64/frida-server
- name: Download frida-agent for tvOS/arm64
uses: actions/download-artifact@v4
with:
name: frida-agent-tvos-arm64
path: tvos-arm64/
- name: Prepare frida-agent for tvOS/arm64
run: codesign -f -s "-" tvos-arm64/frida-agent.dylib
- name: Assemble tvOS assets
run: |
mkdir -p tvos-assets/usr/bin tvos-assets/usr/lib/frida
mv tvos-arm64/frida-server tvos-assets/usr/bin/frida-server
mv tvos-arm64/frida-agent.dylib tvos-assets/usr/lib/frida/frida-agent.dylib
- name: Upload tvOS assets
uses: actions/upload-artifact@v4
with:
name: tvos-assets
path: tvos-assets/*
package-apple-universal:
if: startsWith(github.ref, 'refs/tags/')
runs-on: macos-latest
needs: [frida-macos, frida-ios, frida-watchos, frida-tvos]
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Download frida-gadget for macOS/x86_64
uses: actions/download-artifact@v4
with:
name: frida-gadget-macos-x86_64
path: macos-x86_64/
- name: Download frida-gadget for macOS/arm64(e)
uses: actions/download-artifact@v4
with:
name: frida-gadget-macos-arm64e
path: macos-arm64e/
- name: Create universal frida-gadget for macOS
run: |
lipo \
macos-x86_64/frida-gadget.dylib \
macos-arm64e/frida-gadget.dylib \
-create -output frida-gadget-macos-universal.dylib
install_name_tool \
-id @executable_path/../Frameworks/FridaGadget.dylib \
frida-gadget-macos-universal.dylib
codesign \
-f -s "$MACOS_CERTID" \
frida-gadget-macos-universal.dylib
- name: Compress universal frida-gadget for macOS
run: xz -T 0 frida-gadget-macos-universal.dylib
- name: Upload universal frida-gadget for macOS
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-macos-universal
path: frida-gadget-macos-universal.dylib.xz
- name: Download frida-gadget for iOS/arm64(e)
uses: actions/download-artifact@v4
with:
name: frida-gadget-ios-arm64e
path: ios-arm64e/
- name: Create universal f 10BC0 rida-gadget for iOS
run: |
mv ios-arm64e/frida-gadget.dylib frida-gadget-ios-universal.dylib
install_name_tool \
-id @executable_path/Frameworks/FridaGadget.dylib \
frida-gadget-ios-universal.dylib
codesign \
-f -s "$IOS_CERTID" \
frida-gadget-ios-universal.dylib
- name: Compress universal frida-gadget for iOS
run: |
gzip -k frida-gadget-ios-universal.dylib
xz -T 0 frida-gadget-ios-universal.dylib
- name: Upload universal frida-gadget for iOS (gz)
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-ios-universal-gz
path: frida-gadget-ios-universal.dylib.gz
- name: Upload universal frida-gadget for iOS (xz)
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-ios-universal-xz
path: frida-gadget-ios-universal.dylib.xz
- name: Download frida-gadget for iOS/x86_64-simulator
uses: actions/download-artifact@v4
with:
name: frida-gadget-ios-x86_64-simulator
path: ios-x86_64-simulator/
- name: Download frida-gadget for iOS/arm64-simulator
uses: actions/download-artifact@v4
with:
name: frida-gadget-ios-arm64-simulator
path: ios-arm64-simulator/
- name: Create universal frida-gadget for iOS Simulator
run: |
lipo \
ios-x86_64-simulator/frida-gadget.dylib \
ios-arm64-simulator/frida-gadget.dylib \
-create -output frida-gadget-ios-simulator-universal.dylib
install_name_tool \
-id @executable_path/Frameworks/FridaGadget.dylib \
frida-gadget-ios-simulator-universal.dylib
codesign \
-f -s "$IOS_CERTID" \
frida-gadget-ios-simulator-universal.dylib
- name: Compress universal frida-gadget for iOS Simulator
run: xz -T 0 frida-gadget-ios-simulator-universal.dylib
- name: Upload universal frida-gadget for iOS Simulator
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-ios-simulator-universal
path: frida-gadget-ios-simulator-universal.dylib.xz
- name: Download frida-gadget for watchOS/arm64
uses: actions/download-artifact@v4
with:
name: frida-gadget-watchos-arm64
path: watchos-arm64/
- name: Download frida-gadget for watchOS/arm64-simulator
uses: actions/download-artifact@v4
with:
name: frida-gadget-watchos-arm64-simulator
path: watchos-arm64-simulator/
- name: Package frida-gadget for watchOS
run: |
for arch in arm64 arm64-simulator; do
cp watchos-$arch/frida-gadget.dylib frida-gadget-watchos-$arch.dylib
install_name_tool \
-id @executable_path/Frameworks/FridaGadget.dylib \
frida-gadget-watchos-$arch.dylib
codesign \
-f -s "$WATCHOS_CERTID" \
frida-gadget-watchos-$arch.dylib
xz -T 0 frida-gadget-watchos-$arch.dylib
done
- name: Upload frida-gadget for watchOS/arm64
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-watchos-arm64
path: frida-gadget-watchos-arm64.dylib.xz
- name: Upload frida-gadget for watchOS/arm64-simulator
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-watchos-arm64-simulator
path: frida-gadget-watchos-arm64-simulator.dylib.xz
- name: Download frida-gadget for tvOS/arm64
uses: actions/download-artifact@v4
with:
name: frida-gadget-tvos-arm64
path: tvos-arm64/
- name: Download frida-gadget for tvOS/arm64-simulator
uses: actions/download-artifact@v4
with:
name: frida-gadget-tvos-arm64-simulator
path: tvos-arm64-simulator/
- name: Package frida-gadget for tvOS
run: |
for arch in arm64 arm64-simulator; do
cp tvos-$arch/frida-gadget.dylib frida-gadget-tvos-$arch.dylib
install_name_tool \
-id @executable_path/Frameworks/FridaGadget.dylib \
frida-gadget-tvos-$arch.dylib
codesign \
-f -s "$TVOS_CERTID" \
frida-gadget-tvos-$arch.dylib
xz -T 0 frida-gadget-tvos-$arch.dylib
done
- name: Upload frida-gadget for tvOS/arm64
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-tvos-arm64
path: frida-gadget-tvos-arm64.dylib.xz
- name: Upload frida-gadget for tvOS/arm64-simulator
uses: actions/upload-artifact@v4
with:
name: release-asset-frida-gadget-tvos-arm64-simulator
path: frida-gadget-tvos-arm64-simulator.dylib.xz
- name: Download Swift bindings for macOS/x86_64
uses: actions/download-artifact@v4
with:
name: frida-swift-macos-x86_64
path: macos-x86_64/
- name: Download Swift bindings for macOS/arm64
uses: actions/download-artifact@v4
with:
name: frida-swift-macos-arm64
path: macos-arm64/
- name: Create universal Swift bindings for macOS
run: |
lipo \
macos-x86_64/Frida.framework/Frida \
macos-arm64/Frida.framework/Frida \
-create -output Frida.framework
- name: Package universal Swift bindings for macOS
run: |
tar \
-cJf frida-swift-macos-universal.tar.xz \
Frida.framework
env:
XZ_OPT: "-T 0"
- name: Upload universal Swift bindings for macOS
uses: actions/upload-artifact@v4
with:
name: release-assets
path: frida-swift-macos-universal.tar.xz
package-windows:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-windows
strategy:
matrix:
arch: [x86, x86_64, arm64]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-windows-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-windows-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-windows-${{ matrix.arch }}
- name: Package frida-server
uses: ./.github/actions/package-artifact-file
with:
name: frida-server-windows-${{ matrix.arch }}
- name: Package frida-portal
uses: ./.github/actions/package-artifact-file
with:
name: frida-portal-windows-${{ matrix.arch }}
- name: Package frida-inject
uses: ./.github/actions/package-artifact-file
with:
name: frida-inject-windows-${{ matrix.arch }}
- name: Package frida-gadget
uses: ./.github/actions/package-artifact-file
with:
name: frida-gadget-windows-${{ matrix.arch }}
- name: Package .NET bindings
if: matrix.arch != 'arm64'
uses: ./.github/actions/package-artifact-file
with:
name: frida-clr-windows-${{ matrix.arch }}
- name: Package QML bindings
if: matrix.arch == 'x86_64'
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-qml-windows-${{ matrix.arch }}
package-windows-sfx:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-windows
strategy:
matrix:
arch: [x86, x86_64]
runs-on: windows-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-sfx
with:
name: frida-gum-devkit-windows-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-sfx
with:
name: frida-gumjs-devkit-windows-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-sfx
with:
name: frida-core-devkit-windows-${{ matrix.arch }}
package-macos:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-macos
strategy:
matrix:
arch: [x86_64, arm64, arm64e]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-macos-${{ matrix.arch }}
- name: Package gum-graft
if: matrix.arch != 'arm64e'
uses: ./.github/actions/package-artifact-file
with:
name: gum-graft-macos-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-macos-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-macos-${{ matrix.arch }}
- name: Package frida-server
uses: ./.github/actions/package-artifact-file
with:
name: frida-server-macos-${{ matrix.arch }}
- name: Package frida-portal
uses: ./.github/actions/package-artifact-file
with:
name: frida-portal-macos-${{ matrix.arch }}
- name: Package frida-inject
uses: ./.github/actions/package-artifact-file
with:
name: frida-inject-macos-${{ matrix.arch }}
- name: Package QML bindings
if: matrix.arch == 'x86_64'
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-qml-macos-${{ matrix.arch }}
package-linux:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-linux
strategy:
matrix:
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64-musl, mips, mipsel, mips64, mips64el]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-linux-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-linux-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-linux-${{ matrix.arch }}
- name: Package frida-server
uses: ./.github/actions/package-artifact-file
with:
name: frida-server-linux-${{ matrix.arch }}
- name: Package frida-portal
uses: ./.github/actions/package-artifact-file
with:
name: frida-portal-linux-${{ matrix.arch }}
- name: Package frida-gadget
uses: ./.github/actions/package-artifact-file
with:
name: frida-gadget-linux-${{ matrix.arch }}
- name: Package frida-inject
uses: ./.github/actions/package-artifact-file
with:
name: frida-inject-linux-${{ matrix.arch }}
- name: Package QML bindings
if: matrix.arch == 'x86_64'
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-qml-linux-${{ matrix.arch }}
package-ios:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-ios
strategy:
matrix:
arch: [arm64, arm64e, x86_64-simulator, arm64-simulator]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-ios-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-ios-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-ios-${{ matrix.arch }}
- name: Package frida-portal
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: ./.github/actions/package-artifact-file
with:
name: frida-portal-ios-${{ matrix.arch }}
package-watchos:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-watchos
strategy:
matrix:
arch: [arm64, arm64-simulator]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-watchos-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-watchos-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-watchos-${{ matrix.arch }}
package-tvos:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-tvos
strategy:
matrix:
arch: [arm64, arm64-simulator]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-tvos-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-tvos-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-tvos-${{ matrix.arch }}
package-android:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-android
strategy:
matrix:
arch: [x86, x86_64, arm, arm64]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-android-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-android-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-android-${{ matrix.arch }}
- name: Package frida-server
uses: ./.github/actions/package-artifact-file
with:
name: frida-server-android-${{ matrix.arch }}
- name: Package frida-portal
uses: ./.github/actions/package-artifact-file
with:
name: frida-portal-android-${{ matrix.arch }}
- name: Package frida-gadget
uses: ./.github/actions/package-artifact-file
with:
name: frida-gadget-android-${{ matrix.arch }}
- name: Package frida-inject
uses: ./.github/actions/package-artifact-file
with:
name: frida-inject-android-${{ matrix.arch }}
package-qnx:
if: startsWith(github.ref, 'refs/tags/')
needs: frida-qnx
strategy:
matrix:
arch: [armeabi]
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Package Gum devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gum-devkit-qnx-${{ matrix.arch }}
- name: Package GumJS devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-gumjs-devkit-qnx-${{ matrix.arch }}
- name: Package Core devkit
uses: ./.github/actions/package-artifact-files-as-tarball
with:
name: frida-core-devkit-qnx-${{ matrix.arch }}
- name: Package frida-server
uses: ./.github/actions/package-artifact-file
with:
name: frida-server-qnx-${{ matrix.arch }}
- name: Package frida-portal
uses: ./.github/actions/package-artifact-file
with:
name: frida-portal-qnx-${{ matrix.arch }}
- name: Package frida-gadget
uses: ./.github/actions/package-artifact-file
with:
name: frida-gadget-qnx-${{ matrix.arch }}
- name: Package frida-inject
uses: ./.github/actions/package-artifact-file
with:
name: frida-inject-qnx-${{ matrix.arch }}
frida-windows-intel:
needs: sdk-windows
strategy:
matrix:
include:
- { arch: x86, sys: MINGW32, pkg: 'mingw-w64-i686-gcc' }
- { arch: x86_64, sys: MINGW64, pkg: 'mingw-w64-x86_64-gcc' }
fail-fast: false
runs-on: windows-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-windows-env
with:
aws-acc 4B9A ess-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
architecture: ${{ matrix.arch == 'x86_64' && 'x64' || matrix.arch }}
- name: Install MinGW toolchain for cgo support
id: msys2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.sys }}
install: ${{ matrix.pkg }}
- name: Grab frida-core
run: python tools/ensure-submodules.py frida-core
- name: Install Go toolchain
uses: actions/setup-go@v5
with:
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
- name: Install Qt
if: matrix.arch == 'x86_64'
uses: jurplel/install-qt-action@v4
with:
version: '6.7.0'
cache: true
setup-python: false
- name: Configure
run: >-
.\configure
--prefix=$Env:FRIDA_PREFIX
--host=windows-${{ matrix.arch }}
--enable-gadget
--enable-server
--enable-portal
--enable-inject
--
"-Dfrida_qml=auto"
"-Dfrida-gum:devkits=gum,gumjs"
"-Dfrida-core:compiler_backend=enabled"
"-Dfrida-core:devkits=core"
env:
MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
- name: Compile
run: .\make
- name: Install
run: .\make install
- name: Upload components needed for emulation on arm64
if: matrix.arch == 'x86_64'
uses: actions/upload-artifact@v4
with:
name: frida-core-emulation-windows
path: |
build/subprojects/frida-core/src/frida-helper.exe
build/subprojects/frida-core/lib/agent/frida-agent.dll
build/subprojects/frida-core/compat/frida-helper.exe
build/subprojects/frida-core/compat/frida-agent.dll
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/
- name: Upload frida-server
uses: actions/upload-artifact@v4
with:
name: frida-server-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server.exe
- name: Upload frida-portal
uses: actions/upload-artifact@v4
with:
name: frida-portal-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal.exe
- name: Upload frida-inject
uses: actions/upload-artifact@v4
with:
name: frida-inject-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject.exe
- name: Upload 32-bit frida-gadget
if: matrix.arch != 'x86_64'
uses: actions/upload-artifact@v4
with:
name: frida-gadget-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.dll
- name: Upload 64-bit frida-gadget
if: matrix.arch == 'x86_64'
uses: actions/upload-artifact@v4
with:
name: frida-gadget-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/64/frida-gadget.dll
- name: Package Python bindings
run: |
$Env:FRIDA_EXTENSION = "$Env:FRIDA_PREFIX\lib\site-packages\frida\_frida.pyd"
cd subprojects\frida-python
pip wheel -w "$Env:FRIDA_PREFIX\wheels" --no-deps .
- name: Upload Python bindings
uses: actions/upload-artifact@v4
with:
name: frida-python-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
- name: Build Node.js bindings
if: matrix.arch == 'x86_64'
run: |
$installdir = "$Env:FRIDA_PREFIX\prebuilds"
$Env:FRIDA_DEPS = "$pwd\deps"
$Env:PKG_CONFIG_PATH = "$Env:FRIDA_PREFIX\lib\pkgconfig"
function Run() {
$program = $args[0]
$arglist = $args | Select-Object -Skip 1
& $program $arglist
$result = $LASTEXITCODE
if ($result -ne 0) {
throw "'$program $arglist' failed with exit status $result"
}
}
Run python .\tools\ensure-submodules.py frida-node
cd subprojects\frida-node
Run npm version $FRIDA_VERSION
Run .\configure `
--prefix=$Env:FRIDA_PREFIX `
--host=windows-${{ matrix.arch }}
Run .\make prebuild
New-Item -ItemType Directory -Path $installdir
Copy-Item .\build\*.tar.gz -Destination $installdir
- name: Upload Node.js bindings
if: matrix.arch == 'x86_64'
uses: actions/upload-artifact@v4
with:
name: frida-node-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
- name: Build .NET bindings
run: >-
Remove-Item build -Recurse
&& .\configure
--prefix=$Env:FRIDA_PREFIX
--host=windows-${{ matrix.arch }}-md
--enable-frida-clr
--disable-frida-python
--disable-frida-tools
--
"-Dfrida-core:compiler_backend=disabled"
&& .\make install
- name: Upload .NET bindings
uses: actions/upload-artifact@v4
with:
name: frida-clr-windows-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/Frida.dll
- name: Upload QML bindings
if: matrix.arch == 'x86_64'
uses: actions/upload-artifact@v4
with:
name: frida-qml-windows-${{ matrix.arch }}
path: |
${{ env.FRIDA_PREFIX }}/lib/qml/
!*.lib
!*.pdb
frida-windows:
needs: frida-windows-intel
runs-on: windows-11-arm
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-windows-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
architecture: arm64
- name: Install MinGW toolchain for cgo support
id: msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANGARM64
install: mingw-w64-clang-aarch64-clang
- name: Grab frida-core
run: python tools/ensure-submodules.py frida-core
- name: Install Go toolchain
uses: actions/setup-go@v5
with:
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
- name: Download emulation components
uses: actions/download-artifact@v4
with:
name: frida-core-emulation-windows
path: emulation/
- name: Configure
run: |
$helperModern = (Resolve-Path "emulation/src/frida-helper.exe").Path
$agentModern = (Resolve-Path "emulation/lib/agent/frida-agent.dll").Path
$helperLegacy = (Resolve-Path "emulation/compat/frida-helper.exe").Path
$agentLegacy = (Resolve-Path "emulation/compat/frida-agent.dll").Path
.\configure `
--prefix=$Env:FRIDA_PREFIX `
--host=windows-arm64 `
--enable-gadget `
--enable-server `
--enable-portal `
--enable-inject `
-- `
"-Dfrida_qml=auto" `
"-Dfrida-gum:devkits=gum,gumjs" `
"-Dfrida-core:compiler_backend=enabled" `
"-Dfrida-core:devkits=core" `
"-Dfrida-core:helper_emulated_modern=$helperModern" `
"-Dfrida-core:agent_emulated_modern=$agentModern" `
"-Dfrida-core:helper_emulated_legacy=$helperLegacy" `
"-Dfrida-core:agent_emulated_legacy=$agentLegacy"
env:
MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
- name: Compile
run: .\make
- name: Install
run: .\make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/
- name: Upload frida-server
uses: actions/upload-artifact@v4
with:
name: frida-server-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server.exe
- name: Upload frida-portal
uses: actions/upload-artifact@v4
with:
name: frida-portal-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal.exe
- name: Upload frida-inject
uses: actions/upload-artifact@v4
with:
name: frida-inject-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject.exe
- name: Upload frida-gadget
uses: actions/upload-artifact@v4
with:
name: frida-gadget-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/lib/frida/64/frida-gadget.dll
- name: Package Python bindings
run: |
$Env:FRIDA_EXTENSION = "$Env:FRIDA_PREFIX\lib\site-packages\frida\_frida.pyd"
cd subprojects\frida-python
pip wheel -w "$Env:FRIDA_PREFIX\wheels" --no-deps .
- name: Upload Python bindings
uses: actions/upload-artifact@v4
with:
name: frida-python-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
- name: Build Node.js bindings
4B9A run: |
$installdir = "$Env:FRIDA_PREFIX\prebuilds"
$Env:FRIDA_DEPS = "$pwd\deps"
$Env:PKG_CONFIG_PATH = "$Env:FRIDA_PREFIX\lib\pkgconfig"
function Run() {
$program = $args[0]
$arglist = $args | Select-Object -Skip 1
& $program $arglist
$result = $LASTEXITCODE
if ($result -ne 0) {
throw "'$program $arglist' failed with exit status $result"
}
}
Run python .\tools\ensure-submodules.py frida-node
cd subprojects\frida-node
Run npm version $FRIDA_VERSION
Run .\configure `
--prefix=$Env:FRIDA_PREFIX `
--host=windows-arm64
Run .\make prebuild
New-Item -ItemType Directory -Path $installdir
Copy-Item .\build\*.tar.gz -Destination $installdir
- name: Upload Node.js bindings
uses: actions/upload-artifact@v4
with:
name: frida-node-windows-arm64
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
frida-macos:
needs: sdk-macos
strategy:
matrix:
arch: [x86_64, arm64, arm64e]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Grab frida-core
run: python tools/ensure-submodules.py frida-core
- name: Install Go toolchain
uses: actions/setup-go@v5
with:
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
- name: Install Qt
if: matrix.arch != 'arm64e'
uses: jurplel/install-qt-action@v4
with:
version: '6.7.0'
cache: true
setup-python: false
- name: Configure
run: >-
./configure
"--prefix=$FRIDA_PREFIX"
--host=macos-${{ matrix.arch }}
--enable-gadget
--enable-server
--enable-portal
--enable-inject
--enable-frida-python
--enable-frida-swift
--
-Dfrida_qml=${{ matrix.arch != 'arm64e' && 'enabled' || 'disabled' }}
-Dfrida-gum:graft_tool=enabled
-Dfrida-gum:devkits=gum,gumjs
-Dfrida-core:compiler_backend=${{ matrix.arch != 'arm64e' && 'enabled' || 'disabled' }}
-Dfrida-core:devkits=core
- name: Compile
run: make
- name: Install
run: make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/
- name: Upload gum-graft
if: matrix.arch != 'arm64e'
uses: actions/upload-artifact@v4
with:
name: gum-graft-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/gum-graft
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/
- name: Upload frida-server
uses: actions/upload-artifact@v4
with:
name: frida-server-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
- name: Upload frida-portal
uses: actions/upload-artifact@v4
with:
name: frida-portal-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
- name: Upload frida-inject
uses: actions/upload-artifact@v4
with:
name: frida-inject-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
- name: Upload frida-gadget
if: matrix.arch != 'arm64'
uses: actions/upload-artifact@v4
with:
name: frida-gadget-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/frida-gadget.dylib
- name: Upload Swift bindings
if: matrix.arch != 'arm64e'
uses: actions/upload-artifact@v4
with:
name: frida-swift-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/Frameworks/
- name: Package Python bindings
run: |
export FRIDA_EXTENSION=$(find "$FRIDA_PREFIX" -name _frida.abi3.so)
case ${{ matrix.arch }} in
x86_64)
platform=macosx-10.13-x86_64
;;
arm64*)
platform=macosx-11.0-arm64
;;
esac
export _PYTHON_HOST_PLATFORM=$platform
cd subprojects/frida-python
pip wheel -w "$FRIDA_PREFIX/wheels" --no-deps .
- name: Upload Python bindings
uses: actions/upload-artifact@v4
with:
name: frida-python-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
- name: Build Node.js bindings
if: matrix.arch != 'arm64e'
run: |
installdir=$FRIDA_PREFIX/prebuilds
export FRIDA_DEPS=$PWD/deps
export PKG_CONFIG_PATH=$FRIDA_PREFIX/lib/pkgconfig
python tools/ensure-submodules.py frida-node
cd subprojects/frida-node
npm version $FRIDA_VERSION
./configure \
"--prefix=$FRIDA_PREFIX" \
--host=macos-${{ matrix.arch }}
make prebuild
mkdir "$installdir"
cp build/*.tar.gz "$installdir"
shell: zsh {0}
- name: Upload Node.js bindings
if: matrix.arch != 'arm64e'
uses: actions/upload-artifact@v4
with:
name: frida-node-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
- name: Upload QML bindings
if: matrix.arch != 'arm64e'
uses: actions/upload-artifact@v4
with:
name: frida-qml-macos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/qml/
frida-linux:
needs: sdk-linux
strategy:
matrix:
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64-musl, mips, mipsel, mips64, mips64el]
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Grab frida-core
run: python tools/ensure-submodules.py frida-core
- name: Install Go toolchain
uses: actions/setup-go@v5
with:
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
- name: Configure qemu-user
if: ${{ !startsWith(matrix.arch, 'x86') }}
run: echo "FRIDA_QEMU_SYSROOT=/opt/x-tools/$XTOOLS_HOST/$XTOOLS_HOST/sysroot" >> $GITHUB_ENV
- name: Prepare environment for installing Qt
if: matrix.arch == 'x86_64'
run: |
apt-get update
apt-get install -y sudo
echo "PIP_BREAK_SYSTEM_PACKAGES=1" >> $GITHUB_ENV
- name: Install Qt
if: matrix.arch == 'x86_64'
uses: jurplel/install-qt-action@v4
with:
version: '6.7.0'
cache: true
setup-python: false
- name: Configure
run: >-
./configure
"--prefix=$FRIDA_PREFIX"
--host=$XTOOLS_HOST
--enable-gadget
--enable-server
--enable-portal
--enable-inject
--enable-frida-python
--
-Dlibdir=lib
-Dfrida_qml=${{ matrix.arch == 'x86_64' && 'enabled' || 'disabled' }}
-Dfrida-gum:devkits=gum,gumjs
-Dfrida-core:compiler_backend=${{ !(startsWith(matrix.arch, 'mips') || matrix.arch == 'armbe8' || matrix.arch == 'arm64be') && 'enabled' || 'disabled' }}
-Dfrida-core:devkits=core
- name: Compile
run: make
- name: Install
run: make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/
- name: Upload frida-server
uses: actions/upload-artifact@v4
with:
name: frida-server-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
- name: Upload frida-portal
uses: actions/upload-artifact@v4
with:
name: frida-portal-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
- name: Upload frida-inject
uses: actions/upload-artifact@v4
with:
4B9A name: frida-inject-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
- name: Upload 32-bit frida-gadget
if: ${{ !contains(matrix.arch, '64') }}
uses: actions/upload-artifact@v4
with:
name: frida-gadget-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.so
- name: Upload 64-bit frida-gadget
if: ${{ contains(matrix.arch, '64') }}
uses: actions/upload-artifact@v4
with:
name: frida-gadget-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/64/frida-gadget.so
- name: Package Python bindings
run: |
export FRIDA_EXTENSION=$(find "$FRIDA_PREFIX" -name _frida.abi3.so)
case ${{ matrix.arch }} in
*-musl)
py_oses=(musllinux_1_1)
;;
x86*)
py_oses=(manylinux_2_5 manylinux1)
;;
arm*|ppc*|s390x)
py_oses=(manylinux_2_17 manylinux2014)
;;
*)
py_oses=(manylinux_2_5)
;;
esac
frida_arch=$(echo "${{ matrix.arch }}" | cut -f1 -d"-")
case $frida_arch in
x86)
py_arch=i686
;;
armhf)
py_arch=armv7l
;;
arm64)
py_arch=aarch64
;;
*)
py_arch=$frida_arch
;;
esac
cd subprojects/frida-python
export _PYTHON_HOST_PLATFORM=linux-$py_arch
for py_os in "${py_oses[@]}"; do
echo "plat_name = ${py_os}_${py_arch}" >> setup.cfg
pip wheel -w "$FRIDA_PREFIX/wheels" --no-deps .
git checkout setup.cfg
done
shell: bash
- name: Upload Python bindings
uses: actions/upload-artifact@v4
with:
name: frida-python-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
- name: Build Node.js bindings
if: ${{ !(startsWith(matrix.arch, 'mips') || endsWith(matrix.arch, '-musl') || matrix.arch == 'armbe8' || matrix.arch == 'arm64be') }}
run: |
installdir=$FRIDA_PREFIX/prebuilds
export FRIDA_DEPS=$PWD/deps
export PKG_CONFIG_PATH=$FRIDA_PREFIX/lib/pkgconfig
python tools/ensure-submodules.py frida-node
cd subprojects/frida-node
npm version $FRIDA_VERSION
./configure \
"--prefix=$FRIDA_PREFIX" \
--host=$XTOOLS_HOST
make prebuild
mkdir "$installdir"
cp build/*.tar.gz "$installdir"
shell: bash
- name: Upload Node.js bindings
if: ${{ !(startsWith(matrix.arch, 'mips') || endsWith(matrix.arch, '-musl') || matrix.arch == 'armbe8' || matrix.arch == 'arm64be') }}
uses: actions/upload-artifact@v4
with:
name: frida-node-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
- name: Upload QML bindings
if: matrix.arch == 'x86_64'
uses: actions/upload-artifact@v4
with:
name: frida-qml-linux-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/qml/
frida-ios:
needs: [sdk-macos, sdk-ios]
strategy:
matrix:
arch: [arm64, arm64e, x86_64-simulator, arm64-simulator]
fail-fast: false
runs-on: macos-latest
env:
XCODE11: /Applications/Xcode_11.7.app
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Grab frida-core
run: python tools/ensure-submodules.py frida-core
- name: Install Go toolchain
uses: actions/setup-go@v5
with:
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
- name: Configure
run: >-
./configure
--prefix=/usr
--host=ios-${{ matrix.arch }}
--enable-portal
--
-Dfrida-gum:devkits=gum,gumjs
-Dfrida-core:compiler_backend=${{ matrix.arch != 'arm64e' && 'enabled' || 'disabled' }}
-Dfrida-core:assets=installed
-Dfrida-core:devkits=core
- name: Compile
run: make
- name: Install
run: DESTDIR="$FRIDA_PREFIX" make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/core/
- name: Upload frida-server
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-server-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-server
- name: Upload frida-portal
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-portal-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-portal
- name: Upload frida-inject
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-inject-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-inject
- name: Upload frida-helper
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-helper-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-helper
- name: Upload frida-agent
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-agent-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-agent.dylib
- name: Upload frida-gadget
if: matrix.arch != 'arm64'
uses: actions/upload-artifact@v4
with:
name: frida-gadget-ios-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-gadget.dylib
frida-watchos:
needs: [sdk-macos, sdk-watchos]
strategy:
matrix:
arch: [arm64, arm64-simulator]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Configure
run: >-
./configure
"--prefix=$FRIDA_PREFIX"
--host=watchos-${{ matrix.arch }}
--
-Dfrida-gum:devkits=gum,gumjs
-Dfrida-core:devkits=core
- name: Compile
run: make
- name: Install
run: make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-watchos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-watchos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-watchos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/
- name: Upload frida-gadget
uses: actions/upload-artifact@v4
with:
name: frida-gadget-watchos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/frida-gadget.dylib
frida-tvos:
needs: [sdk-macos, sdk-tvos]
strategy:
matrix:
arch: [arm64, arm64-simulator]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Grab frida-core
run: python tools/ensure-submodules.py frida-core
- name: Configure
run: >-
./configure
--prefix=/usr
--host=tvos-${{ matrix.arch }}
--enable-portal
--
-Dfrida-gum:devkits=gum,gumjs
-Dfrida-core:assets=installed
-Dfrida-core:devkits=core
- name: Compile
run: make
- name: Install
run: DESTDIR="$FRIDA_PREFIX" make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/core/
- name: Upload frida-server
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-server-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-server
- name: Upload frida-portal
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-portal-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-portal
- name: Upload frida-inject
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-inject-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-inject
- name: Upload frida-helper
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-helper-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-helper
- name: Upload frida-agent
if: ${{ !endsWith(matrix.arch, '-simulator') }}
uses: actions/upload-artifact@v4
with:
name: frida-agent-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-agent.dylib
- name: Upload frida-gadget
uses: actions/upload-artifact@v4
with:
name: frida-gadget-tvos-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-gadget.dylib
frida-android:
needs: [sdk-linux, sdk-android-32, sdk-android-64]
strategy:
matrix:
arch: [x86, x86_64, arm, arm64]
fail-fast: false
runs-on: ubuntu-latest
< B7A /td> steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Grab frida-core
run: python tools/ensure-submodules.py frida-core
- name: Install Go toolchain
uses: actions/setup-go@v5
with:
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
- name: Set up NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
add-to-path: false
- name: Add ANDROID_NDK_ROOT to environment
run: echo "ANDROID_NDK_ROOT=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV
- name: Configure
run: >-
./configure
"--prefix=$FRIDA_PREFIX"
--host=android-${{ matrix.arch }}
--enable-portal
--
-Dfrida-gum:devkits=gum,gumjs
-Dfrida-core:compiler_backend=enabled
-Dfrida-core:devkits=core
- name: Compile
run: make
- name: Install
run: make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/
- name: Upload frida-server
uses: actions/upload-artifact@v4
with:
name: frida-server-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
- name: Upload frida-portal
uses: actions/upload-artifact@v4
with:
name: frida-portal-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
- name: Upload frida-inject
uses: actions/upload-artifact@v4
with:
name: frida-inject-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
- name: Upload 32-bit frida-gadget
if: ${{ !contains(matrix.arch, '64') }}
uses: actions/upload-artifact@v4
with:
name: frida-gadget-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.so
- name: Upload 64-bit frida-gadget
if: ${{ contains(matrix.arch, '64') }}
uses: actions/upload-artifact@v4
with:
name: frida-gadget-android-${{ matrix.arch }}
path: ${{ env.FRIDA_PREFIX }}/lib/frida/64/frida-gadget.so
frida-qnx:
runs-on: ubuntu-latest
needs: sdk-linux
container: ghcr.io/frida/qnx-tools:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Add CFLAGS to environment
run: echo "CFLAGS=\"--sysroot=$QNX_TARGET/armle-v7\"" >> $GITHUB_ENV
- name: Roll SDK
run: releng/deps.py roll sdk arm-unknown-nto-qnx6.5.0eabi
- name: Configure
run: >-
./configure
"--prefix=$FRIDA_PREFIX"
--host=arm-unknown-nto-qnx6.5.0eabi
--enable-portal
--
-Dfrida-gum:devkits=gum,gumjs
-Dfrida-core:devkits=core
- name: Compile
run: make
- name: Install
run: make install
- name: Upload Gum devkit
uses: actions/upload-artifact@v4
with:
name: frida-gum-devkit-qnx-armeabi
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/
- name: Upload GumJS devkit
uses: actions/upload-artifact@v4
with:
name: frida-gumjs-devkit-qnx-armeabi
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/
- name: Upload Core devkit
uses: actions/upload-artifact@v4
with:
name: frida-core-devkit-qnx-armeabi
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/
- name: Upload frida-server
uses: actions/upload-artifact@v4
with:
name: frida-server-qnx-armeabi
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
- name: Upload frida-portal
uses: actions/upload-artifact@v4
with:
name: frida-portal-qnx-armeabi
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
- name: Upload frida-inject
uses: actions/upload-artifact@v4
with:
name: frida-inject-qnx-armeabi
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
- name: Upload frida-gadget
uses: actions/upload-artifact@v4
with:
name: frida-gadget-qnx-armeabi
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.so
toolchain-windows:
strategy:
matrix:
arch: [x86, arm64]
fail-fast: false
runs-on: ${{ matrix.arch == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-windows-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll toolchain
run: python releng\deps.py roll toolchain windows-${{ matrix.arch }}
sdk-windows:
needs: toolchain-windows
strategy:
matrix:
arch: [x86, x86_64, arm64]
config: [md, mdd, mt, mtd]
fail-fast: false
runs-on: ${{ matrix.arch == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-windows-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll SDK
run: python releng\deps.py roll sdk windows-${{ matrix.arch }}-${{ matrix.config }} --activate
toolchain-macos:
strategy:
matrix:
arch: [x86_64, arm64]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll toolchain
run: releng/deps.py roll toolchain macos-${{ matrix.arch }}
sdk-macos:
needs: toolchain-macos
strategy:
matrix:
arch: [x86_64, arm64, arm64e]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll SDK
run: releng/deps.py roll sdk macos-${{ matrix.arch }} --activate
sdk-ios:
needs: toolchain-macos
strategy:
matrix:
arch: [arm64, arm64e, x86_64-simulator, arm64-simulator]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll SDK
run: releng/deps.py roll sdk ios-${{ matrix.arch }} --activate
sdk-watchos:
needs: toolchain-macos
strategy:
matrix:
arch: [arm64, arm64-simulator]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll SDK
run: releng/deps.py roll sdk watchos-${{ matrix.arch }} --activate
sdk-tvos:
needs: toolchain-macos
strategy:
matrix:
arch: [arm64, arm64-simulator]
fail-fast: false
runs-on: macos-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-macos-env
with:
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll SDK
run: releng/deps.py roll sdk tvos-${{ matrix.arch }} --activate
toolchain-linux:
strategy:
matrix:
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64beilp32, arm64-musl]
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Roll toolchain
run: releng/deps.py roll toolchain $XTOOLS_HOST
sdk-linux:
needs: toolchain-linux
strategy:
matrix:
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64beilp32, arm64-musl, mips, mipsel, mips64, mips64el]
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Set FRIDA_CAN_RUN_HOST_BINARIES
if: ${{ matrix.arch == 'x86' }}
run: echo "FRIDA_CAN_RUN_HOST_BINARIES=yes" >> $GITHUB_ENV
- name: Configure qemu-user
if: ${{ !startsWith(matrix.arch, 'x86') }}
run: echo "FRIDA_QEMU_SYSROOT=/opt/x-tools/$XTOOLS_HOST/$XTOOLS_HOST/sysroot" >> $GITHUB_ENV
- name: Roll SDK
run: releng/deps.py roll sdk $XTOOLS_HOST --activate
sdk-android-32:
needs: toolchain-linux
strategy:
matrix:
arch: [x86, arm]
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/frida/x-tools-linux-x86:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Set up NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
add-to-path: false
- name: Roll SDK
run: releng/deps.py roll sdk android-${{ matrix.arch }} --build=$XTOOLS_HOST --activate
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
sdk-android-64:
needs: toolchain-linux
strategy:
matrix:
arch: [x86_64, arm64]
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/frida/x-tools-linux-x86_64:latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup-linux-env
with:
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
cloudflare-email: ${{ secrets.CF_EMAIL }}
cloudflare-token: ${{ secrets.CF_TOKEN }}
- name: Set up NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
add-to-path: false
- name: Roll SDK
run: releng/deps.py roll sdk android-${{ matrix.arch }} --build=$XTOOLS_HOST --activate
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
0