#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

#11 in #isa

Download history 116/week @ 2024-08-26 3/week @ 2024-09-02

119 downloads per month

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

~28MB
~580K SLoC