#elf #exports #imports #radare2 #elf-file #export #import-export

app terminus

Terminus is an application for quickly locating exported or imported functions in Elf files

3 unstable releases

0.2.0 Oct 4, 2023
0.1.1 Sep 7, 2022
0.1.0 Dec 29, 2021

#4 in #imports

BSD-3-Clause

9KB
138 lines

Terminus

Terminus is an application that locates ELF/PE files that import or export a specific function. This can be used to quickly identify which library you may want to look at next when reversing a new software system by pinpointing the library that exports a specific version of a function that you are looking for.

Usage

USAGE:
    terminus [FLAGS] [OPTIONS]

FLAGS:
    -h, --help        Prints help information
    -i, --imported    Match imported instead of exported functions
    -V, --version     Prints version information

OPTIONS:
    -d, --dir <dir>             Directory to search in [default: /lib]
    -s, --search <search>...    List of function names to search for [default: ]

Dependencies

Radare2 will need to be installed as this application utilizes r2pipes. Instructions to install Radare2 can be found here

Installation

If you have Rust and Cargo installed, Terminus can be quickly compiled and installed by running the following command:

cargo install terminus

This will install Terminus to ~/.cargo/bin/terminus, which might need to be added to your shell's PATH variable.

Example output

$ terminus -s printf -d /bin
[!] /bin/lucious matched printf
nth paddr      vaddr      bind   type size lib name
252 0x000049d5 0x000049d5 GLOBAL FUNC   245      cterm_printf_ts
[!] /bin/make matched printf
nth paddr      vaddr      bind   type size lib name
425 0x00011a40 0x00011a40 GLOBAL FUNC   321      file_timestamp_sprintf
[+] Scanned file: /bin/newusers

Getting rid of R2 warnings

echo 'e bin.cache=true' > ~/.radare2rc

Dependencies

~4–16MB
~145K SLoC