通过将 Frida 与增强版 Tenet 相结合,Frinet 有助于大型程序研究、漏洞研究以及 iOS、Android、Linux、Windows 和大多数架构上的根因分析。Synacktiv 网站上的博客文章
此版本是对 synacktiv/frinet 的完全重写(最初是 gaasedelen/tenet 的一个分支)。
你仍然可以在 legacy 分支 上找到旧版本。
该项目已在 SSTIC 2026(法语)上展示:视频/幻灯片/论文。
新架构基于四个组件:
Indexer:一个 Rust CLI,用于从跟踪文件中生成优化索引。Backend:一个 Rust crate,实现专门的算法来查询优化索引文件。Backend (Python bindings):一个 Rust crate,提供 Python 接口。IDA Plugin:一层薄的 Python 代码,用于查询后端数据并将其集成到 IDA 界面中。基于 Frida 的跟踪器:与旧版 Frinet 相同。
索引器 / 后端:
crates/db。前端:
# 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