• strings和nm命令


    strings和nm命令

    strings

    一.简介:

    显示文件中的可打印字符

    二.用法

    strings [option(s)] [file(s)]

    选项说明:

    -a – –all 扫描整个文件而不是只扫描目标文件初始化和装载段(缺省时,是只扫描初始化和装载段)

    -f –print-file-name 在显示字符串前先显示文件名

    -n –bytes=[number] 找到并且输出所有NUL终止符序列

    - 设置显示的最少的字符数,默认是4个字符

    -t –radix={o,d,x} 输出字符的位置,基于八进制,十进制或者十六进制

    -o 类似–radix=o

    -T –target= 指定二进制文件格式

    -e –encoding={s,S,b,l,B,L} 选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit

    @ 读取中选项

    三.示例:

    读取二进制文件里的ASCII文本以了解可执行文件的细节

    strings /bin/ls 列出ls中所有的ASCII文本

    cat /bin/ls strings 列出ls中所有的ASCII文本

    strings /bin/ls | grep -i libc 查找ls中包含libc的字符串,不区分大小写

    nm命令:

    nm(1)命令可以报告库的符号列表,对于查看库的相关信息是一个不错的工具。具体使用查看帮助文档。示例:
    $nm -D libavcodec-0.4.7.so | grep 263
    结果如下:
    00116438 T ff_clean_h263_qscales
    00122d14 T ff_h263_decode_end
    001223d4 T ff_h263_decode_frame
    00121340 T ff_h263_decode_init
    0011048c T ff_h263_decode_mb
    0011652c T ff_h263_get_gob_height
    0010e664 T ff_h263_resync
    00041744 T ff_h263_round_chroma
    0010810c T ff_h263_update_motion_val
    00115f64 T flv_h263_decode_picture_header
    0010da98 T h263_decode_init_vlc
    001127c8 T h263_decode_picture_header
    001ab040 D h263_decoder
    00106c44 T h263_encode_gob_header
    0010b2b0 T h263_encode_init
    00109d40 T h263_encode_mb
    00105f94 T h263_encode_picture_header
    001a85a0 D h263_encoder
    001162d0 T h263_get_picture_format
    0010a7b4 T h263_pred_motion
    00106df8 T h263_send_video_packet
    001ab180 D h263i_decoder
    001a85e0 D h263p_encoder
    00115c68 T intel_h263_decode_picture_header
    其中,T表示正常代码段,D表示初始化数据段

    file确定文件类型的工具. 命令file file-name将会用ascii文本数据的形式返回file-name文件的详细描述. 这个命令会使用/usr/share/magic, /etc/magic, 或/usr/lib/magic中定义的魔法数字来标识包含某种魔法数字的文件, 上边所举出的这3个文件需要依赖于具体的 Linux/UNIX 发行版.

    -f选项将会让file命令运行于批处理模式, 也就是说它会分析-f后边所指定的文件, 从中读取需要处理的文件列表, 然后依次执行file命令. -z选项, 当对压缩过的目标文件使用时, 将会强制分析压缩的文件类型.

    which command-xxx将会给出"command-xxx"的完整路径. 当你想在系统中准确定位一个特定的命令或工具的时候, 这个命令就非常有用了.

    与上边的which很相似, whereis command-xxx不只会给出"command-xxx"的完整路径, 而且还会给出这个命令的man页的完整路径.

    whatis filexxx将会在whatis数据库中查询"filexxx". 当你想确认系统命令和重要的配置文件的时候, 这个命令就非常重要了. 可以把这个命令认为是一个简单的man命令.

    vdir显示详细的目录列表. 与ls -l的效果相似.

    locate命令将会在预先建立好的档案数据库中查询文件. slocate命令是locate的安全版本(locate命令很有可能已经被关联到slocate命令上了).

    readlink  显示符号链接所指向的文件.

    使用strings命令在二进制或数据文件中找出可打印字符. 它将在目标文件中列出所有找到的可打印字符的序列. 这个命令对于想进行快速查找n个字符的打印检查来说是很方便的, 也可以用来检查一个未知格式的图片文件(strings image-file | more可能会搜索出像JFIF这样的字符串, 那么这就意味着这个文件是一个jpeg格式的图片文件). 在脚本中, 你可能会使用grep或者sed命令来分析strings命令的输出.

  • 相关阅读:
    使用BitMap进行海量数据去重
    记一次std::process::Child使用过程中碰到的问题
    我的第一篇rust博客
    优秀编程习惯总结
    利用generator模拟协程完美解决异步回调问题
    polymer框架在代码中动态创建需要支持内容分发的自定义元素并挂载到文档中
    属于自己的完美web服务器完成
    web components折腾记
    内边距的妙用
    用js修改带!important的css样式
  • 原文地址:https://www.cnblogs.com/timssd/p/4735444.html
Copyright © 2020-2023  润新知