丹凤千字科普:上古卷轴5重制版enb参数(详细资料介绍)


丹凤千字科普:上古卷轴5重制版enb参数(详细资料介绍)  

二进制文件是我们日常处理的一种重要文件类型,但大多数人对其工作原理并不了解。这里提到的二进制文件包括可执行文件,如你每天都在使用的Linux命令,也是二进制文件的一种。

在Linux系统中,有很多工具可以帮助我们分析二进制文件,不管你在Linux下从事何种工作,掌握这些工具都会让你对系统有更深入的了解。

一、file命令

file命令用于识别文件的类型。如果你需要分析一个二进制文件,可以先使用file命令来查看它的类型。我们知道,在Linux下,所有的文件都是文件,但并非所有文件都具有可执行性,还有文本文件、管道文件、链接文件、socket文件等等。

二、ldd命令

ldd命令用于分析可执行文件的依赖。大部分程序都会使用到第三方库,这样就可以避免重复造,节省时间。我们在编写C程序代码时,肯定会用到libc或者glibc库。除此之外,还可能使用其他的库。

那么,我们什么时候需要分析程序的依赖库呢?比如,你去同事那里拷贝了他写好的程序放到自己的环境下运行,有时候可能会跑不起来。跑不起来的原因可能有很多,其中一个原因可能就是缺少对应的依赖库。这时候,ldd就派上用场了。它可以分析程序需要哪些依赖库,你只需要把对应的库放在对应的位置就可以了。

三、ltrace命令

ltrace的功能是能够进程的库函数调用。我们可以使用ldd命令来找到程序的依赖库,一个库里少则几个,多则几千个函数,怎么知道现在程序调用的是什么函数呢?ltrace命令就是用来做这个事的。

四、strace命令

strace命令用于追踪程序运行过程中的系统调用及信号。与ltrace追踪函数调用类似,strace追踪的是系统调用。何为系统调用?简单来说,我们可以通过系统调用与内核进行交互,完成我们想要的任务。

五、hexdump命令

hexdump命令用来查看二进制文件的16进制编码,但它能查看任件,不限于二进制文件。一个二进制文件如果直接用文本编辑器打开,会看到一堆乱码。这时候,就可以使用hexdump命令来查看它的内容了。

六、strings命令

strings命令可以用来打印二进制文件中可显示的字符。什么是可显示字符?简单来说,就是你在显示器上看到的字符,比如字母、数字、标点符号等。我们知道,二进制文件里有很多是非显示字符,无法直接用文本处理器打开。但在程序开发过程中,我们经常会加入一些调试信息,如debug log、warn log、error log等,这些信息就可以使用strings命令查看。

七、readelf命令

readelf用于查看ELF格式的文件信息。ELF(Executable and Linkable Format)是一种比较复杂的文件格式,但其应用广泛。当你使用file命令发现某个文件是ELF文件时,就可以使用readelf命令来读取这个文件的信息。

八、objdump命令

objdump是一个查看目标文件或可执行的目标文件的构成的GCC工具。我们知道,程序开发完成后需要经过编译才能生成计算机可以识别的二进制文件。我们写的代码计算机不能直接执行,需要编译成汇编程序才能依次执行。objdump命令可以读取可执行文件,然后将汇编指令打印出来。所以如果想要看懂objdump的结果,就需要有一些汇编基础。

九、nm命令

nm命令主要是列出目标文件的符号(即一些函数和全局变量等)。如果编译出来的程序没有经过特殊处理(如strip),那么nm命令可以挖掘出隐藏在可执行文件中的重大信息。它可以帮你列出文件中的变量及函数,对于反向操作具有重大意义。

让我们看一个简单的C语言程序。这个程序只是简单地打印出 "Hello world!"。

c

include

int main() {

printf("你好,世界!");

return 0;

我们使用gcc编译器将其编译成可执行文件,然后使用file命令查看其详细信息。之后,我们可以通过./hello命令来运行这个程序。

如果我们想在程序执行过程中进行调试,就需要使用到gdb这个强大的工具。gdb是GNU项目的开源调试器,它可以帮助我们查看程序的运行状态,设置断点,步进执行等等。

现在,我们来演示一下如何使用gdb进行基础调试。我们使用gdb -q ./hello命令启动gdb,并加载我们的程序。然后,我们在main函数处设置断点。接下来,我们用info break命令查看断点信息,然后用run命令启动程序。程序会在main函数处停止,等待我们进行下一步操作。

在程序运行过程中,如果出现任何问题,我们可以使用bt命令查看调用堆栈,用c命令继续执行程序,直到遇到下一个断点或者程序结束。我们用q命令退出gdb。

在Linux环境下进行程序开发时,熟练掌握这些基本的gdb命令,将会大大提高你的工作效率。无论是在排查错误,还是优化代码性能,gdb都是一个不可或缺的工具。

  丹凤千字科普:上古卷轴5重制版enb参数(详细资料介绍)