Skip to main content

Frida-powered hook runner based on JSON hook files.

Project description

Frooky

   ___    ____           
  / __\  / _  |    _     _    _  _   _   _
 / _\   | (_) |  / _ \ / _ \ | / /  | | | |
/ /     / / | | | (_) | (_) ||  <   | |_| |
\/     /_/  |_|  \___/ \___/ |_|\_\  \__, |
                                     |___/

frooky is a Frida-based dynamic analysis tool for Android and iOS apps based on JSON hook files.

PyPi

  • Hook Java/Kotlin methods and native C/C++ functions
  • Simple JSON hook file format
  • Support for method overloads and stack trace capturing
  • Argument capturing with various data types
  • Filtering hooks by argument values or stack trace patterns
  • Output events in JSON Lines format for easy processing

See more in docs/usage.md.

Installation

Simply install via pip and you'll get the frooky CLI tool:

pip3 install frooky

Usage

Create a hook file (e.g., hooks.json) as described in docs/usage.md, then run frooky with the desired options:

# Attach by app name
frooky -U -n "My App" --platform android hooks.json

# Spawn and add multiple hook files (hooks are merged)
frooky -U -f com.example.app --platform android storage.json crypto.json

See frooky -h for more options.

Example

We'll use the OWASP MAS MASTG-DEMO-0072 app to demonstrate hooking a cryptographic key generation method.

First you need to create a hook file, e.g., crypto.json:

{
  "category": "CRYPTO",
  "hooks": [
    {
      "class": "android.security.keystore.KeyGenParameterSpec$Builder",
      "method": "$init",
      "maxFrames": 10
    }
  ]
}

Then run frooky with the hook file against your target app:

frooky -U -n "MASTestApp" --platform android crypto.json

Output (pretty-printed for readability):

Events are written to the output file in JSON Lines format (one JSON object per line, known as NDJSON). You can easily pretty-print it e.g. using jq . output.json.

{
  "id": "14535033-08ea-4063-897c-eacd4a885d8b",
  "type": "hook",
  "category": "CRYPTO",
  "time": "2026-01-14T16:02:21.782Z",
  "class": "android.security.keystore.KeyGenParameterSpec$Builder",
  "method": "$init",
  "instanceId": 35486102,
  "stackTrace": [
    "android.security.keystore.KeyGenParameterSpec$Builder.<init>(Native Method)",
    "org.owasp.mastestapp.MastgTest.generateKey(MastgTest.kt:97)",
    "org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:41)",
    "org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$12$lambda$11(MainActivity.kt:101)",
    "org.owasp.mastestapp.MainActivityKt.$r8$lambda$Pm6AsbKBmypP53K-UABM21E_Xxk(Unknown Source:0)",
    "org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)",
    "java.lang.Thread.run(Thread.java:1012)"
  ],
  "inputParameters": [
    {
      "declaredType": "java.lang.String",
      "value": "MultiPurposeKey"
    },
    {
      "declaredType": "int",
      "value": 15
    }
  ],
  "returnValue": [
    {
      "declaredType": "void",
      "value": "void"
    }
  ]
}

See more in docs/usage.md and see a full example in docs/examples/example.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frooky-0.1.2.tar.gz (70.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

frooky-0.1.2-py3-none-any.whl (52.3 kB view details)

Uploaded Python 3

File details

Details for the file frooky-0.1.2.tar.gz.

File metadata

  • Download URL: frooky-0.1.2.tar.gz
  • Upload date:
  • Size: 70.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for frooky-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7918ed68910b32c7671a20ab3d2def83eacbb6f43af8fa93fc42107e69d26614
MD5 95dc1409ab34ef31d851ab83df78f663
BLAKE2b-256 9dfe25fb906f118db31a76aa5d74ef5ca51298cdeb4ffa6c4d7c35ad0a3358f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for frooky-0.1.2.tar.gz:

Publisher: publish.yml on cpholguera/frooky

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frooky-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: frooky-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 52.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for frooky-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1f73847f2e5d3ed816d110891ee438aacf19272a059b5dc976c2018488258287
MD5 c72ca104a110ab366ba905e89e005b84
BLAKE2b-256 61048d6c9e59a7aa37db8232c2226f41fbe2612b2138f3348cd4dcdf86973425

See more details on using hashes here.

Provenance

The following attestation bundles were made for frooky-0.1.2-py3-none-any.whl:

Publisher: publish.yml on cpholguera/frooky

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page