Skip to content

Subprojects

exav is a workspace of focused pieces rather than one binary. Besides the three products (malware scanning, archive extraction and the file viewer), these are useful without ever running a virus scan.

Crate What it is
exav-grep grep for the inside of archives: search recursively through zip/rar/7z/tar/iso/OLE/PDF/email members
exav-imagehash Perceptual image hashes with every step a parameter, reproducing ClamAV’s fuzzy_img hash and Python imagehash’s phash bit for bit, as a library and a CLI
exav-pe-emu A sandboxed x86-32 emulator that unpacks packed Windows executables by running their stub, as a library and a CLI
Crate What it is
exav-core The scanning engine: database parsing, pattern and hash matching, file typing, and the verdict model, to embed in a program
exav-render Memory-safe decoders that turn raster images, DWG and DXF drawings and IFC and STL models into something to draw, behind @exav/viewer and exav-imagehash
exav-x86 A decode-only x86-32 instruction decoder with no dependencies, checked against an independent decoder over real samples
exav-update The signature-fetching library behind --auto-update

The products’ own packages are documented with them: exav-unpack and @exav/unpack-wasm under Archive extraction, @exav/viewer under File viewer. exav, the scanner’s binary, publishes no library: embed exav-core instead.

Technical architecture shows how they depend on each other, and why each is a crate of its own.