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.3.tar.gz (70.4 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.3-py3-none-any.whl (52.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: frooky-0.1.3.tar.gz
  • Upload date:
  • Size: 70.4 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.3.tar.gz
Algorithm Hash digest
SHA256 9c6bd2072758fa045c0c3fd8ab38ce8c67d6c9bdf82cca744b3ca8aaeaf814a8
MD5 839ad3f8f2cbfb1df5d62a8992bcf712
BLAKE2b-256 f55ae97097260b35c9cd6a41dc026b7c118a3dff3b4d81642ba77edb0fd0e90d

See more details on using hashes here.

Provenance

The following attestation bundles were made for frooky-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: frooky-0.1.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4dfbb57eb9fdd98ef5a85831129a80cad4e661ad1f833799ce1798516d4db10e
MD5 5e7fd1182dba18b39f5462099036f48f
BLAKE2b-256 b7e88c96400908f384d51e6676cb4383b43579eddcb0bbb7b92445a8d22667b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for frooky-0.1.3-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