Пример #1
0
def main():
    parser = argparse.ArgumentParser(description='A tool that hook all apps you need')

    parser.add_argument('regexps', type=str, nargs='*',
                        help=r'Regexps for the apps you want to hook such as "^com\.baidu\.", '
                             r'empty for hooking all apps')
    parser.add_argument('-i', '--install', action='store_true',
                        help='install frida server to /data/local/tmp automatically')
    parser.add_argument('-p', '--port', type=int,
                        help='reverse tcp port, if specified, manipulate iptables automatically')
    parser.add_argument('-v', action='store_true', help='verbose output')

    args = parser.parse_args()

    if args.v:
        LOGGER.setLevel(logging.DEBUG)

    # set log
    os.makedirs(LOG_DIR, mode=0o700, exist_ok=True)
    log_filename = time.strftime('%Y-%m-%d_%H-%M-%S.log')
    log_file = open(os.path.join(LOG_DIR, log_filename), 'a', encoding='utf-8')
    logger_handler = ColorizingStreamHandler(log_file)
    logger_handler.setFormatter(FORMATTER)
    LOGGER.addHandler(logger_handler)

    Adb.start_server()

    try:
        t = WatchThread(args.install, args.port, args.regexps, True)
        t.start()
        t.join()
    except KeyboardInterrupt:
        LOGGER.info('shutdown, thank you for using frida skeleton')
    except Exception as e:
        LOGGER.error(e)
Пример #2
0
    def start(self):
        try:
            if options.list:
                for device in Adb.devices().out.split('\n')[1:]:
                    print(device)
                sys.exit(0)

            level = logging.DEBUG if options.verbose else logging.INFO
            coloredlogs.install(level=level)

            # set log
            os.makedirs(LOG_DIR, mode=0o700, exist_ok=True)
            log_file = open(os.path.join(LOG_DIR, LOG_FILENAME),
                            'a',
                            encoding='utf-8')
            coloredlogs.install(level=level, stream=log_file)

            # set handling interrupt exceptions
            signal.signal(signal.SIGTERM, self.shutdown)
            signal.signal(signal.SIGINT, self.shutdown)

            Adb.start_server()

            watch_thread = WatchThread()

            try:
                watch_thread.start()
                while True:
                    time.sleep(1)
            except MainExit:
                while True:
                    try:
                        self.log.info(
                            'shutdown command received, wait for clean up please...'
                        )
                        watch_thread.terminate()
                        while watch_thread.is_alive():
                            time.sleep(1)
                        break
                    except MainExit:
                        pass
        except (KeyboardInterrupt, InterruptedError):
            pass

        self.log.info('thank you for using, bye!')
Пример #3
0
    def __init__(self):
        parser = argparse.ArgumentParser(description='A tool that hook all apps you need')

        parser.add_argument('regexps', type=str, nargs='*',
                            help=r'Regexps for the apps you want to hook such as "^com\.baidu\.", '
                                 r'empty for hooking all apps')
        parser.add_argument('-i', '--install', action='store_true',
                            help='install frida server to /data/local/tmp automatically')
        parser.add_argument('-p', '--port', type=int,
                            help='reverse tcp port, if specified, manipulate iptables automatically')
        parser.add_argument('-v', action='store_true', help='verbose output')

        args = parser.parse_args()

        try:
            self.log = logging.getLogger(self.__class__.__name__)

            level = 'DEBUG' if args.v else 'INFO'
            coloredlogs.install(level=level)

            # set log
            os.makedirs(LOG_DIR, mode=0o700, exist_ok=True)
            log_filename = time.strftime('%Y-%m-%d_%H-%M-%S.log')
            log_file = open(os.path.join(LOG_DIR, log_filename), 'a', encoding='utf-8')
            coloredlogs.install(level=level, stream=log_file)

            # set handling interrupt exceptions
            signal.signal(signal.SIGTERM, self.shutdown)
            signal.signal(signal.SIGINT, self.shutdown)

            Adb.start_server()

            watch_thread = WatchThread(args.install, args.port, args.regexps)
        except (KeyboardInterrupt, InterruptedError) as e:
            self.log.info(e)
            sys.exit(-1)

        try:
            watch_thread.start()
            while True:
                time.sleep(1)
        except MainExit:
            while True:
                try:
                    self.log.info('shutdown command received, wait for clean up please...')
                    watch_thread.cancel()
                    break
                except MainExit:
                    pass

        # waiting for sub threads
        while True:
            try:
                while True:
                    self.should_we_exit()
                    time.sleep(1)
            except MainExit:
                try:
                    n = len(thread_manager.thread_map)
                    if n > 0:
                        self.log.info('running sub threads: {}, wait a second please'.format(n))
                except MainExit:
                    pass