{"id":13531047,"url":"https://github.com/nowsecure/frida-cycript","last_synced_at":"2025-04-05T06:02:35.421Z","repository":{"id":39969446,"uuid":"67085858","full_name":"nowsecure/frida-cycript","owner":"nowsecure","description":"Cycript fork powered by Frida.","archived":false,"fork":false,"pushed_at":"2023-03-04T04:31:57.000Z","size":7382,"stargazers_count":384,"open_issues_count":12,"forks_count":45,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-03-29T05:07:42.335Z","etag":null,"topics":["cylang","dsl","frida","ios","nodejs","substrate"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nowsecure.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-09-01T01:08:10.000Z","updated_at":"2025-03-11T23:33:37.000Z","dependencies_parsed_at":"2023-01-24T20:45:40.137Z","dependency_job_id":"3ca7f788-f91e-45c8-95c2-9b6d422231ca","html_url":"https://github.com/nowsecure/frida-cycript","commit_stats":{"total_commits":1486,"total_committers":9,"mean_commits":"165.11111111111111","dds":"0.12718707940780616","last_synced_commit":"266afd655b1ed669fa1800bd367a99bf50c7d107"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsecure%2Ffrida-cycript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsecure%2Ffrida-cycript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsecure%2Ffrida-cycript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowsecure%2Ffrida-cycript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nowsecure","download_url":"https://codeload.github.com/nowsecure/frida-cycript/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294514,"owners_count":20915340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cylang","dsl","frida","ios","nodejs","substrate"],"created_at":"2024-08-01T07:00:59.343Z","updated_at":"2025-04-05T06:02:35.397Z","avatar_url":"https://github.com/nowsecure.png","language":"C","funding_links":[],"categories":["Dynamic Analysis","Projects"],"sub_categories":["nowsecure"],"readme":"# frida-cycript\n\nThis is a fork of [Cycript] [1] in which we replaced its runtime with a brand\nnew runtime called [Mjølner] [3] powered by [Frida] [4]. This enables\nfrida-cycript to run on all the platforms and architectures maintained by\n[frida-core] [8].\n\n# Motivation\n\n\u003cimg src=\"https://github.com/nowsecure/cycript/raw/master/docs/demo.gif\" width=\"583\" /\u003e\n\n[Cycript] [1] is an awesome interactive console for exploring and modifying\nrunning applications on iOS, Mac, and Android. It was created by [@saurik] [2]\nand essentially consists of four parts:\n\n1. Its readline-based user interface;\n2. Compiler that takes cylang as input and produces plain JavaScript as output;\n3. A runtime that executes the plain JavaScript on JavaScriptCore, providing a\n   set of APIs expected by the compiled scripts, plus some facilities for\n   injecting itself into remote processes;\n4. A couple of \"user-space\" modules written in cylang.\n\nWe didn't touch any other aspects of Cycript or did so with minimal changes.\n\nWe went out of our way to avoid touching the compiler, and also left the user\ninterface mostly untouched, only adding extra CLI switches for things like\ndevice selection. We did, however, mostly rewrite the Cydia Substrate module\nso existing scripts relying on this will get the portability and [performance\nboost] [5] offered by Frida's instrumentation core.\n\nWe will be maintaining this fork and intend to stay in sync with user interface\nand language improvements made upstream.\n\n## FAQ\n\n### What are some advantages of this fork?\n\nWE believe the main advantage is portability, but also think you should consider:\n\n- Ability to attach to sandboxed apps on Mac, without touching /usr or modifying\n  the system in any way;\n- Instead of crashing the process if you make a mistake and access a bad\n  pointer, you will get a JavaScript exception;\n- Frida's function hooking is able to hook many functions not supported by\n  Cydia Substrate.\n\n### What are some disadvantages?\n\nOur runtime doesn't yet support all the features that upstream's runtime does,\nbut we are working hard to close this gap. Please file issues if something you\nrely on isn't working as expected.\n\n### Is Windows support planned?\n\nYes. You should already be able to do this by running frida-server on Windows\nand connecting to it with Cycript on your UNIX system. (We didn't try this yet\nso please tell us if and how it works for you.)\n\n### How does this benefit existing Frida-users building their own tools?\n\nWe have improved [frida-compile] [7] to support cylang by integrating the\nCycript compiler. Sources with a .cy extension get compiled transparently, and\nthis \"just works\" as long as [our runtime] [3] is also included in the compiled\nagent.\n\n## Status\n\nPlease see [our test-suite] [6] to get an overview of what we currently support.\n\n## Building\n\n### macOS\n\nInstall Meson and Ninja:\n\n    pip3 install meson\n    brew install ninja\n\nClone this repo:\n\n    git clone --recurse-submodules https://github.com/nowsecure/frida-cycript.git\n\nGenerate the build system:\n\n    meson build --buildtype minsize --strip\n\nBuild:\n\n    ninja -C build\n\nRun Cycript:\n\n    ./build/src/cycript\n\nRun the test-suite:\n\n    cd test \u0026\u0026 npm install \u0026\u0026 npm run test\n\nTo build the Node.js bindings:\n\n    meson build --buildtype minsize --strip --default-library static -D enable_engine=false -D enable_console=false\n    ninja -C build\n    cd bindings/node/cylang/\n    npm install\n\n### Windows\n\nInstall Meson and Ninja, and clone this repo, similar to above.\n\nTo build the Node.js bindings from a MSVS Native Tools Command Prompt for VS 2017:\n\n    meson build --buildtype minsize --strip --default-library static -D enable_engine=false -D enable_console=false -D b_vscrt=mt\n    ninja -C build\n    cd bindings\\node\\cylang\n    npm install\n\nThen to run the test-suite:\n\n    npm run test\n\n\n### Contributing\n\nClone and link [mojlner](https://github.com/nowsecure/mjolner) repository:\n\n    # build first (@see: above)\n    cd src\n    git clone git@github.com:nowsecure/mjolner.git ~/dev/mjolner\n    npm link ~/dev/mjolner/\n    npm run watch\n    ...\n\n\n  [1]: http://www.cycript.org/\n  [2]: https://twitter.com/saurik\n  [3]: https://github.com/nowsecure/mjolner\n  [4]: http://www.frida.re/\n  [5]: https://gist.github.com/oleavr/bfd9b65865e9f17914f2\n  [6]: https://github.com/nowsecure/cycript/blob/master/test/types.js\n  [7]: https://github.com/frida/frida-compile\n  [8]: https://github.com/frida/frida-core/tree/master/src\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnowsecure%2Ffrida-cycript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnowsecure%2Ffrida-cycript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnowsecure%2Ffrida-cycript/lists"}