summaryrefslogtreecommitdiff
path: root/rust/examples
diff options
context:
space:
mode:
authorMichael Krasnitski <michael.krasnitski@gmail.com>2024-02-07 13:32:30 -0500
committerKyle Martin <krm504@nyu.edu>2024-03-18 17:46:37 -0400
commit32556598d433ffd03b5b3c9735a813ab948f30aa (patch)
tree74221b99f58eb76c69457407d73a2fe9aa2cce3a /rust/examples
parentb6897fab3eddcb94ebae211913253246f0407377 (diff)
Fix MLIL examples
Diffstat (limited to 'rust/examples')
-rw-r--r--rust/examples/mlil_lifter/src/main.rs2
-rw-r--r--rust/examples/mlil_visitor/src/main.rs36
2 files changed, 20 insertions, 18 deletions
diff --git a/rust/examples/mlil_lifter/src/main.rs b/rust/examples/mlil_lifter/src/main.rs
index b827e0cb..f6e04f22 100644
--- a/rust/examples/mlil_lifter/src/main.rs
+++ b/rust/examples/mlil_lifter/src/main.rs
@@ -38,7 +38,7 @@ fn main() {
for instr in block.iter() {
// Uplift the instruction into a native rust format
let lifted = instr.lift();
- let address = instr.address();
+ let address = instr.address;
// print the lifted instruction
println!("{address:08x}: {lifted:x?}");
diff --git a/rust/examples/mlil_visitor/src/main.rs b/rust/examples/mlil_visitor/src/main.rs
index 403f239e..63d2f50e 100644
--- a/rust/examples/mlil_visitor/src/main.rs
+++ b/rust/examples/mlil_visitor/src/main.rs
@@ -1,22 +1,24 @@
use std::env;
use binaryninja::binaryview::BinaryViewExt;
-use binaryninja::mlil::operation::MediumLevelILOperand;
-use binaryninja::mlil::{MediumLevelILFunction, MediumLevelILInstruction};
+use binaryninja::mlil::MediumLevelILLiftedOperand;
+use binaryninja::mlil::{
+ MediumLevelILFunction, MediumLevelILLiftedInstruction, MediumLevelILLiftedInstructionKind,
+};
use binaryninja::types::Variable;
fn print_indent(indent: usize) {
print!("{:<indent$}", "")
}
-fn print_operation(operation: &MediumLevelILInstruction) {
- use MediumLevelILInstruction::*;
- match operation {
- Nop(_) => print!("Nop"),
- Noret(_) => print!("Noret"),
- Bp(_) => print!("Bp"),
- Undef(_) => print!("Undef"),
- Unimpl(_) => print!("Unimpl"),
+fn print_operation(operation: &MediumLevelILLiftedInstruction) {
+ use MediumLevelILLiftedInstructionKind::*;
+ match operation.kind {
+ Nop => print!("Nop"),
+ Noret => print!("Noret"),
+ Bp => print!("Bp"),
+ Undef => print!("Undef"),
+ Unimpl => print!("Unimpl"),
If(_) => print!("If"),
FloatConst(_) => print!("FloatConst"),
Const(_) => print!("Const"),
@@ -149,14 +151,14 @@ fn print_variable(func: &MediumLevelILFunction, var: &Variable) {
print!("{}", func.get_function().get_variable_name(var));
}
-fn print_il_expr(instr: &MediumLevelILInstruction, mut indent: usize) {
+fn print_il_expr(instr: &MediumLevelILLiftedInstruction, mut indent: usize) {
print_indent(indent);
print_operation(instr);
println!("");
indent += 1;
- use MediumLevelILOperand::*;
+ use MediumLevelILLiftedOperand::*;
for (_name, operand) in instr.operands() {
match operand {
Int(int) => {
@@ -171,13 +173,13 @@ fn print_il_expr(instr: &MediumLevelILInstruction, mut indent: usize) {
Var(var) => {
print_indent(indent);
print!("var ");
- print_variable(instr.function(), &var);
+ print_variable(&instr.function, &var);
println!();
}
VarSsa(var) => {
print_indent(indent);
print!("ssa var ");
- print_variable(instr.function(), &var.variable);
+ print_variable(&instr.function, &var.variable);
println!("#{}", var.version);
}
IntList(list) => {
@@ -192,7 +194,7 @@ fn print_il_expr(instr: &MediumLevelILInstruction, mut indent: usize) {
print_indent(indent);
print!("var list ");
for i in list {
- print_variable(instr.function(), &i);
+ print_variable(&instr.function, &i);
print!(" ");
}
println!();
@@ -201,7 +203,7 @@ fn print_il_expr(instr: &MediumLevelILInstruction, mut indent: usize) {
print_indent(indent);
print!("ssa var list ");
for i in list {
- print_variable(instr.function(), &i.variable);
+ print_variable(&instr.function, &i.variable);
print!("#{} ", i.version);
}
println!();
@@ -260,7 +262,7 @@ fn main() {
// Loop though each instruction in the block
for instr in block.iter() {
// Generically parse the IL tree and display the parts
- print_il_expr(&instr, 2);
+ print_il_expr(&instr.lift(), 2);
}
}
println!();