diff --git a/typetapper/knowledge.py b/typetapper/knowledge.py index 2e9a600..b9c0aea 100644 --- a/typetapper/knowledge.py +++ b/typetapper/knowledge.py @@ -81,4 +81,19 @@ class TypeTapperManager(angr.knowledge_plugins.plugin.KnowledgeBasePlugin): else: loc = atom.atom.loc - return self.cfg.get_any_node(loc.bbl_addr).function_address + node = self.cfg.get_any_node(loc.bbl_addr) + func_addr = node.function_address + try: + func = self.kb.functions[func_addr] + except KeyError: + func = None + if func is None or func.is_plt: + try: + new_node = next(iter(node.successors)) + func_addr2 = new_node.function_address + func2 = self.kb.functions[func_addr2] + if func2 is not None and not func2.is_plt: + func_addr = func_addr2 + except (StopIteration, KeyError): + pass + return func_addr