#instructions #analysis #x86-64 #cpu #discovery #isa #automated

nightly liblisa-enc

A tool for automated discovery and analysis of the ISA of a CPU

1 unstable release

0.1.0 Aug 30, 2024

#23 in #isa

AGPL-3.0-only

2MB
47K SLoC

This library contains libLISA's encoding analysis and some parts of enumeration.

Encoding Analysis

Encoding analysis can be invoked as follows:

use liblisa::arch::x64::X64Arch;
use liblisa::instr::Instruction;
use liblisa_enc::infer_encoding;
use liblisa_x64_observer::with_oracle;

let instr = Instruction::new(&[0x90]);
let encoding = with_oracle(|mut oracle| infer_encoding(&instr, &mut oracle)).unwrap();

println!("{encoding}");

Enumeration

Two techniques for skipping invalid instructions or errors are implemented: tunneling and randomized search. See crate::random_search_skip_invalid_instrs and tunnel_invalid_instrs/tunnel_memory_errors.

Dependencies

~29MB
~582K SLoC