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.