
Frida-based tracer for easier reverse-engineering on Android, iOS, Linux, Windows and most related architectures.
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:
crates/db.Frontend:
# 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