我的二进制工具集练习

我的二进制工具集练习

ID:41682657

大小:59.47 KB

页数:7页

时间:2019-08-29

我的二进制工具集练习_第1页
我的二进制工具集练习_第2页
我的二进制工具集练习_第3页
我的二进制工具集练习_第4页
我的二进制工具集练习_第5页
资源描述:

《我的二进制工具集练习》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、I-addr21ine能够把程序地址转换为文件名和行号,前提是这个可执行文件包括调试符1#include3voidfoo()■I5printfC'Theaddressoffoo()is%p",foo);■7intmain()10return0;运行如下命令,得到:linux@ubuntu:-/A8/test/addr21ine$gcc-gtest.c-otestlinux@ubuntu:-/A8/test/addr21ine$Istesttest.clinux@ubuntu:-/A8/test/addr21ine$•/testTh

2、eaddressoffoo()is0x80483c4现在,我们可以用这一地址来看看addr21ine是如何使用的。在终端屮运行如下命令,从命令的运行结果可以看出,addr21ine工具正确指出了0x80483c4所对应的程序的具体位置以及所对应的函数名。在调用addr21ine工具吋,要使用-e选项来指定可执行映像是testo通过使用・f选项,可以告诉工具输出函数名。1inux@ubuntu:-/A8/test/addr21ine$addr21ine0x80483c4-f-etestfoo/home/1inux/A8/test/addr21ine/te

3、st・c:42.nm可以列出目标文件中的符号。用法虽然简单,但是功能很强大。符号是指函数名或变量。nm所列岀的每一行有三部分组成:第一列是指程序运行时的符号所对应的地址,对于函数则地址表示的是函数的开始地址,对于变量则表示变量的存储地址;第二列是指对应符号放在哪一个段;而最后一列则是指符号的名称。在前面我们讲解addr21ine吋,我们提到addr21ine是将程序地址转换成这一地址所对应的具体函数是什么,而nm则是全面的列出这些信息。但是,nm不具备列出符号所在源文件及其行号这一功能,因此,我们说每一个工具有其特定功能。A氓示有号所狀也的值是絶对的且

4、在以E的违茯过裡中也不会改变B或b表示符号位干未初始GbssflD中C衣亍住自疲初甘化的共介磚号DEMd表示符号位干初始化的数療段(.data段》中N潅示符号是调试用的P圭亍有号位干一个栈回期段中REJtr表示符号位于只渎数据段(rdata段〉中T或t表示府号位干代田段C®ct民)中U农示哥号没勺貶宜义为了更清楚的理解nm中的符号和我们程序中的关系,我们看一下下列程序其所对应的nm输出结果。1#include2intgloablel;3intgloable2=9;44staticintstatic_gloablel;5staticin

5、tstatic_gloable2=99;■8voidfoo()1()staticintintermal1;11staticintintermal2=999;■1314staticvoidbar()■16■■1819intmain()20{21intlocal;22intlocal2=9999]24return0;00000000D00000000b00000004C00000004b00000008dintermal2.1709linuxBubuntu:-/A8/test/objdump$nm-ntest,o00000000tfoogloable2st

6、atic_gloablelgloablelintermall.170800000004dstatic_gloable200000005tbar0000000aTmainlinuxGubuntu:-/A8/test/objdump$从nm输出的信息,我们可以看出:不论一个静态变量是定义在函数内还是函数外,其在程序段屮的分配方式都是一样的。如果这一静态变量是初始化好的,那么被分配在data段中,否则就在bss段中非静态的全局变量,其分配的段也是和是否初始化有关。如果被初始化了,分配在data段屮,否则就在bss段屮。函数无论是静态还是非静态的,其总是被分配

7、在text段,但T⑴的大小写代表这一符号所对应的函数是否是静态函数。函数内的局部变量并不是分配在data,bss和text段中,其分趾在栈上,nm是看不到的。2.readelf-htest这条命令查看可执行文件“test"的section的头信息。linuxSubuntu:-/A8/test/nitt$readelf-htestELFHeader:000000000000000000ELF3221scomplement,littleendian1(current)UNIX-SystemVMagic:7f454c46010101Class:Data:Ve

8、rsion:OS/ABI:0EXEC(Executablefile)Intel803860x1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。