def smalisca_signal_handler(signum, frame): """A basic signal handler. This function will catch specific signals and trigger some actions. Args: signum (int): Signal number """ if signum == signal.SIGTERM: log.warn("Caught SIGTERM! Exiting ...") sys.exit(1) elif signum == signal.SIGINT: log.warn("Caught SIGINT! Exiting...") sys.exit(1)
def do_s(self, params): """Global search function. Type 's --help' for help.""" try: args = self.s_parser.parse_args(params.split()) p = {} if args.search_pattern: p['pattern'] = args.search_pattern if args.table: p['table'] = args.table # Get results results = self.analysis.search(p) self.print_global_search(results) else: log.warn("You have to specify a search pattern!") except SystemExit: pass
def print_global_search(self, results): # Print classes print( "- Classes ---------------------------------------------------------------------" ) if len(results['classes']) > 0: classes = results['classes'] log.info("Found %d results" % len(classes)) for c in classes: print("%s\n" % c) else: log.warn("No found classes.\n") # Print properties print( "- Properties ------------------------------------------------------------------" ) if len(results['properties']) > 0: properties = results['properties'] log.info("Found %d results" % len(properties)) for p in properties: print("%s\n" % p) else: log.warn("No found properties.\n") # Print const strings print( "- Const strings ---------------------------------------------------------------" ) if len(results['consts']) > 0: const_strings = results['consts'] log.info("Found %d results" % len(const_strings)) for s in const_strings: print("%s\n" % s) else: log.warn("No found const strings.\n") # Print methods print( "- Methods ---------------------------------------------------------------------" ) if len(results['methods']) > 0: methods = results['methods'] log.info("Found %d results" % len(methods)) for m in methods: print("%s\n" % m) else: log.warn("No found methods.\n")
def get_class_by_name(self, classname): """Returns class obj specified by name Args: classname (str): Name of the class Returns class object """ classes = self.db.query(SmaliClass) class_obj = classes.filter(SmaliClass.class_name == classname) # Check if any results: try: if self.db.query(class_obj.exists()): return class_obj.one() except sql.orm.exc.NoResultFound: log.warn("No result found") return None
def print_global_search(self, results): # Print classes print("- Classes ---------------------------------------------------------------------") if len(results['classes']) > 0: classes = results['classes'] log.info("Found %d results" % len(classes)) for c in classes: print("%s\n" % c) else: log.warn("No found classes.\n") # Print properties print("- Properties ------------------------------------------------------------------") if len(results['properties']) > 0: properties = results['properties'] log.info("Found %d results" % len(properties)) for p in properties: print("%s\n" % p) else: log.warn("No found properties.\n") # Print const strings print("- Const strings ---------------------------------------------------------------") if len(results['consts']) > 0: const_strings = results['consts'] log.info("Found %d results" % len(const_strings)) for s in const_strings: print("%s\n" % s) else: log.warn("No found const strings.\n") # Print methods print("- Methods ---------------------------------------------------------------------") if len(results['methods']) > 0: methods = results['methods'] log.info("Found %d results" % len(methods)) for m in methods: print("%s\n" % m) else: log.warn("No found methods.\n")