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表示初始化数据段
-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命令的输出.
strings和nm命令的更多相关文章
- linux中的nm命令简介
转:http://blog.csdn.net/stpeace/article/details/47089585 一般来说, 搞linux开发的人, 才会用到nm命令, 非开发的人, 应该用不到. 虽然 ...
- ar命令和nm命令(建库!)
ar 命令详解 今天,跟着我们的技术大牛学了不少东西,首先就是这个ar命令啦. 当我们的程序中有经常使用的模块,而且这些模块在其他程序中也会用到,为了实现代码重用减少软件开发周期,我们可以将它们生成库 ...
- nm命令中符号类型详解
摘自http://blog.csdn.net/solmyr_biti/article/details/6565479 nm命令介绍的很多,但大多不介绍其函数符号标志的含义.最近在调试动态库时常用到,其 ...
- nm命令
它用来列出一个目标文件中的各种符号. nm命令还是比较简单而且强大的.它用来列出一个目标文件中的各种符号.符号的种类很多,以下是一些常见的符号类型 nm输出字符 含义 R Read only symb ...
- nm 命令 程序符号信息查看
http://www.cnblogs.com/wangkangluo1/archive/2012/07/02/2572438.html 用途 显示关于对象文件.可执行文件以及对象文件库里的符号信息. ...
- linux下nm命令的使用
linux下强大的文件分析工具 -- nm 什么是nm nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件.库文件.可执行文件中的符号表,返回二进制文件中各段的信息. 目标文件. ...
- 怎么查看二进制文件内容?linux下nm命令告诉你!
linux下强大的文件分析工具 -- nm 什么是nm nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件.库文件.可执行文件中的符号表,返回二进制文件中各段的信息. 目标文件. ...
- nm命令介绍
一.参考文章 网址1:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/nm.html 参考2: man nm 参考3:<linux ...
- binary hacks读数笔记(nm命令)
nm命令(names):输出包含三个部分:1 符号值.默认显示十六进制,也可以指定: 2 符号类型.小写表示是本地符号,大写表示全局符号(external); 3 符号名称. 例如:nm Simple ...
随机推荐
- js常用自编函数整理
1.替换js地址栏参数值 //destiny是目标字符串,比如是http://www.huistd.com/?id=3&ttt=3 //par是参数名,par_value是参数要更改的值,调用 ...
- Git学习资料整理
Git作为一个优秀的版本控制系统,是我们开发人员必须要学会使用的一个工具,接触git一年多以来,也看了不少相关资料,今天把我所看过的一些学习资源整理一下. Git入门当然首推廖雪峰廖老师的教程:Git ...
- SKCropNode类
继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode) NSCopying(SKNode) NSObject(NSObject) 框架 /System/ ...
- Windows下连接调试Asus Nexus 7 Tablet
Linux和mac下都能够直接连接,可是windows下必须下驱动.官网上的driver无论用.管用的是 https://drive.google.com/uc?id=0Bw8B2a85Qa1jSld ...
- 配置Android开发环境
1.下载JAVASE http://www.oracle.com/technetwork/java/javase/downloads/index.html 根据自己系统选择JAVASE版本 2.下载A ...
- 必须声明标量变量 "@列名"
这个主要是因为变量没有赋上值(见下图)
- Java学习之路(一)了解Java
Java“白皮书”的关键术语 1)简单性 相对于C++:没有头文件.指针运算.结构.联合.操作符重载.虚基类. 另一方面是小:java微型版(Java Micro Edition)用于嵌入式设备 2) ...
- 熟悉java堆内存和栈内存和mysql的insert语句中含有id的处理
java的堆内存和栈内存有什么区别呢? 如果mysql数据库表的id是递增的,如果没有插入id,则id自增,如果插入id,则插入什么就显示什么.
- CSS实现垂直居中的常用方法
在前端开发过程中,盒子居中是常常用到的.其中 ,居中又可以分为水平居中和垂直居中.水平居中是比较容易的,直接设置元素的margin: 0 auto就可以实现.但是垂直居中相对来说是比较复杂一些的.下面 ...
- WinAPI——模拟正弦波
/*************************** * * 程序名称 : 模拟正弦波 * 作 者 : doodle777 * 版 本 : 1.1 * 日 期 : 2012-10-19 * 说 明 ...