By combining Frida with an enhanced version of Tenet, Frinet facilitates the study of large programs, vulnerability research and root-cause analysis on iOS, Android, Linux, Windows, and most architectures. Blogpost on the Synacktiv website
This version is a complete rewrite of synacktiv/frinet (originally a fork of gaasedelen/tenet).
You can still find the old version on the legacy branch.
This project was presented at SSTIC 2026 (in French) : video/slides/paper.
The new archictecture is based on four components :
Indexer: A Rust CLI that produces an optimized index from a trace file.Backend: A Rust crate that implements specialized algorihms to query the optimized index file.Backend (Python bindings): A Rust crate that exposes a python interface.IDA Plugin: A thin layer of python code that queries and integrates data from the backend into the IDA interface.
Tracer based on Frida: Identical to the legacy version of Frinet.
Indexer / Backend:
- Efficient indexing of traces with up to 2 billion instructions (~100 GB).
- Independent of the trace format (only the Tenet format is supported for now).
- Multi-threaded memory search with full regex support.
- Usable as a standalone Rust library:
crates/db.
Frontend:
- Timeline / Register / Memory views.
- Assembly timeline trails (red/green/blue).
- Memory read/write breakpoint.
- Jump to first/prev/next/last execution.
- Reach frontend feature parity with Frinet v1:
- The call tree view is not yet implemented.
- UI polishing.
# Build the Python bindings shared lib
apt install python3-dev
cargo build --release
cp target/release/libfrinet_db.so frontend/frinet_db.so
# Symlink (or copy) the IDA Plugin
ln -s $PWD/frontend ~/.idapro/plugins/frinet# 1. Trace /bin/ls with frida
python tracer/trace.py spawn /bin/ls ls 0x4c00
# 2. Build an optimised index of the trace
cargo run --bin frinet --release -- index --format tenet tracer/traces/ls_xxxx.tenet ls.db
# 3. Open the trace in IDA (File > Load File > Open Frinet DB...)cargo test
cargo install cargo-fuzz
cargo +nightly fuzz run --fuzz-dir crates/fuzz register_indexing
cargo install cargo-criterion
BENCH_DB=my.db cargo criterion