@@ -412,7 +412,7 @@ impl Emu {
412
412
self.flags.f_nt = false;
413
413
}
414
414
415
- pub fn init(&mut self, clear_registers: bool) {
415
+ pub fn init(&mut self, clear_registers: bool, clear_flags: bool ) {
416
416
self.pos = 0;
417
417
418
418
if !atty::is(Stream::Stdout) {
@@ -426,12 +426,16 @@ impl Emu {
426
426
if clear_registers {
427
427
self.regs.clear::<64>();
428
428
}
429
+ if clear_flags {
430
+ self.flags.clear();
431
+ }
429
432
//self.regs.rand();
430
433
431
434
if self.cfg.is_64bits {
432
435
self.regs.rip = self.cfg.entry_point;
433
436
self.maps.is_64bits = true;
434
- self.init_regs_tests();
437
+
438
+ //self.init_regs_tests(); // TODO: not sure why this was on
435
439
self.init_mem64();
436
440
self.init_stack64();
437
441
//self.init_stack64_tests();
@@ -1102,7 +1106,7 @@ impl Emu {
1102
1106
rip: self.regs.rip,
1103
1107
op: "write".to_string(),
1104
1108
bits: 32,
1105
- address: self.regs.get_esp(),
1109
+ address: self.regs.get_esp() - 4 ,
1106
1110
old_value: self.maps.read_dword(self.regs.get_esp()).unwrap_or(0) as u64,
1107
1111
new_value: value as u64,
1108
1112
name: name.clone(),
@@ -1163,7 +1167,7 @@ impl Emu {
1163
1167
rip: self.regs.rip,
1164
1168
op: "write".to_string(),
1165
1169
bits: 64,
1166
- address: self.regs.rsp,
1170
+ address: self.regs.rsp - 8 ,
1167
1171
old_value: self.maps.read_qword(self.regs.rsp).unwrap_or(0) as u64,
1168
1172
new_value: value as u64,
1169
1173
name: name.clone(),
@@ -4283,7 +4287,7 @@ impl Emu {
4283
4287
continue;
4284
4288
}
4285
4289
// 00000098EB5DDFF0: 7FFC65FF8B8F-> 7FFBEF4E5FF0
4286
- memory = format!("{} {:x }: {:x }-> {:x }", memory, memory_op.address, memory_op.old_value, memory_op.new_value);
4290
+ memory = format!("{} {:016X }: {:X }-> {:X }", memory, memory_op.address, memory_op.old_value, memory_op.new_value);
4287
4291
}
4288
4292
4289
4293
let mut trace_file = self.cfg.trace_file.as_ref().unwrap();
0 commit comments