objdump_objdump命令 - CSDN
精华内容
参与话题
  • Linux下objdump使用方法

    万次阅读 2015-04-19 23:00:28
    linux下objdump命令常见用法举例: objdump -x obj:以某种分类信息的形式把目标文件的数据组成输出; objdump -t obj:输出目标文件的符号表() objdump -h obj:输出目标文件的所有段概括() objdump -j ./text/....
    

    linux下objdump命令常见用法举例:

    objdump -x obj:以某种分类信息的形式把目标文件的数据组成输出;<可查到该文件的的所有动态库>

    objdump -t obj:输出目标文件的符号表()

    objdump -h obj:输出目标文件的所有段概括()

    objdump -j ./text/.data -S obj:输出指定段的信息(反汇编源代码)

    objdump -S obj:输出目标文件的符号表()  当gcc -g时打印更明显

    objdump -j .text -Sl stack1 | more

    -S 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,

       效果比较明显。隐含了-d参数。

    -l 用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用

      使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求

      编译时使用了-g之类的调试编译选项。

    -j name 仅仅显示指定section的信息


    如何使用linux下objdump命令对任意一个二进制文件进行反汇编?

    可以使用如下命令:

    objdump -D -b binary -m i386 a.bin

    -D表示对全部文件进行反汇编,-b表示二进制,-m表示指令集架构,a.bin就是我们要反汇编的二进制文件

    objdump -m可以查看更多支持的指令集架构,如i386:x86-64,i8086等

    另外上面的所有objdump命令的参数同样适用于arm-linux-objdump。

    同时我们也可以指定big-endian或little-endian(-EB或-EL),我们可以指定从某一个位置开始反汇编等。


    objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍:

    objdump -f test  显示test的文件头信息

    objdump -d test  反汇编test中的需要执行指令的那些section

    objdump -D test  与-d类似,但反汇编test中的所有section

    objdump -h test  显示test的Section Header信息

    objdump -x test  显示test的全部Header信息

    objdump -s test  除了显示test的全部Header信息,还显示他们对应的十六进制文件代码


    输出到txt文件objdump -s test.so>test.txt


    同时可以用命nm,strace,gdb.

    展开全文
  • objdump反汇编用法示例

    万次阅读 2019-04-30 16:36:40
    objdump反汇编,反汇编与源代码混合显示,C++符号逆向解析。

    objdump反汇编用法示例

    原文:http://blog.csdn.net/zoomdy/article/details/50563680
    mingdu.zheng at gmail dot com

    • -d:将代码段反汇编
    • -S:将代码段反汇编的同时,将反汇编代码和源代码交替显示,编译时需要给出-g,即需要调试信息。
    • -C:将C++符号名逆向解析。
    • -l:反汇编代码中插入源代码的文件名和行号。
    • -j section:仅反汇编指定的section。可以有多个-j参数来选择多个section。

    有代码如下:

    class Main
    {
    	int a;
    public:
    	Main()
    	{
    		a = 0;
    	}
    
    	int getA(void)
    	{
    		return this->a;
    	}
    };
    
    

    $objdump -d a.out # 简单反汇编

    08048456 <_ZN4MainC1Ev>:
     8048456:	55                   	push   %ebp
     8048457:	89 e5                	mov    %esp,%ebp
     8048459:	8b 45 08             	mov    0x8(%ebp),%eax
     804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
     8048462:	5d                   	pop    %ebp
     8048463:	c3                   	ret    
    
    08048464 <_ZN4Main4getAEv>:
     8048464:	55                   	push   %ebp
     8048465:	89 e5                	mov    %esp,%ebp
     8048467:	8b 45 08             	mov    0x8(%ebp),%eax
     804846a:	8b 00                	mov    (%eax),%eax
     804846c:	5d                   	pop    %ebp
     804846d:	c3                   	ret    
    

    $objdump -S a.out # 反汇编代码中混入对应的源代码

    08048456 <_ZN4MainC1Ev>:
    class Main
    {
    	int a;
    public:
    	Main()
     8048456:	55                   	push   %ebp
     8048457:	89 e5                	mov    %esp,%ebp
    	{
    		a = 0;
     8048459:	8b 45 08             	mov    0x8(%ebp),%eax
     804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
    	}
     8048462:	5d                   	pop    %ebp
     8048463:	c3                   	ret    
    
    08048464 <_ZN4Main4getAEv>:
    
    	int getA(void)
     8048464:	55                   	push   %ebp
     8048465:	89 e5                	mov    %esp,%ebp
    	{
    		return this->a;
     8048467:	8b 45 08             	mov    0x8(%ebp),%eax
     804846a:	8b 00                	mov    (%eax),%eax
    	}
     804846c:	5d                   	pop    %ebp
     804846d:	c3                   	ret    
    

    $objdump -C -S a.out # C++符号名逆向解析

    08048456 <Main::Main()>:
    class Main
    {
    	int a;
    public:
    	Main()
     8048456:	55                   	push   %ebp
     8048457:	89 e5                	mov    %esp,%ebp
    	{
    		a = 0;
     8048459:	8b 45 08             	mov    0x8(%ebp),%eax
     804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
    	}
     8048462:	5d                   	pop    %ebp
     8048463:	c3                   	ret    
    
    08048464 <Main::getA()>:
    
    	int getA(void)
     8048464:	55                   	push   %ebp
     8048465:	89 e5                	mov    %esp,%ebp
    	{
    		return this->a;
     8048467:	8b 45 08             	mov    0x8(%ebp),%eax
     804846a:	8b 00                	mov    (%eax),%eax
    	}
     804846c:	5d                   	pop    %ebp
     804846d:	c3                   	ret    
    

    objdump -j .text -l -C -S a.out # 打印源文件名和行号

    08048456 <Main::Main()>:
    _ZN4MainC2Ev():
    ~/objdump/main.h:5
    class Main
    {
    	int a;
    public:
    	Main()
     8048456:	55                   	push   %ebp
     8048457:	89 e5                	mov    %esp,%ebp
    ~/objdump/main.h:7
    	{
    		a = 0;
     8048459:	8b 45 08             	mov    0x8(%ebp),%eax
     804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
    ~/objdump/main.h:8
    	}
     8048462:	5d                   	pop    %ebp
     8048463:	c3                   	ret    
    
    08048464 <Main::getA()>:
    _ZN4Main4getAEv():
    ~/objdump/main.h:10
    
    	int getA(void)
     8048464:	55                   	push   %ebp
     8048465:	89 e5                	mov    %esp,%ebp
    ~/objdump/main.h:12
    	{
    		return this->a;
     8048467:	8b 45 08             	mov    0x8(%ebp),%eax
     804846a:	8b 00                	mov    (%eax),%eax
    ~/objdump/main.h:13
    	}
     804846c:	5d                   	pop    %ebp
     804846d:	c3                   	ret    
    
    展开全文
  • objdump命令解析

    2019-08-26 11:16:45
    objdumpobjdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。参数选项--arch...
        

    objdump

    objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。

     

    参数选项

    --archive-headers 
    -a 
    显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 
    
    -b bfdname 
    --target=bfdname 
    指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如: 
    
    objdump -b oasys -m vax -h fu.o 
    显示fu.o的头部摘要信息,明确指出该文件是Vax系统下用Oasys编译器生成的目标文件。objdump -i将给出这里可以指定的目标码格式列表。 
    
    -C 
    --demangle 
    将底层的符号名解码成用户级名字,除了去掉所开头的下划线之外,还使得C++函数名以可理解的方式显示出来。 
    
    --debugging 
    -g 
    显示调试信息。企图解析保存在文件中的调试信息并以C语言的语法显示出来。仅仅支持某些类型的调试信息。有些其他的格式被readelf -w支持。 
    
    -e 
    --debugging-tags 
    类似-g选项,但是生成的信息是和ctags工具相兼容的格式。 
    
    --disassemble 
    -d 
    从objfile中反汇编那些特定指令机器码的section。 
    
    -D 
    --disassemble-all 
    与 -d 类似,但反汇编所有section. 
    
    --prefix-addresses 
    反汇编的时候,显示每一行的完整地址。这是一种比较老的反汇编格式。 
    
    -EB 
    -EL 
    --endian={big|little} 
    指定目标文件的小端。这个项将影响反汇编出来的指令。在反汇编的文件没描述小端信息的时候用。例如S-records.
    
    -f 
    --file-headers 
    显示objfile中每个文件的整体头部摘要信息。 
    
    -h 
    --section-headers 
    --headers 
    显示目标文件各个section的头部摘要信息。 
    
    -H 
    --help 
    简短的帮助信息。 
    
    -i 
    --info 
    显示对于 -b 或者 -m 选项可用的架构和目标格式列表。 
    
    -j name
    --section=name 
    仅仅显示指定名称为name的section的信息 
    
    -l
    --line-numbers 
    用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项。 
    
    -m machine 
    --architecture=machine 
    指定反汇编目标文件时使用的架构,当待反汇编文件本身没描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构.
    
    --reloc 
    -r 
    显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。 
    
    --dynamic-reloc 
    -R 
    显示文件的动态重定位入口,仅仅对于动态目标文件意义,比如某些共享库。 
    
    -s 
    --full-contents 
    显示指定section的完整内容。默认所有的非空section都会被显示。 
    
    -S 
    --source 
    尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。 
    
    --show-raw-insn 
    反汇编的时候,显示每条汇编指令对应的机器码,如不指定--prefix-addresses,这将是缺省选项。 
    
    --no-show-raw-insn 
    反汇编时,不显示汇编指令的机器码,如不指定--prefix-addresses,这将是缺省选项。 
    
    --start-address=address 
    从指定地址开始显示数据,该选项影响-d、-r和-s选项的输出。 
    
    --stop-address=address 
    显示数据直到指定地址为止,该项影响-d、-r和-s选项的输出。 
    
    -t 
    --syms 
    显示文件的符号表入口。类似于nm -s提供的信息 
    
    -T 
    --dynamic-syms 
    显示文件的动态符号表入口,仅仅对动态目标文件意义,比如某些共享库。它显示的信息类似于 nm -D|--dynamic 显示的信息。 
    
    -V 
    --version 
    版本信息 
    
    --all-headers 
    -x 
    显示所可用的头信息,包括符号表、重定位入口。-x 等价于-a -f -h -r -t 同时指定。 
    
    -z 
    --disassemble-zeroes 
    一般反汇编输出将省略大块的零,该选项使得这些零块也被反汇编。 
    
    @file 
    可以将选项集中到一个文件中,然后使用这个@file选项载入。
    
    

    关于符号表字段下面直接只介绍部分常用的:

    .text:已编译程序的机器代码。

    .rodata:只读数据,比如printf语句中的格式串和开关(switch)语句的跳转表。

    .data:已初始化的全局C变量。局部C变量在运行时被保存在栈中,既不出现在.data中,也不出现在.bss节中。

    .bss:未初始化的全局C变量。在目标文件中这个节不占据实际的空间,它仅仅是一个占位符。目标文件格式区分初始化和未初始化变量是为了空间效率在:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间。

    .symtab:一个符号表(symbol table),它存放在程序中被定义和引用的函数和全局变量的信息。一些程序员错误地认为必须通过-g选项来编译一个程序,得到符号表信息。实际上,每个可重定位目标文件在.symtab中都有一张符号表。然而,和编译器中的符号表不同,.symtab符号表不包含局部变量的表目。

    .rel.text:当链接噐把这个目标文件和其他文件结合时,.text节中的许多位置都需要修改。一般而言,任何调用外部函数或者引用全局变量的指令都需要修改。另一方面调用本地函数的指令则不需要修改。注意,可执行目标文件中并不需要重定位信息,因此通常省略,除非使用者显式地指示链接器包含这些信息。

    .rel.data:被模块定义或引用的任何全局变量的信息。一般而言,任何已初始化全局变量的初始值是全局变量或者外部定义函数的地址都需要被修改。

    .debug:一个调试符号表,其有些表目是程序中定义的局部变量和类型定义,有些表目是程序中定义和引用的全局变量,有些是原始的C源文件。只有以-g选项调用编译驱动程序时,才会得到这张表。

    .line:原始C源程序中的行号和.text节中机器指令之间的映射。只有以-g选项调用编译驱动程序时,才会得到这张表。

    .strtab:一个字符串表,其内容包括.symtab和.debug节中的符号表,以及节头部中的节名字。字符串表就是以null结尾的字符串序列。

    使用举例:

    反汇编应用程序

    objdump -d  main.o  

    显示文件头信息 

    objdump -f main.o

    显示制定section段信息(comment段)

    objdump -s -j .comment main.o

    640?wx_fmt=jpeg

    展开全文
  • objdump

    千次阅读 2017-05-27 08:18:53
    1:查看符号表: objdump -t xxx.so 。-T 和 -t 选项在于 -T 只能查看动态符号,如库导出的函数和引用其他库的函数,而 -t 可以查看所有的符号,包括数据段的符号 2:nm命令可以查看,linux以及windows下的.o ,...

    1:查看符号表: objdump -t xxx.so 。-T 和 -t 选项在于 -T 只能查看动态符号,如库导出的函数和引用其他库的函数,而 -t 可以查看所有的符号,包括数据段的符号


    2:nm命令可以查看,linux以及windows下的.o ,.obj文件中的符号列表


    3:

    objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出 <可查到该文件的所有动态库> 
    objdump -t obj 输出目标文件的符号表()
    objdump -h obj 输出目标文件的所有段概括()
    objdump -j .text/.data -S obj 输出指定段的信息,大概就是反汇编源代码把
    objdump -S obj C语言与汇编语言同时显示


    4        rodata
    rodata的意义同样明显,ro代表read only,即只读数据(const)。关于rodata类型的数据,要注意以下几点:
    常量不一定就放在rodata里,有的立即数直接编码在指令里,存放在代码段(.text)中。
     对于字符串常量,编译器会自动去掉重复的字符串,保证一个字符串在一个可执行文件(EXE/SO)中只存在一份拷贝。
    rodata是在多个进程间是共享的,这可以提高空间利用率。
    在有的嵌入式系统中,rodata放在ROM(如norflash)里,运行时直接读取ROM内存,无需要加载到RAM内存中。
    在嵌入式linux系统中,通过一种叫作XIP(就地执行)的技术,也可以直接读取,而无需要加载到RAM内存中。

    由此可见,把在运行过程中不会改变的数据设为rodata类型的,是有很多好处的:在多个进程间共享,可以大大提高空间利用率,甚至不占用RAM空间。同时由于rodata在只读的内存页面(page)中,是受保护的,任何试图对它的修改都会被及时发现,这可以帮助提高程序的稳定性。


    5:查看依赖项:objdump -x xxx.so | grep "NEEDED" 


    6:如.symtab是符号表、.rodata是只读数据、还有.comment和.debug_info等等。还有一些可能就不知道了,这里择其要者先作些简略的介绍:
    (1).hash。为便于根据函数/变量名找到有关的符号表项,需要对函数/变量名进行hash计算,并根据计算值建立hash队列。
    ● .dynsym。需要加以动态连接的符号表,类似于内核模块中的INPORT符号表。这是动态连接符号表的数据结构部分,须与.dynstr联用。
    ● .dynstr。动态连接符号表的字符串部分,与.dynsym联用。
    ● .rel.dyn。用于动态连接的重定位信息。
    ● .rel.plt。一个结构数组,其中的每个元素都代表着GOP表中的一个表项GOTn(见下)。
    ● .init。在进入main()之前执行的代码在这个Section中。
    ● .plt。“过程连接表(Procedure Linking Table)”,见后。
    ● .fini。从main()返回之后执行的代码在这个Section中,最后会调用exit()。
    ● .ctors。表示“Constructor”,是一个函数指针数组,这些函数需要在程序初始化阶段(进入main()之前,在.init中)加以调用。
    ● .dtors。表示“Distructor”,也是一个函数指针数组,这些函数需要在程序扫尾阶段(从main()返回之后,在.fini中)加以调用。
    ● .got。“全局位移表(Global Offset Table)”,见后。
    ● .strtab。与符号表有关的字符串都集中在这个Section中。


    对于 nm 命令列出的每个符号,它们的值使用十六进制来表示(缺省行为),并且在该符号前面加上了一个表示符号类型的编码字符。常见的各种编码包括:A 表示绝对 (absolute),这意味着不能将该值更改为其他的连接;B 表示 BSS 段中的符号;而 C 表示引用未初始化的数据的一般符号。详解下表

     

    符号
    类型
    说明
    A 该符号的值是绝对的,在以后的链接过程中,不允许进行改变。这样的符号值,常常出现在中断向量表中,例如用符号来表示各个中断向量函数在中断向量表中的位置。
    B 该符号的值出现在非初始化数据段(bss)中。例如,在一个文件中定义全局static int test。则该符号test的类型为b,位于bss section中。其值表示该符号在bss段中的偏移。一般而言,bss段分配于RAM
    C 该符号为commoncommon symbol是未初始话数据段。该符号没有包含于一个普通section中。只有在链接过程中才进行分配。符号的值表示该符号需要的字节数。例如在一个c文件中,定义int test,并且该符号在别的地方会被引用,则该符号类型即为C。否则其类型为B
    D 该符号位于初始话数据段中。一般来说,分配到data section中。例如定义全局int baud_table[5] = {9600, 19200, 38400, 57600, 115200},则会分配于初始化数据段中
    G 该符号也位于初始化数据段中。主要用于small object提高访问small data object的一种方式。
    I 该符号是对另一个符号的间接引用。
    N 该符号是一个debugging符号。
    R 该符号位于只读数据区。例如定义全局const int test[] = {123, 123};test就是一个只读数据区的符号。注意在cygwin下如果使用gcc直接编译成MZ格式时,源文件中的test对应_test,并且其符号类型为D,即初始化数据段中。但是如果使用m6812-elf-gcc这样的交叉编译工具,源文件中的test对应目标文件的test,即没有添加下划线,并且其符号类型为R。一般而言,位于rodata section。值得注意的是,如果在一个函数中定义const char *test = “abc”, const char test_int = 3。使用nm都不会得到符号信息,但是字符串“abc”分配于只读存储器中,testrodata section中,大小为4
    S 符号位于非初始化数据区,用于small object
    T 该符号位于代码区text section
    U 该符号在当前文件中是未定义的,即该符号的定义在别的文件中。例如,当前文件调用另一个文件中定义的函数,在这个被调用的函数在当前就是未定义的;但是在定义它的文件中类型是T。但是对于全局变量来说,在定义它的文件中,其符号类型为C,在使用它的文件中,其类型为U
    V 该符号是一个weak object
    W The symbol is a weak symbol that has not been specifically tagged as a weak object symbol.
    - 该符号是a.out格式文件中的stabs symbol
    ? 该符号类型没有定义





    展开全文
  • Linux:objdump命令解析

    万次阅读 2019-12-18 15:19:52
    objdump objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 参数选项: --archive-headers -a 显示档案库的成员信息,类似ls ...
  • objdump选项说明

    千次阅读 2017-05-25 00:03:36
    objdump 文件命令功能强的惊人。能实现上述两个命令(ar,nm)的很多功能。它主要是查看对象文件的内容信息。 常用法: objdump -h file//查看对象文件所有的节sections.例如: # objdump -h libtest1.o ...
  • objdump命令的使用

    2016-09-21 14:14:45
    objdump命令的使用 objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍: objdump -f test 显示test的文件头信息 objdump -d ...
  • 反汇编工具objdump的使用简介

    千次阅读 2016-11-08 11:55:28
    objdump是我们进行反汇编的工具 还记得Makefile文件吗? led.bin: start.o  arm-linux-ld -Ttext 0x0 -o led.elf $^ 下载烧录执行的bin文件,内部其实是一条一条的指令机器码。这些指令每一条都有一个指令地址,...
  • Objdump查看依赖so动态库文件

    万次阅读 2013-05-29 14:04:40
    在做系统跨平台移植的时候,需要知道生成的o文件需要的so动态库文件,就可以使用下命令了。 zchx@ubuntu:~/workspace/mips_UDP/...zchx@ubuntu:~/workspace/mips_UDP/g++build$ objdump -x a.out |grep NEEDED
  • 这时需要查看可执行程序或者动态库中的符号表,动态库的依赖项, Linux 有现成的工具可用:objdumpobjdump 是 gcc 套件中用来查看 ELF 文件的工具,具体详细用法不进行介绍,此处只讲解如何进行一个动态库和静态...
  • objdump 符号表输出格式

    千次阅读 2011-07-11 23:54:44
    没找到objdump的输出格式解释的文档,只能自己猜测了。objdump打印符号表的格式:shenyan@ubuntu:~/Temp$ objdump -t a.oa.o: file format elf32-i386SYMBOL TABLE:00000000 l
  • linux中的objdump命令(反汇编常用)

    万次阅读 2020-10-06 17:49:17
    我们介绍过linux中的readelf命令, 但迟迟没有介绍objdump命令, 因为其实后者可以看作是前者的子集, 我们来看看官方文档怎么说: /* The difference between readelf and objdump: Both programs are capable...
  • linux下objdump命令的具体选项如下: objdump [-a│--archive-headers] [-b bfdname│--target=bfdname] [-C│--demangle[=style] ] [-d│--disassemble] [-D│--
  • source build/envsetup.sh ...arm-eabi-objdump -d out/target/product/generic/system/bin/mediaserver >mediaserver.addr 将mediaserver地址信息写入文件mediaserver.addr arm-eabi-objdump在prebuilt/linux
  • 使用objdump objcopy查看与修改符号表

    万次阅读 2014-03-13 11:04:41
    这时需要查看可执行程序或者动态库中的符号表,动态库的依赖项, Linux 有现成的工具可用:objdump 。 有时我们拿到一个静态库,想调用其中的函数,而某些函数作用域非全局,也可以通过修改符号来达到目的。 Linux ...
  • 在其他文章里,这三个指令用了好多次了,但是没有真正总结他们的用法,现在来讲解一下。 参看:readelf命令  参看:objdump命令 参看:nm命令
  • objdump与readelf的区别

    千次阅读 2008-11-10 00:14:00
    objdump和readelf功能相似,都可以从二进制文件中读取相应的信息并显示,它们的区别在readelf.c中有相关的说明:/* The difference between readelf and objdump: Both programs are capable of displaying the ...
  • objdump 反汇编一个函数的脚本

    千次阅读 2012-04-19 12:51:44
    2)使用objdump -d 反汇编, 然后通过--start-address和--stop-address参数指定函数区间 3)使用nm -n out.elf > System.map 命令生成System.map文件 4)grep -A 1 打印匹配行和下一行, awk 打印第一列地址. #!/...
  • gcc 如何编译so 和 objdump 反汇编

    千次阅读 2017-09-04 22:54:30
    1、打开cygwin 终端 2、切换到源码所在目录 3、通过gcc编译 输入:gcc test.c -fPIC -shared -o ...-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code), ...4.使用objdum
  • 实例分析objdump反汇编用法

    万次阅读 2018-07-06 15:39:16
    Ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版-----------------------------------------------------------------------------------objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。...
1 2 3 4 5 ... 20
收藏数 20,041
精华内容 8,016
关键字:

objdump