objdump反汇编用法示例

原创 2016年01月22日 18:49:37

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命令的使用

objdump命令的使用 objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍: objdump...
  • beyondioi
  • beyondioi
  • 2012年07月28日 12:33
  • 69346

objdump的使用

一、objdump的使用 objdump是gcc工具,用来查看编译后目标文件的组成。 常用命令: objdump -x obj:以某种分类信息的形式把目标文件的数据组成输出; objdum...
  • a2796749
  • a2796749
  • 2016年08月30日 00:26
  • 792

绝对强大的三个linux指令: ar, nm, objdump

前言 如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump, nm, ar。当然,本文不可能非常...
  • princess9
  • princess9
  • 2011年09月17日 16:18
  • 12168

反汇编工具objdump的使用简介

《朱老师物联网大讲堂》学习笔记 学习网站:www.zhulaoshi.org objdump是我们进行反汇编的工具 还记得Makefile文件吗? led.bin: start.o  arm-...
  • qq_18973645
  • qq_18973645
  • 2016年03月27日 20:31
  • 2852

gcc命令objdump用法----反汇编

gcc命令objdump用法 gcc命令之 objdump ---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具---------- 以下3条...
  • cwcwj3069
  • cwcwj3069
  • 2012年12月08日 18:07
  • 21271

objdump用法

objdump是个gcc的工具,用于解析二进制目标文件。 具体的用法可以man objdump查看。 下面简单介绍几个常用的用法,以kernel ko文件为例: -d 反汇编 ...
  • u014089131
  • u014089131
  • 2017年04月12日 17:28
  • 730

利用backtrace和objdump进行代码分析

http://blog.csdn.net/hanchaoman/article/details/5583457 利用backtrace和objdump进行分析:  重写的代码如下:  #in...
  • zzwdkxx
  • zzwdkxx
  • 2016年03月10日 16:34
  • 892

使用objdump查看动态库和静态库中具有哪些函数

我们在 Linux 下运行一个程序,有时会无法启动,报缺少某某库。这时需要查看可执行程序或者动态库中的符号表,动态库的依赖项, Linux 有现成的工具可用:objdump 。 objdump 是 g...
  • tao546377318
  • tao546377318
  • 2016年06月21日 15:32
  • 2080

Linux下objdump使用方法

linux下objdump命令常见用法举例: objdump -x obj:以某种分类信息的形式把目标文件的数据组成输出; objdump -t obj:输出目标文件的符号表() objdump -h...
  • freeplayer
  • freeplayer
  • 2015年04月19日 22:29
  • 3519

熟悉binutils工具集 — objdump

  • 2010年04月28日 13:18
  • 455KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:objdump反汇编用法示例
举报原因:
原因补充:

(最多只允许输入30个字)