精华内容
下载资源
问答
  • objdump工具的使用

    2020-12-14 14:33:18
    objdump是什么? objdump是gcc工具链中的反汇编工具;(什么是反汇编?将二进制文件反汇编成汇编语言) objdump以可执行命令工具,在Linux下可以自己找寻源码及定位工具位置,...用find命令找到objdump工具所在的..

    objdump是什么?

    objdump是gcc工具链中的反汇编工具;(什么是反汇编?将二进制文件反汇编成汇编语言)

    objdump以可执行命令工具,在Linux下可以自己找寻源码及定位工具位置,参看:

    https://blog.csdn.net/JoggingPig/article/details/108098077

     

    objdump一般什么时候需要用?

    个人觉得需要看C文件对应的汇编代码,可以用这个工具;

     

    objdump怎么用?

    用find命令找到objdump工具所在的位置,然后执行"./objdump --help",参看:

    https://blog.csdn.net/JoggingPig/article/details/108098077

     

    展开全文
  • 1、objdump工具 用法: 反汇编目标文件,查看汇编到源码的映射(后面代码案例分析看具体区别) objdump -d func.o objdump -S func.o 查看目标文件中的详细段信息 objdump -h test.o ...

    上一篇文章学习了ar工具与nm工具,点击链接查看上一篇文章:点击链接

    本片文章学习记录以下三个工具:

    • objdump
    • size
    • strings

    1、objdump工具

    用法:

    • 反汇编目标文件,查看汇编到源码的映射(后面代码案例分析看具体区别)

      • objdump -d func.o
      • objdump -S func.o
    • 查看目标文件中的详细段信息

      • objdump -h test.o

    其中objdump -h的输出需要说明一下(后面有例子说明):
    在这里插入图片描述

    1.1、代码案例

    还是以上一篇文章的代码来说明(运行时出错,但是不影响我们本次的实验)

    test.c

    #include <stdio.h>
    
    int g_global = 0;
    int g_test = 1;
    
    extern int* g_pointer;
    extern void func();
    
    int main(int argc, char *argv[])
    {
        printf("&g_global = %p\n", &g_global);
        printf("&g_test = %p\n", &g_test);
        printf("&g_pointer = %p\n", &g_pointer);
        printf("g_pointer = %p\n", g_pointer);
        printf("&func = %p\n", &func);
        printf("&main = %p\n", &main);
        
        func();
    	
        return 0;
    }
    

    func.c

    #include <stdio.h>
    
    int* g_pointer;
    
    void func()
    {
    	*g_pointer = (int)"D.T.Software";
    
        return;
    }
    

    对上述代码进行编译:

    • gcc -g -c func.c -o func.o
    • gcc -g -c test.c -o test.o
    • gcc func.c test.c -o lyy
    1. 然后使用objdump -d命令进行反汇编:
    • objdump -d func.o

    结果如下:
    在这里插入图片描述

    很明显,我们得到了func.o的反汇编文件。但是上来看这个反汇编文件,也很是不方便,如果能够将源代码与汇编代码对应的看就好了。objdump -S正具有这个功能

    1. 使用objdump -S进行反汇编
    • objdump -S func.o

    结果如下:
    在这里插入图片描述

    结果显而易见,我们可以看到源代码与汇编语言的的对照。

    1. 使用objdump -h查看目标文件中的详细段信息
    • objdump -h test.o

    结果如下:
    在这里插入图片描述

    上述对应的每一列的内容,在上面的表格中已经有所说明。需要注意的地方是VMA与LMA这两列内容一般情况下是相等的。并且在上面的例子中我们看到它们对应的列都是0,其实是因为test.o目标文件是没有链接的文件,它的加载地址都还是不确定的,所以在这里就直接是0.

    VMM是虚拟内存地址,实际上就是进程的地址空间中的地址,此时,程序的一个副本进程,已经运行起来了,它的加载地址(LMA)就是加载到虚拟地址空间中的地址。所以LMA与VMA相等。

    比如我们对可执行文件lyy进行查询:

    • objdump -h lyy

    显示如下(不全):
    在这里插入图片描述

    很明显,此时的lyy是可执行文件,是已经链接好的文件,所以它的VMA与LMA都有具体的值。并且相等。

    2、size工具

    • size工具可以获取目标文件中所有段的大小

    如:

    • size test.o
      在这里插入图片描述

    3、strings工具

    • 获取目标文件中的所有字符串常量

    如:

    • strings test.o
      在这里插入图片描述

    很明显,双引号下的字符串,都是字符串常量。

    4、总结

    • 学会使用objdump工具(-d -S -h这三个选项的含义)
    • 学会使用size工具查看目标文件各个段的大小
    • 学会使用strings工具查看目标文件的所有字符串常量

    本文参考狄泰软件学院相关课程
    想学习的可以加狄泰软件学院群,
    群聊号码:199546072

    学习探讨加个人(可以免费帮忙下载CSDN资源):
    qq:1126137994
    微信:liu1126137994

    展开全文
  • arm-linux-objdump工具介绍

    千次阅读 2018-04-08 14:32:24
    arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码常用选项: 1.-b bfdname 指定目标码格式 2.—disassemble或者-d 反汇编可执行段 3.—dissassemble-all或者-D 反汇编所有段 4.-EB,-EL指定字节序 5....
    arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码
    
    常用选项:
    1.-b bfdname 指定目标码格式
    2.—disassemble或者-d 反汇编可执行段
    3.—dissassemble-all或者-D 反汇编所有段
    4.-EB,-EL指定字节序
    5.—file-headers或者-f 显示文件的整体头部摘要信息
    6.—section-headers,--headers或者-h 显示目标文件中各个段的头部摘要信息
    7.—info 或者-I 显示支持的目标文件格式和CPU架构
    8.—section=name或者-j name显示指定section 的信息
    9.—architecture=machine或者-m machine 指定反汇编目标文件时使用的架构
    示例:
    将ELF格式的文件转换成反汇编文件:
    arm-linux-objdump –D elf_file > dis_file
    将二进制文件转换成反汇编文件:

    arm-linux-objdump –D –b binary –m arm bin_file > dis_file

    备注:本文内存摘录自《嵌入式Linux应用开发完全手册》一书。

    展开全文
  • objdump的选项-S、-l十分方便。...在OSX上,对应的工具是otool。与“objdump -Sl”能力接近的命令是otool -tV。 看一看insert sort算法的反编译。插入排序的一种实现: 1 2 3 4 5 6 7 8 9 10

    objdump的选项-S、-l十分方便。如果二进制文件中带有调试信息,可以将源代码、文件名和行号与汇编代码对应显示。

    在OSX上,对应的工具是otool。与“objdump -Sl”能力接近的命令是otool -tV。

    看一看insert sort算法的反编译。插入排序的一种实现:

    #include <stdio.h>
    
    void insert_sort(int* L, int size) {
    	int tmp, i, j;
    	for (i = 1; i < size; ++i) {
    		tmp = L[i];
    		for (j = i-1; j >= 0 && L[j] > tmp; --j) {
    			L[j+1] = L[j];
    		}
    		L[j+1] = tmp;
    	}
    }
    
    void print_array(int* L, int size) {
    	printf("array: ");
    	for (int i = 0; i < size; ++i) {
    		printf("%d ", L[i]);
    	}
    	printf("\n");
    }
    
    int main (int argc, char** argv) {
    	int L[] = {18, 7, 5, 8, 99};
    	int size = sizeof(L) / sizeof(int);
    	insert_sort(L, size);
    	print_array(L, size);
    	return 0;
    }


    这个实现中没有全局变量,数据段(Data Section)应该没有内容。我们用"otool -dV insertsort"这个命令,只显示Data Section, 验证一下:

    1. oliverluan@localhost:~/Documents/Opt/insertsort$ otool -dV insertsort  
    2. insertsort:  

    如果把L数据和size变量改写成全局变量:

    1. oliverluan@localhost:~/Documents/Opt/insertsort$ gcc -g insertsort_global.c -o insertsort_global  
    2. oliverluan@localhost:~/Documents/Opt/insertsort$ otool -dV insertsort_global  
    3. insertsort_global:  
    4. (__DATA,__data) section  
    5. 0000000100001020    12 00 00 00 07 00 00 00 05 00 00 00 08 00 00 00  
    6. 0000000100001030    63 00 00 00 05 00 00 00  

    看一看Text Section: otool -tV insertsort:

    1. oliverluan@localhost:~/Documents/Opt/insertsort$ otool -tV insertsort  
    2. insertsort:  
    3. (__TEXT,__text) section  
    4. _insert_sort:  
    5. 0000000100000dd0    pushq   %rbp  
    6. 0000000100000dd1    movq    %rsp, %rbp  
    7. 0000000100000dd4    movq    %rdi, 0xfffffffffffffff8(%rbp)  
    8. 0000000100000dd8    movl    %esi, 0xfffffffffffffff4(%rbp)  
    9. 0000000100000ddb    movl    $0x1, 0xffffffffffffffec(%rbp)  
    10. 0000000100000de2    movl    0xffffffffffffffec(%rbp), %eax  
    11. 0000000100000de5    cmpl    0xfffffffffffffff4(%rbp), %eax  
    12. 0000000100000de8    jge 0x100000e94  
    13. 0000000100000dee    movslq  0xffffffffffffffec(%rbp), %rax  
    14. 0000000100000df2    movq    0xfffffffffffffff8(%rbp), %rcx  
    15. 0000000100000df6    movl    (%rcx,%rax,4), %edx  
    16. 0000000100000df9    movl    %edx, 0xfffffffffffffff0(%rbp)  
    17. 0000000100000dfc    movl    0xffffffffffffffec(%rbp), %edx  
    18. 0000000100000dff    subl    $0x1, %edx  
    19. 0000000100000e05    movl    %edx, 0xffffffffffffffe8(%rbp)  
    20. 0000000100000e08    movb    $0x0, %al  
    21. 0000000100000e0a    cmpl    $0x0, 0xffffffffffffffe8(%rbp)  
    22. 0000000100000e11    movb    %al, 0xffffffffffffffe7(%rbp)  
    23. 0000000100000e14    jl  0x100000e30  
    24. 0000000100000e1a    movslq  0xffffffffffffffe8(%rbp), %rax  
    25. 0000000100000e1e    movq    0xfffffffffffffff8(%rbp), %rcx  
    26. 0000000100000e22    movl    (%rcx,%rax,4), %edx  
    27. 0000000100000e25    cmpl    0xfffffffffffffff0(%rbp), %edx  
    28. 0000000100000e28    setg    %sil  
    29. 0000000100000e2c    movb    %sil, 0xffffffffffffffe7(%rbp)  
    30. 0000000100000e30    movb    0xffffffffffffffe7(%rbp), %al  
    31. 0000000100000e33    testb   $0x1, %al  
    32. 0000000100000e35    jne 0x100000e40  
    33. 0000000100000e3b    jmpq    0x100000e6e  
    34. 0000000100000e40    movslq  0xffffffffffffffe8(%rbp), %rax  
    35. 0000000100000e44    movq    0xfffffffffffffff8(%rbp), %rcx  
    36. 0000000100000e48    movl    (%rcx,%rax,4), %edx  
    37. 0000000100000e4b    movl    0xffffffffffffffe8(%rbp), %esi  
    38. 0000000100000e4e    addl    $0x1, %esi  
    39. 0000000100000e54    movslq  %esi, %rax  
    40. 0000000100000e57    movq    0xfffffffffffffff8(%rbp), %rcx  
    41. 0000000100000e5b    movl    %edx, (%rcx,%rax,4)  
    42. 0000000100000e5e    movl    0xffffffffffffffe8(%rbp), %eax  
    43. 0000000100000e61    addl    $0xffffffff, %eax  
    44. 0000000100000e66    movl    %eax, 0xffffffffffffffe8(%rbp)  
    45. 0000000100000e69    jmpq    0x100000e08  
    46. 0000000100000e6e    movl    0xfffffffffffffff0(%rbp), %eax  
    47. 0000000100000e71    movl    0xffffffffffffffe8(%rbp), %ecx  
    48. 0000000100000e74    addl    $0x1, %ecx  
    49. 0000000100000e7a    movslq  %ecx, %rdx  
    50. 0000000100000e7d    movq    0xfffffffffffffff8(%rbp), %rsi  
    51. 0000000100000e81    movl    %eax, (%rsi,%rdx,4)  
    52. 0000000100000e84    movl    0xffffffffffffffec(%rbp), %eax  
    53. 0000000100000e87    addl    $0x1, %eax  
    54. 0000000100000e8c    movl    %eax, 0xffffffffffffffec(%rbp)  
    55. 0000000100000e8f    jmpq    0x100000de2  
    56. 0000000100000e94    popq    %rbp  
    57. 0000000100000e95    ret  
    58. 0000000100000e96    nopw    %cs:(%rax,%rax)  
    59. _print_array:  
    60. 0000000100000ea0    pushq   %rbp  
    61. 0000000100000ea1    movq    %rsp, %rbp  
    62. 0000000100000ea4    subq    $0x20, %rsp  
    63. 0000000100000ea8    leaq    0xdb(%rip), %rax ## literal pool for: array:  
    64. 0000000100000eaf    movq    %rdi, 0xfffffffffffffff8(%rbp)  
    65. 0000000100000eb3    movl    %esi, 0xfffffffffffffff4(%rbp)  
    66. 0000000100000eb6    movq    %rax, %rdi  
    67. 0000000100000eb9    movb    $0x0, %al  
    68. 0000000100000ebb    callq   0x100000f68 ## symbol stub for: _printf  
    69. 0000000100000ec0    movl    $0x0, 0xfffffffffffffff0(%rbp)  
    70. 0000000100000ec7    movl    %eax, 0xffffffffffffffec(%rbp)  
    71. 0000000100000eca    movl    0xfffffffffffffff0(%rbp), %eax  
    72. 0000000100000ecd    cmpl    0xfffffffffffffff4(%rbp), %eax  
    73. 0000000100000ed0    jge 0x100000f02  
    74. 0000000100000ed6    leaq    0xb5(%rip), %rdi ## literal pool for: %d  
    75. 0000000100000edd    movslq  0xfffffffffffffff0(%rbp), %rax  
    76. 0000000100000ee1    movq    0xfffffffffffffff8(%rbp), %rcx  
    77. 0000000100000ee5    movl    (%rcx,%rax,4), %esi  
    78. 0000000100000ee8    movb    $0x0, %al  
    79. 0000000100000eea    callq   0x100000f68 ## symbol stub for: _printf  
    80. 0000000100000eef    movl    %eax, 0xffffffffffffffe8(%rbp)  
    81. 0000000100000ef2    movl    0xfffffffffffffff0(%rbp), %eax  
    82. 0000000100000ef5    addl    $0x1, %eax  
    83. 0000000100000efa    movl    %eax, 0xfffffffffffffff0(%rbp)  
    84. 0000000100000efd    jmpq    0x100000eca  
    85. 0000000100000f02    leaq    0x8d(%rip), %rdi ## literal pool for:  
    86.   
    87. 0000000100000f09    movb    $0x0, %al  
    88. 0000000100000f0b    callq   0x100000f68 ## symbol stub for: _printf  
    89. 0000000100000f10    movl    %eax, 0xffffffffffffffe4(%rbp)  
    90. 0000000100000f13    addq    $0x20, %rsp  
    91. 0000000100000f17    popq    %rbp  
    92. 0000000100000f18    ret  
    93. 0000000100000f19    nopl    (%rax)  
    94. _main:  
    95. 0000000100000f20    pushq   %rbp  
    96. 0000000100000f21    movq    %rsp, %rbp  
    97. 0000000100000f24    subq    $0x10, %rsp  
    98. 0000000100000f28    leaq    _L(%rip), %rax  
    99. 0000000100000f2f    movl    $0x0, 0xfffffffffffffffc(%rbp)  
    100. 0000000100000f36    movl    %edi, 0xfffffffffffffff8(%rbp)  
    101. 0000000100000f39    movq    %rsi, 0xfffffffffffffff0(%rbp)  
    102. 0000000100000f3d    movl    _size(%rip), %esi  
    103. 0000000100000f43    movq    %rax, %rdi  
    104. 0000000100000f46    callq   _insert_sort  
    105. 0000000100000f4b    leaq    _L(%rip), %rdi  
    106. 0000000100000f52    movl    _size(%rip), %esi  
    107. 0000000100000f58    callq   _print_array  
    108. 0000000100000f5d    movl    $0x0, %eax  
    109. 0000000100000f62    addq    $0x10, %rsp  
    110. 0000000100000f66    popq    %rbp  
    111. 0000000100000f67    ret  

    另外,可以用-l选项查看load commands:

    1. oliverluan@localhost:~/Documents/Opt/insertsort$ otool -l insertsort_global  
    2. insertsort_global:  
    3. Load command 0  
    4.       cmd LC_SEGMENT_64  
    5.   cmdsize 72  
    6.   segname __PAGEZERO  
    7.    vmaddr 0x0000000000000000  
    8.    vmsize 0x0000000100000000  
    9.   fileoff 0  
    10.  filesize 0  
    11.   maxprot 0x00000000  
    12.  initprot 0x00000000  
    13.    nsects 0  
    14.     flags 0x0  
    15. Load command 1  
    16.       cmd LC_SEGMENT_64  
    17.   cmdsize 632  
    18.   segname __TEXT  
    19.    vmaddr 0x0000000100000000  
    20.    vmsize 0x0000000000001000  
    21.   fileoff 0  
    22.  filesize 4096  
    23.   maxprot 0x00000007  
    24.  initprot 0x00000005  
    25.    nsects 7  
    26.     flags 0x0  
    27. Section  
    28.   sectname __text  
    29.    segname __TEXT  
    30.       addr 0x0000000100000d60  
    31.       size 0x00000000000001d9  
    32.     offset 3424  
    33.      align 2^4 (16)  
    34.     reloff 0  
    35.     nreloc 0  
    36.      flags 0x80000400  
    37.  reserved1 0  
    38.  reserved2 0  
    39. Section  
    40.   sectname __stubs  
    41.    segname __TEXT  
    42.       addr 0x0000000100000f3a  
    43.       size 0x000000000000000c  
    44.     offset 3898  
    45.      align 2^1 (2)  
    46.     reloff 0  
    47.     nreloc 0  
    48.      flags 0x80000408  
    49.  reserved1 0 (index into indirect symbol table)  
    50.  reserved2 6 (size of stubs)  
    51. Section  
    52.   sectname __stub_helper  
    53.    segname __TEXT  
    54.       addr 0x0000000100000f48  
    55.       size 0x0000000000000024  
    56.     offset 3912  
    57.      align 2^2 (4)  
    58.     reloff 0  
    59.     nreloc 0  
    60.      flags 0x80000400  
    61.  reserved1 0  
    62.  reserved2 0  
    63. Section  
    64.   sectname __cstring  
    65.    segname __TEXT  
    66.       addr 0x0000000100000f6c  
    67.       size 0x000000000000000e  
    68.     offset 3948  
    69.      align 2^0 (1)  
    70.     reloff 0  
    71.     nreloc 0  
    72.      flags 0x00000002  
    73.  reserved1 0  
    74.  reserved2 0  
    75. Section  
    76.   sectname __const  
    77.    segname __TEXT  
    78.       addr 0x0000000100000f80  
    79.       size 0x0000000000000014  
    80.     offset 3968  
    81.      align 2^4 (16)  
    82.     reloff 0  
    83.     nreloc 0  
    84.      flags 0x00000000  
    85.  reserved1 0  
    86.  reserved2 0  
    87. Section  
    88.   sectname __unwind_info  
    89.    segname __TEXT  
    90.       addr 0x0000000100000f94  
    91.       size 0x0000000000000048  
    92.     offset 3988  
    93.      align 2^0 (1)  
    94.     reloff 0  
    95.     nreloc 0  
    96.      flags 0x00000000  
    97.  reserved1 0  
    98.  reserved2 0  
    99. Section  
    100.   sectname __eh_frame  
    101.    segname __TEXT  
    102.       addr 0x0000000100000fe0  
    103.       size 0x0000000000000018  
    104.     offset 4064  
    105.      align 2^3 (8)  
    106.     reloff 0  
    107.     nreloc 0  
    108.      flags 0x00000000  
    109.  reserved1 0  
    110.  reserved2 0  
    111. Load command 2  
    112.       cmd LC_SEGMENT_64  
    113.   cmdsize 312  
    114.   segname __DATA  
    115.    vmaddr 0x0000000100001000  
    116.    vmsize 0x0000000000001000  
    117.   fileoff 4096  
    118.  filesize 4096  
    119.   maxprot 0x00000007  
    120.  initprot 0x00000003  
    121.    nsects 3  
    122.     flags 0x0  
    123. Section  
    124.   sectname __nl_symbol_ptr  
    125.    segname __DATA  
    126.       addr 0x0000000100001000  
    127.       size 0x0000000000000010  
    128.     offset 4096  
    129.      align 2^3 (8)  
    130.     reloff 0  
    131.     nreloc 0  
    132.      flags 0x00000006  
    133.  reserved1 2 (index into indirect symbol table)  
    134.  reserved2 0  
    135. Section  
    136.   sectname __got  
    137.    segname __DATA  
    138.       addr 0x0000000100001010  
    139.       size 0x0000000000000008  
    140.     offset 4112  
    141.      align 2^3 (8)  
    142.     reloff 0  
    143.     nreloc 0  
    144.      flags 0x00000006  
    145.  reserved1 4 (index into indirect symbol table)  
    146.  reserved2 0  
    147. Section  
    148.   sectname __la_symbol_ptr  
    149.    segname __DATA  
    150.       addr 0x0000000100001018  
    151.       size 0x0000000000000010  
    152.     offset 4120  
    153.      align 2^3 (8)  
    154.     reloff 0  
    155.     nreloc 0  
    156.      flags 0x00000007  
    157.  reserved1 5 (index into indirect symbol table)  
    158.  reserved2 0  
    159. Load command 3  
    160.       cmd LC_SEGMENT_64  
    161.   cmdsize 72  
    162.   segname __LINKEDIT  
    163.    vmaddr 0x0000000100002000  
    164.    vmsize 0x0000000000001000  
    165.   fileoff 8192  
    166.  filesize 916  
    167.   maxprot 0x00000007  
    168.  initprot 0x00000001  
    169.    nsects 0  
    170.     flags 0x0  
    171. Load command 4  
    172.             cmd LC_DYLD_INFO_ONLY  
    173.         cmdsize 48  
    174.      rebase_off 8192  
    175.     rebase_size 8  
    176.        bind_off 8200  
    177.       bind_size 56  
    178.   weak_bind_off 0  
    179.  weak_bind_size 0  
    180.   lazy_bind_off 8256  
    181.  lazy_bind_size 40  
    182.      export_off 8296  
    183.     export_size 80  
    184. Load command 5  
    185.      cmd LC_SYMTAB  
    186.  cmdsize 24  
    187.   symoff 8408  
    188.    nsyms 24  
    189.   stroff 8820  
    190.  strsize 288  
    191. Load command 6  
    192.             cmd LC_DYSYMTAB  
    193.         cmdsize 80  
    194.       ilocalsym 0  
    195.       nlocalsym 16  
    196.      iextdefsym 16  
    197.      nextdefsym 4  
    198.       iundefsym 20  
    199.       nundefsym 4  
    200.          tocoff 0  
    201.            ntoc 0  
    202.       modtaboff 0  
    203.         nmodtab 0  
    204.    extrefsymoff 0  
    205.     nextrefsyms 0  
    206.  indirectsymoff 8792  
    207.   nindirectsyms 7  
    208.       extreloff 0  
    209.         nextrel 0  
    210.       locreloff 0  
    211.         nlocrel 0  
    212. Load command 7  
    213.           cmd LC_LOAD_DYLINKER  
    214.       cmdsize 32  
    215.          name /usr/lib/dyld (offset 12)  
    216. Load command 8  
    217.      cmd LC_UUID  
    218.  cmdsize 24  
    219.     uuid F88FCA7D-3FE0-3556-96A4-4F29B7812D93  
    220. Load command 9  
    221.       cmd LC_VERSION_MIN_MACOSX  
    222.   cmdsize 16  
    223.   version 10.9  
    224.       sdk 10.9  
    225. Load command 10  
    226.       cmd LC_SOURCE_VERSION  
    227.   cmdsize 16  
    228.   version 0.0  
    229. Load command 11  
    230.        cmd LC_MAIN  
    231.    cmdsize 24  
    232.   entryoff 3760  
    233.  stacksize 0  
    234. Load command 12  
    235.           cmd LC_LOAD_DYLIB  
    236.       cmdsize 56  
    237.          name /usr/lib/libSystem.B.dylib (offset 24)  
    238.    time stamp 2 Thu Jan  1 08:30:02 1970  
    239.       current version 1197.1.1  
    240. compatibility version 1.0.0  
    241. Load command 13  
    242.       cmd LC_FUNCTION_STARTS  
    243.   cmdsize 16  
    244.   dataoff 8376  
    245.  datasize 8  
    246. Load command 14  
    247.       cmd LC_DATA_IN_CODE  
    248.   cmdsize 16  
    249.   dataoff 8384  
    250.  datasize 0  
    251. Load command 15  
    252.       cmd LC_DYLIB_CODE_SIGN_DRS  
    253.   cmdsize 16  
    254.   dataoff 8384  
    255.  datasize 24  

    符号表的查看使用nm -px insertsort。-p 原始顺序,不做symbol字母或者数字排序。-x 16进制表示 

    1. oliverluan@localhost:~/Documents/Opt/insertsort$ nm -px insertsort  
    2. 0000000100001020 0f 09 0000 00000000000000a9 _L  
    3. 0000000100000000 0f 01 0010 00000000000000ac __mh_execute_header  
    4. 0000000100000dd0 0f 01 0000 00000000000000c0 _insert_sort  
    5. 0000000100000f20 0f 01 0000 00000000000000cd _main  
    6. 0000000100000ea0 0f 01 0000 00000000000000d3 _print_array  
    7. 0000000100001034 0f 09 0000 00000000000000e0 _size  
    8. 0000000000000000 01 00 0100 00000000000000e6 _printf  
    9. 0000000000000000 01 00 0100 00000000000000ee dyld_stub_binder  


    展开全文
  • ./objdump-function.sh vmlinux symbol symbol指定要找的函数名 vmlinux=$1 symbol=$2 #source /opt/poky/1.6.1/environment-setup-cortexa15hf-vfp-neon-poky-linux-gnueabi if [ -z "$vmlinux" ]; then ...
  • 1.crash日志处理(需要什么工具?分为几步?) 2.问题如何放入到代码中(源代码反汇编,要使用什么工具?) 3.确定crash问题位置(使用crash日志中的反汇编地址在源码中查找对应的位置) 二.分析问题 根据相关的...
  • readelf,nm, objdump工具使用的总结

    千次阅读 2013-11-05 04:36:35
    有时候需要去检查哪些代码...这种情况下,可借助GNU工具来检查。 先写个简单的测试代码: $ cat PCString.h #ifndef __PCSTRING_H__ #define __PCSTRING_H__ class PCString { public: static bool Copy(const
  • objdump

    2017-11-27 21:42:19
    objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 14.1. 常用参数说明 -f 显示文件头信息-D 反汇编所有section (-d反汇编特定section)-h 显示...
  • arm-linux-gnueabi-objdump -d u-boot &gt; u-boot.asm 反汇编uboot的二进制文件: arm-linux-objdump -D -b binary -m arm xxx.bin &gt; xxx.asm
  • objdump工具可以对对象文件进行分析,包括查看对象文件内容,以及反汇编对象文件。 2.objdump常用的使用方法 使用格式: objdump [option] filename 使用举例: (1)objdump -f test 显示test的文件头信息 (2...
  • objdump,nm工具使用

    2019-07-11 16:31:53
    objdump使用 参数说明: objdump -sSdhx
  • gcc工具:Linux-objdump

    2018-07-07 14:10:47
    Linux-objdump是gcc工具,用来查看编译后目标文件的组成
  • 在嵌入式软件开发中,有时需要知道所生成的程序文件中的段信息以分析问题,或者需要查看c语言对应的汇编代码,此时,objdump工具就可以帮大忙了。obj——object dump:转储。 #include&lt;stdio.h&gt; #...
  • 熟悉binutils工具集 — objdump

    热门讨论 2010-04-28 13:18:42
    嵌入式开发熟的binutils工具集 — objdump
  • 3)objdump工具对文件进行反汇编。 前一段时间对Linux不熟,所以很多命令不知道。学习C时候需要偶尔看一下汇编用来理解。我喜欢用问题的形式来学习和总结。 1. 如何看一个程序代码变量的存储布局?   这个...
  • 反汇编工具objdump

    2018-02-25 15:42:18
    Usage: objdump Display information from object . At least one of the following switches must be given: -a, --archive-headers Display archive header information -f, --file-headers
  • Objdump

    2013-09-27 10:11:27
    gcc命令objdump用法 ...gcc命令之 objdump ...---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具---------- 以下3条命令足够那些喜欢探索目标文件与源代码之间的丝丝的关系的
  • 3)objdump工具对文件进行反汇编。 前一段时间对Linux不熟,所以很多命令不知道。学习C时候需要偶尔看一下汇编用来理解。我喜欢用问题的形式来学习和总结。 1. 如何看一个程序代码变量的存储布局?   这个问题在...
  • 反汇编工具objdump的简单使用

    千次阅读 2018-10-16 20:15:27
    objdump这个工具可以用来将二进制文件(例如linux下的ELF可执行文件)转成汇编代码让我们进行分析 linux系统里边可以直接使用这个命令 最常用的就是:objdump -d -M intel ./pwn1 -d 就是反汇编 -M inter 是指...
  • 1、反汇编的原理&为什么需要反汇编 ARM-linux-objdump -D led.elf > led_elf.dis objdump是gcc工具链中的反汇编工具,作用是由编译链接好的elf 格式的可执行程序,来反过来得到汇编源代码。 -D表示反汇编。 >...
  • objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 常用参数说明 -f 显示文件头信息 -D 反汇编所有section (-d反汇编特定section) -h 显示目标文件各个...
  • objdump是gcc工具链中的反汇编工具,作用是由编译链接好的elf(操作系统上的可执行文件)格式的可执行程序反过来得到汇编源代码。 -D(objdump 后面可以带不同参数实现不同功能)表示反 > 左边的是elf的可执行...
  • objdump是用查看目标文件或者可执行的目标文件的构成的工具。 2、参数 选项 详细选项 描述 -a --archive-headers 显示档案库的成员信息,类似 ls -l ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,036
精华内容 4,414
关键字:

objdump工具