コード例 #1
0
 def get_safe_functions(self):
     # for now we consider functions called by printf or malloc to be safe
     ident_safe = cfg_utils._get_funcs_called_by_printf(
         self.patcher.project, self.patcher.cfg, self.patcher.identifier)
     ident_safe |= cfg_utils._get_funcs_called_by_malloc(
         self.patcher.project, self.patcher.cfg, self.patcher.identifier)
     return ident_safe
コード例 #2
0
    def get_safe_functions(self):
        ident = self.patcher.identifier

        # for now we consider functions called by printf or malloc to be safe
        ident_safe = cfg_utils._get_funcs_called_by_printf(
            self.patcher.project, self.patcher.cfg, self.patcher.identifier)
        ident_safe |= cfg_utils._get_funcs_called_by_malloc(
            self.patcher.project, self.patcher.cfg, self.patcher.identifier)

        safe_func_addrs = set()
        unsafe_func_addrs = set()
        for f in self.patcher.cfg.functions.values():
            if f.addr in ident_safe or self._func_is_safe(ident, f):
                l.debug("%#x is safe", f.addr)
                safe_func_addrs.add(f.addr)
            else:
                l.debug("%#x is unsafe", f.addr)
                unsafe_func_addrs.add(f.addr)
        return safe_func_addrs