History
Frida: Project History
Origins
Frida emerged from brainstorming sessions between @oleavr and @hsorbo about making reverse-engineering more interactive and productive.
Core Component Development
frida-gum
- Generic, cross-platform code-instrumentation library written in C
- Created by @oleavr; originally limited to function hooking and memory analysis (unit-test aids for memory leaks and profiling)
- Later expanded into the instrumentation core of Frida
- Repository: https://github.com/frida/frida-gum
frida-core
- Handles injection of shared libraries into arbitrary target processes
- Maintains a live two-way communication channel with injected code
- Repository: https://github.com/frida/frida-core
Scripting Runtime
- frida-gum embeds QuickJS as the JavaScript engine inside the injected payload
Stalker (Code Tracing Engine)
- Dynamic recompilation-based code tracing engine inside frida-gum
- Significantly improved through pair-programming hackathons between @oleavr and @karltk
- x86 implementation: https://github.com/frida/frida-gum/blob/master/gum/backend-x86/gumstalker-x86.c
- Early development blog post: http://blog.kalleberg.org/post/833101026/live-x86-code-instrumentation-with-frida
Language Bindings
| Language | Repository |
|---|---|
| Node.js | https://github.com/frida/frida-node |
| Python | https://github.com/frida/frida-python |
| Swift | https://github.com/frida/frida-swift |
| .NET (CLR) | https://github.com/frida/frida-clr |
| Qt/QML | https://github.com/frida/frida-qml |
| Go | https://github.com/frida/frida-go |
| C API | Direct usage via frida-gum |
Summary
Frida is a toolbox for dynamic instrumentation and reverse-engineering. frida-core injects frida-gum into target processes; frida-gum hooks functions and runs a QuickJS-based scripting runtime.