| Crates.io | liblisa |
| lib.rs | liblisa |
| version | 0.1.4 |
| created_at | 2024-08-30 17:20:14.11404+00 |
| updated_at | 2025-01-24 15:10:12.825851+00 |
| description | A tool for automated discovery and analysis of the ISA of a CPU. |
| homepage | https://liblisa.nl/ |
| repository | https://github.com/liblisa/liblisa |
| max_upload_size | |
| id | 1357935 |
| size | 2,040,195 |
libLISA is a library for automated discovery and analysis of CPU instructions. This crate is the core library that can be used to load and manipulate already-analyzed datasets. Several separate crates are available for enumeration, synthesis and architecture support:
liblisa-enc for enumeration and encoding analysisliblisa-synth for synthesisliblisa-x64-observer for observing instruction execution on x86-64Encodings support serde, and can be serialized and deserialized by any library that supports serde. By default, libLISA uses JSON. You can import these semantics as follows:
use std::fs::File;
use std::io::BufReader;
use std::path::PathBuf;
use liblisa::encoding::Encoding;
use liblisa::semantics::default::computation::SynthesizedComputation;
use liblisa::arch::x64::X64Arch;
let file = File::open("semantics.json").unwrap();
let reader = BufReader::new(file);
let semantics: Vec<Encoding<X64Arch, SynthesizedComputation>> =
serde_json::from_reader(reader).unwrap();
See encoding::Encoding for how these semantics can be used.
z3: adds the z3 crate as a dependency, and enables the Z3 implementation for smt::SmtSolver.x64-undef: enables the arch::x64::undef namespace, which uses the XED disassembler library to provide definitions for undefined behavior.