2010-10-25 37 views
2

是否可以让gdb以交互方式拆卸机器代码。例如:在GDB中以交互方式拆卸

(GDB)[拆卸命令]将0x58 0xef为0x22

如果我给上述命令的gdb应该解释十六进制值作为机器代码和给我回来的拆卸。我知道的命令只是分解加载程序的一部分内存。

回答

2

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 
+0

+1创造力和精力,但我在寻找简单的东西。 – Rohit 2010-10-29 07:33:19