https://github.com/frida/frida-gum
Cross-platform instrumentation and introspection library written in C
https://github.com/frida/frida-gum
frida instrumentation
Last synced: 5 months ago
JSON representation
Cross-platform instrumentation and introspection library written in C
- Host: GitHub
- URL: https://github.com/frida/frida-gum
- Owner: frida
- License: other
- Created: 2013-04-10T07:25:56.000Z (over 12 years ago)
- Default Branch: main
- Last Pushed: 2025-06-18T21:34:57.000Z (5 months ago)
- Last Synced: 2025-06-19T05:58:39.551Z (5 months ago)
- Topics: frida, instrumentation
- Language: C
- Homepage: https://frida.re
- Size: 35 MB
- Stars: 834
- Watchers: 32
- Forks: 273
- Open Issues: 181
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: COPYING
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-rainmana - frida/frida-gum - Cross-platform instrumentation and introspection library written in C (C)
- awesome-ios-security - frida-gum - Cross-platform instrumentation and introspection library written in C. (Tools / Dynamic Analysis Tools)
- awesome-apple-security - frida-gum - Cross-platform instrumentation and introspection library written in C. (Tools / Dynamic Analysis Tools)
- awesome-reverse-engineering - **228**星 - level code instrumentation library used by frida-core (<a id="f24f1235fd45a1aa8d280eff1f03af7e"></a>Frida / <a id="a5336a0f9e8e55111bda45c8d74924c1"></a>工具)
README
# Gum
Cross-platform instrumentation and introspection library written in C.
This library is consumed by [frida-core][] through its JavaScript bindings,
[GumJS][].
Provides:
- Instrumentation core
- Inline hooking: [Interceptor][]
- Stealthy code tracing: [Stalker][]
- Memory monitoring: [MemoryAccessMonitor][]
- Cross-platform introspection
- Running threads and other [process][] state
- Loaded modules, including their:
- Imports
- Exports
- Symbols
- [Memory][] scanning
- [DebugSymbol][] lookups
- [Backtracer][] implementations
- [Kernel][] state (iOS only for now)
- Out-of-process dynamic linker for i/macOS: [Gum.Darwin.Mapper][]
- Code generation:
- [X86Writer][]
- [ArmWriter][]
- [ThumbWriter][]
- [Arm64Writer][]
- [MipsWriter][]
- Code relocation:
- [X86Relocator][]
- [ArmRelocator][]
- [ThumbRelocator][]
- [Arm64Relocator][]
- [MipsRelocator][]
- Helper libraries for developers needing highly granular:
- [Heap][] allocation tracking and leak checking.
- [Profiling][] with [worst-case inspector][] callback.
## Binaries
Download a devkit for statically linking into your own projects from the
Frida [releases][] page.
[frida-core]: https://github.com/frida/frida-core
[GumJS]: https://github.com/frida/frida-gum/tree/master/bindings/gumjs
[Interceptor]: https://github.com/frida/frida-gum/blob/master/gum/guminterceptor.h
[Stalker]: https://github.com/frida/frida-gum/blob/master/gum/gumstalker.h
[MemoryAccessMonitor]: https://github.com/frida/frida-gum/blob/master/gum/gummemoryaccessmonitor.h
[process]: https://github.com/frida/frida-gum/blob/master/gum/gumprocess.h
[Memory]: https://github.com/frida/frida-gum/blob/master/gum/gummemory.h
[DebugSymbol]: https://github.com/frida/frida-gum/blob/master/gum/gumsymbolutil.h
[Backtracer]: https://github.com/frida/frida-gum/blob/master/gum/gumbacktracer.h
[Kernel]: https://github.com/frida/frida-gum/blob/master/gum/gumkernel.h
[Gum.Darwin.Mapper]: https://github.com/frida/frida-gum/blob/master/gum/backend-darwin/include/gum/gumdarwinmapper.h
[X86Writer]: https://github.com/frida/frida-gum/blob/master/gum/arch-x86/gumx86writer.h
[ArmWriter]: https://github.com/frida/frida-gum/blob/master/gum/arch-arm/gumarmwriter.h
[ThumbWriter]: https://github.com/frida/frida-gum/blob/master/gum/arch-arm/gumthumbwriter.h
[Arm64Writer]: https://github.com/frida/frida-gum/blob/master/gum/arch-arm64/gumarm64writer.h
[MipsWriter]: https://github.com/frida/frida-gum/blob/master/gum/arch-mips/gummipswriter.h
[X86Relocator]: https://github.com/frida/frida-gum/blob/master/gum/arch-x86/gumx86relocator.h
[ArmRelocator]: https://github.com/frida/frida-gum/blob/master/gum/arch-arm/gumarmrelocator.h
[ThumbRelocator]: https://github.com/frida/frida-gum/blob/master/gum/arch-arm/gumthumbrelocator.h
[Arm64Relocator]: https://github.com/frida/frida-gum/blob/master/gum/arch-arm64/gumarm64relocator.h
[MipsRelocator]: https://github.com/frida/frida-gum/blob/master/gum/arch-mips/gummipsrelocator.h
[Heap]: https://github.com/frida/frida-gum/tree/master/libs/gum/heap
[Profiling]: https://github.com/frida/frida-gum/tree/master/libs/gum/prof
[worst-case inspector]: https://github.com/frida/frida-gum/blob/7e4c5b547b035ae05d2f9e160652101bf741e6c3/libs/gum/prof/gumprofiler.h#L40-L42
[releases]: https://github.com/frida/frida/releases