#符号 #cargo #调试 #crates #cargo-subcommand

app cargo-sym

打印出您的 crate 中的各种二进制符号

5 个版本

使用旧的 Rust 2015

0.0.6 2017年3月15日
0.0.5 2017年2月3日
0.0.4 2016年12月16日
0.0.2 2016年11月8日
0.0.1 2016年11月8日

#713Cargo 插件

MIT 许可证

34KB
691

cargo-sym 构建状态

打印出您的 crate 中的各种二进制符号。也进行实验性的反汇编。

这使用 capstone 进行反汇编,因此如果您将 capstone 作为系统库安装,则编译速度会更快。

用法

首先安装

cargo安装 cargo-sym

或通过 git

cargo安装 --githttps://github.com/m4b/cargo-sym -f

然后

  1. cargo sym 将打印出在 target/<target>/debug 中找到的第一个有效二进制目标中的每个调试符号。这可以是,例如

a.target/debug(如果找不到特殊的目标,则使用此选项)

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

  1. cargo sym -C 将打印出每个去混淆的调试符号
  2. cargo sym -e 将打印出每个其他二进制可导入的导出符号
  3. cargo sym -Ce 将同时执行 -C-e :]
  4. cargo sym -d 将以 objdump 风格反汇编您的二进制文件。 实验性
  5. cargo sym -d -C /bin/ls 将反汇编位于 /bin/ 的二进制文件 ls(实际上大多数发行版都移除了 /bin/ls,所以实际上不会执行)
  6. cargo sym -Cd --target=aarch64-linux-android 将反汇编在 target/aarch64-linux-android/debug/<crate_name> 下的 crate 二进制文件
  7. cargo sym -C --release -x example 将打印以发布模式编译的 example 二进制文件的符号(在 target/release/examples/example
  8. cargo sym -Cd --target=debug -x main 将在常规调试位置 target/debug/examples/main 反汇编 example 二进制文件 main

尝试使用 cargo sym --help 获取更多信息!

TODO

  1. 目标选择器尚未完善。有几个问题需要修复以使其更美观。(容易)
  2. 当处于 thumb 模式时,ARM 32 字节打印机不完全正确,应翻转第二个 8 字节块。(容易)
  3. 需要正确打印 got、plt 和 plt.got,并以更规范的方式遍历段。(不是很容易)
  4. 当 goblin 获得 mach 和 PE 后端(我经常说这将很快实现),更新各种后端(繁琐、困难、需要了解后端格式知识)

当然欢迎 PR :)

依赖项

~34MB
~1M SLoC