From 99c308d57be81dc84d1b301f72d6bf0ef4732e03 Mon Sep 17 00:00:00 2001 From: Audrey Dutcher Date: Thu, 3 Nov 2022 16:16:08 -0700 Subject: [PATCH] normalize plt stubs to their target functions --- typetapper/knowledge.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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