cargo-sym [](https://travis-ci.org/m4b/cargo-sym)

November 22, 2016 ยท View on GitHub

Prints various binary symbols in your crate. Also experimentally disassembles.

This uses capstone for disassembly, so it will compile faster if you have capstone installed as a system library.

Usage

First install:

cargo install cargo-sym

or via git:

cargo install --git https://github.com/m4b/cargo-sym -f

Then:

  1. cargo sym will print every debugging symbol it finds in the first valid binary target in target/<target>/debug. This can be, for example:

a.target/debug (this is used if it doesn't find a special target, like the following)

b. target/x86_64-unknown-linux-musl/debug

  1. cargo sym -C will print every debugging symbol demangled
  2. cargo sym -e will print every exported symbol importable by other binaries
  3. cargo sym -Ce will do -C and -e together :]
  4. cargo sym -d will disassemble your binary, objdump style. experimental
  5. cargo sym -d -C /bin/ls will disassemble the binary ls at /bin/ (actually most distros strip /bin/ls so it actually won't)
  6. cargo sym -Cd --target=aarch64-linux-android will disassemble your crates binary at target/aarch64-linux-android/debug/<crate_name>
  7. cargo sym -C --release -x example will print the symbols from the example binary you compiled in release mode (at target/release/examples/example)
  8. cargo sym -Cd --target=debug -x main will disassemble the example binary main in the regular debug location target/debug/examples/main

Try cargo sym --help for more information!

TODO:

  1. Target selector is not. There are a few fixmes to make it nicer. (easy)
  2. ARM 32-byte printer not completely correct when in thumb mode, should reverse second 8 byte block. (easy)
  3. Need to properly print got, plt, and plt.got and iterate through sections in a more principled manner. (not to easy)
  4. When goblin gets a mach and PE backend (which I keep saying will be soon), update the various backends (tedious, hard, requires knowledge of backend formats)

PRs welcome of course :)