Example #1
0
        ███████╗██║ █╗ ██║█████╗  ██║     ██║        ███████╗███████║
        ╚════██║██║███╗██║██╔══╝  ██║     ██║        ╚════██║██╔══██║
        ███████║╚███╔███╔╝███████╗███████╗███████╗██╗███████║██║  ██║
        ╚══════╝ ╚══╝╚══╝ ╚══════╝╚══════╝╚══════╝╚═╝╚══════╝╚═╝  ╚═╝
    ''')

    bash_path = shutil.which('bash')
    if not bash_path:
        logger.error("Bash executable not found in PATH")
        logger.error("Quiting...")
        sys.exit(1)
    else:
        logger.info("Bash path: {}", bash_path)

    term_manager = SingleTermManager(shell_command=['bash'])
    bash_pid = term_manager.get_terminal().ptyproc.pid
    logger.info("bash pid is {}", bash_pid)

    elffile = ELFFile(open(bash_path, 'rb'))

    rl_line_buffer_addr = None
    rl_point_addr = None

    bash_is_pie = elffile.header['e_type'] == 'ET_DYN'
    if not bash_is_pie:
        rl_line_buffer_addr = get_symbol_value(elffile, 'rl_line_buffer')
        rl_point_addr = get_symbol_value(elffile, 'rl_point')

    elffile.stream.close()

    rl_line_buffer_lib, rl_line_buffer_offset = (None, None)