1 unstable release
0.1.0 | Aug 30, 2024 |
---|
#20 in #isa
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
~583K SLoC