我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

> 世界上有十​​种人,一种人懂二进制,一种人不懂。——鲁迅

大家好,我是梁旭。

二进制文件是我们几乎每天都需要打交道的一类文件,但是很少有人知道它们是如何工作的。这里说的二进制文件指的是一些可执行文件,包括你每天使用的Linux命令,它们也是一种二进制文件。

Linux系统给我们提供了很多分析二进制文件的工具,不管你在Linux下从事什么工作,了解这些工具也会帮助你更好的理解你的系统。

本文将介绍几种最常用的二进制文件分析工具和命令,这些工具在大多数发行版中都可以直接使用,如果不能直接使用,可以自行安装。

文件

file命令用于分析文件的类型。

如果需要分析一个二进制文件,可以先用file命令切入。我们知道在Linux中,一切皆文件,但并不是所有文件都是可执行的。我们的文件也是多种多样的,比如:文本文件、管道文件、链接文件、文件等等。

在分析一个文件之前,我们可以先用file命令来分析一下它的类型,当然除此之外,我们还可以看到一些其他的信息。

$ 文件 /bin/pwd

/bin/pwd: ELF 64 位 LSB,x86-64,1(SYSV),(使用库),适用于 GNU/Linux 2.6.32,[sha1]=,

LDD

ldd命令可以用来分析可执行文件的依赖关系。

当我们使用 file 命令分析可执行文件时,有时会在输出中看到这样的字词。这是什么意思?

大多数程序都会使用第三方库,这样我们就不用重新发明轮子,节省了很多时间。最简单的就是,如果我们写 C 程序代码,肯定会用到 libc 或者 glibc 库。当然除了这些,还可能用到其他库。

那么,什么情况下我们需要分析程序的依赖库呢?有一种场景大家肯定都经历过,你去同事那里把他写的程序复制过来,放到自己的环境中运行,有时候可能会运行不起来,当然运行不起来的原因可能有很多,但其中一个可能就是缺少相应的依赖库。

这时候ldd就派上用场了,它可以分析出程序需要哪些依赖库,你只要把对应的库放到对应的位置就可以了。

$ ldd /bin/pwd

linux-vdso.so.1 => ()

libc.so.6 => /lib64/libc.so.6 ()

/lib64/ld-linux-x86-64.so.2()

该功能就是能够跟踪进程的库函数调用。

我们可以用ldd命令来查找程序的依赖库,但是一个库里可能包含几个或者几千个函数,我们如何知道程序现在调用的是什么函数呢?

命令就是用来做这件事的。在下面的例子中,我们可以看到程序调用的函数以及传递给它的参数。你还可以看到函数调用的输出。

$ /bin/密码

(,1,,

关于

二维码
扫一扫在手机端查看

本文链接:https://by928.com/3272.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线