当前位置: 首页 > news >正文

1630_GNU的二进制分析工具nm简单使用探索

         全部学习汇总: GreyZhang/toolbox: 常用的工具使用查询,非教程,仅作为自我参考! (github.com)

         GNU有一套二进制的分析工具,之前是用过objdump的,但是也没有系统掌握。如果做底层软件的设计,这些工具还是很有用的。后面找时间还得逐个学习一下。这一次,简单整理一下nm工具的使用,我觉得这个工具肯定是算得上小巧实用了。

         Nm主要功能是什么呢?我觉得IBM的一份文档资料总结的很好。

         这个是IBM的资料网页截图,这里说明了nm的功能。它的功能主要是显示出一个指定文件的符号信息的,而这个指定的文件可以是目标文件、可执行文件或者目标文件库文件。当然,IBM的这个nm并不是我这次要看得GNU的工具的nm,但是两者的功能类似。因此,我这里借用了一下他们的功能描述。

         用户手册中对于这个的描述如上,后面略去了关于name的描述信息。如果已经用过了这个工具我觉得还是可以很快熟悉的,但是如果没用过或者一点都没概念,我觉得这个描述偏抽象。这个描述内容太单薄,而下面的具体描述则有点冗长。

         这一段是IBM的资料信息,看上去明显要简洁明确很多。总结下来,nm就是从这几种文件中提取符号信息、类型以及名称的。自然,我这个描述借用了IBM的资料模板,但是描述了GNU的工具信息。

         接下来,简单试一下这个工具的功能吧!

         这个是使用nm分析目标文件的一个测试,这里面的信息分了三列,分别是地址信息、类型、名字。这里可以看得出来,其实这个地址信息的默认显示形式是十六进制,这个跟IBM的工具也是不同的。中间的类型,U代表符号未定义,T代表的是代码段,C代表的是未初始化的common数据。

         这是上面涉及到的部分符号信息的解释。接下来再看一个文件,上面的kernel虽然没有后缀名,但其实是一个elf文件。接下来分析一下这个文件。

         这里的信息种类更多一些,但是有些类型比如b、t等出现了大小写两种。在GNU的工具中,大写的通常是代表全局而小写的则代表局部。

         这是关于大小写的一个说明,但是这个也有一些例外的地方。至于local类型,为什么会有地址,我觉得很有可能是static修饰类的。

         这就算是对nm做一个简单的小结吧!那么,这个工具对我现在的工作来说有什么用呢?我觉得作为调试的辅助信息提取,还是很有用的。另外,如果处理的对象是ELF等可执行文件,我可以从中提取各种变量以及地址的映射表。这个映射表的信息看起来格式非常规整,如果在电控开发中用来处理A2L之类的文件信息会非常方便。

http://www.lryc.cn/news/3521.html

相关文章:

  • 【Redis】Redis高可用之Redis Cluster集群模式详解(Redis专栏启动)
  • 1.8 正则表达式
  • Postgresql 根据单列或几列分组去重row_number() over() partition by
  • 基于蒙特卡洛法的规模化电动车有序充放电及负荷预测(PythonMatlab实现)
  • Selenium常用API详解,从入门到进阶(全套)
  • 自从学会了Python,我实现了壁纸自由(6)
  • Ruby 发送邮件 - SMTP
  • Python爱心代码
  • 【二分查找法及其应用】
  • Android 进阶——Framework核心 之Binder Java成员类详解(三)
  • Maven
  • 1947抓住那头牛(队列 广度优先搜索)
  • 基于linux5.15.5的IMX 参考手册 ---21
  • Android Dalvik虚拟机 堆初始化流程
  • 0讲(补)——开发前必备基本常识
  • JS学习笔记
  • linux005之用户、组管理
  • 列线图工具_Nomogram
  • 【C++】类和对象(一)
  • Python获取搜索引擎结果
  • 2.4.8 PCIe——物理逻辑层——REFCLK
  • 树莓派4B arm64 搭建 docker+drone+gitea
  • Java的JDBC编程
  • CSS:块格式化上下文(BFC)
  • paddle表情识别部署
  • Python-第五天 Python函数
  • 【Python学习笔记】28.Python3 错误和异常
  • SQLServer 迁移到 MySQL 工具对比
  • 分析finebi5.x仪表板组件获取数据过程(数据是数据集或者sql的)
  • 设计模式--适配器模式 Adapter Pattern