def push_and_start_frida_server(adb: ADB): """ Push and start adb server on device Parameters ---------- adb Returns ------- """ frida_server = os.path.join(os.getcwd(), "resources", "frida-server", "frida-server") try: adb.execute(['root']) except Exception as e: adb.kill_server() logger.error("Error on adb {}".format(e)) logger.info("Push frida server") try: adb.push_file(frida_server, "/data/local/tmp") except Exception as e: pass logger.info("Add execution permission to frida-server") chmod_frida = ["chmod 755 /data/local/tmp/frida-server"] adb.shell(chmod_frida) logger.info("Start frida server") start_frida = ["cd /data/local/tmp && ./frida-server &"] adb.shell(start_frida, is_async=True) time.sleep(4)
def push_api_monitor_xposed(adb: ADB, package_name: str, dir_hook_file: str): """ push file on emulator needed to api monitor Parameters ---------- adb package_name dir_hook_file Returns ------- """ logger.info("Push files needed to API Monitor") adb.push_file(os.path.join(dir_hook_file, "hooks.json"), "/data/local/tmp") adb.shell(['echo', '"{0}"'.format(package_name), '>', '/data/local/tmp/package.name'])
def push_and_start_frida_server(adb: ADB): """ Push and start adb server on device Parameters ---------- adb Returns ------- """ frida_server = os.path.join(os.path.dirname(__file__), "resources", "frida-server", "frida-server") cmd_output = adb.shell("ps -e | grep frida".split()) if "frida-server" in cmd_output: logger.warning("[*] frida-server is already running on device") return try: adb.execute(["root"]) except Exception as e: adb.kill_server() logger.error("Error on adb {}".format(e)) logger.info("[*] Push frida server") try: adb.push_file(frida_server, "/data/local/tmp") except Exception as e: pass logger.info("[*] Add execution permission to frida-server") chmod_frida = ["chmod 755 /data/local/tmp/frida-server"] adb.shell(chmod_frida) logger.info("Start frida server") start_frida = ["cd /data/local/tmp && ./frida-server &"] adb.shell(start_frida, is_async=True) time.sleep(4)
def push_and_start_frida_server_google_emulator(adb: ADB): """ Parameters ---------- adb Returns ------- """ frida_server = os.path.join(os.path.dirname(__file__), "resources", "frida-server-15-1-17", "frida-server") logger.info("[*] Checking if frida-server is already running") cmd_output = adb.shell("ps -e | grep frida") if "frida-server" in cmd_output: logger.warning("[*] frida-server is already running on device") return logger.info("[*] Push frida-server (google-emulator)") try: adb.push_file(frida_server, "/sdcard") adb.shell_su("mv /sdcard/frida-server /data/local/tmp/frida-server") except Exception as e: pass cmd_set_enforce = "setenforce 0" adb.shell_su(cmd_set_enforce) cmd_enforce_echo = "echo 0 > /sys/fs/selinux/enforce" adb.shell_su(cmd_enforce_echo) chmod_frida = "chmod 755 /data/local/tmp/frida-server" adb.shell_su(chmod_frida) logger.info("[*] Start frida server") start_frida = "/data/local/tmp/frida-server &" adb.shell_su(start_frida, is_async=True) time.sleep(4)