代码之家  ›  专栏  ›  技术社区  ›  Rohit

在gdb中交互分解

gdb
  •  2
  • Rohit  · 技术社区  · 14 年前

    可以让gdb交互地反汇编机器代码吗?例如:

    (gdb)[反汇编命令]0x58 0xef 0x22

    如果我给出上述命令,gdb应该将十六进制值解释为机器代码,并返回反汇编。据我所知,这些命令只分解加载程序内存的一部分。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Employed Russian    14 年前

    GDB不能直接这样做,但你可以非常接近:

    cat > t.c <<EOF
    char buf[512];
    int main() { return 0; }
    EOF
    
    gcc -g t.c -o t
    
    gdb -q ./t
    Reading symbols from /tmp/t...done.
    (gdb) b main
    Breakpoint 1 at 0x8048352: file t.c, line 2.
    (gdb) r
    
    Breakpoint 1, main () at t.c:2
    2   int main() { return 0; }
    (gdb) set buf[0] = 0x58
    (gdb) set buf[1] = 0xef
    (gdb) set buf[2] = 0x22
    (gdb) x/i buf
       0x8049560 <buf>: pop    %eax
    (gdb) q