Skip to content

Commit 5f3fc47

Browse files
committed
Fix ida_addr not in insn_list
1 parent 44341fa commit 5f3fc47

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

qiling/extensions/idaplugin/qilingida.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1415,6 +1415,10 @@ def __is_next_mbb(self, mbb):
14151415
return True
14161416

14171417
def _get_jmp_ins(self, ida_addr, insns):
1418+
# This cloud really happen! See issue #804. TODO: Investigate or re-design insns structure or replace it with ESIL.
1419+
# So we have to fallback to legacy path.
1420+
if ida_addr not in insns:
1421+
return (None, None)
14181422
ins_list = insns[ida_addr]
14191423
result = []
14201424
for bbid, ins in ins_list:
@@ -1663,8 +1667,9 @@ def _search_path(self):
16631667
}
16641668
ql_bb_start_ea = self.deflatqlemu.ql_addr_from_ida(bb.start_ea) + self.append
16651669
ctx = ql.save()
1670+
# Skip force execution in the first block.
16661671
# `end=0` is a workaround for ql remembering last exit_point.
1667-
if braddr is None:
1672+
if braddr is None or bb.id == self.first_block:
16681673
ql.run(begin=ql_bb_start_ea, end=0, count=0xFFF)
16691674
else:
16701675
self.hook_data['force'] = {braddr: True}

0 commit comments

Comments
 (0)