diff --git a/src/analysis/tracker.rs b/src/analysis/tracker.rs index 3226565..1ce172c 100644 --- a/src/analysis/tracker.rs +++ b/src/analysis/tracker.rs @@ -417,9 +417,13 @@ impl Tracker { Ok(ExecCbResult::Continue) } StepResult::Jump(target) => match target { + BranchTarget::Return => Ok(ExecCbResult::EndBlock), BranchTarget::Unknown - | BranchTarget::Return | BranchTarget::JumpTable { address: RelocationTarget::External, .. } => { + let next_addr = ins_addr + 4; + if next_addr < function_end { + possible_missed_branches.insert(ins_addr + 4, vm.clone_all()); + } Ok(ExecCbResult::EndBlock) } BranchTarget::Address(addr) => {