Ejemplo n.º 1
0
def run_redex(args, exception_formatter=None, output_line_handler=None):
    # This is late, but hopefully early enough.
    _init_logging(args.log_level)

    state = prepare_redex(args)
    if exception_formatter is None:
        exception_formatter = ExceptionMessageFormatter()
    run_redex_binary(state, exception_formatter, output_line_handler)

    if args.stop_pass:
        # Do not remove temp dirs
        sys.exit()

    finalize_redex(state)


if __name__ == "__main__":
    keys = {}
    try:
        keystore = join(os.environ["HOME"], ".android", "debug.keystore")
        if isfile(keystore):
            keys["keystore"] = keystore
            keys["keyalias"] = "androiddebugkey"
            keys["keypass"] = "******"
    except Exception:
        pass
    args = arg_parser(**keys).parse_args()
    validate_args(args)
    with_temp_cleanup(lambda: run_redex(args), args.always_clean_up)
Ejemplo n.º 2
0
import os

from pyredex.utils import with_temp_cleanup
from tools.bytecode_debugger.inject_debug_lib import run_debug_injector


def arg_parser():
    description = "Injects bytecode-level debug information into an APK"
    parser = argparse.ArgumentParser(
        formatter_class=argparse.RawDescriptionHelpFormatter, description=description
    )
    parser.add_argument("bin_path", help="Path to program binary")
    parser.add_argument("input_apk", help="Input APK file")
    parser.add_argument(
        "-o",
        "--output_apk",
        nargs="?",
        type=os.path.realpath,
        default="out.apk",
        help="Output APK file name (defaults to out.apk)",
    )
    parser.add_argument("-s", "--keystore", nargs="?", default=None)
    parser.add_argument("-a", "--keyalias", nargs="?", default=None)
    parser.add_argument("-p", "--keypass", nargs="?", default=None)
    return parser


if __name__ == "__main__":
    args = arg_parser().parse_args()
    with_temp_cleanup(lambda: run_debug_injector(args))